summaryrefslogtreecommitdiffstats
path: root/sys/dev/ath/ath_hal
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/ath/ath_hal')
-rw-r--r--sys/dev/ath/ath_hal/ah.h12
-rw-r--r--sys/dev/ath/ath_hal/ah_internal.h9
-rw-r--r--sys/dev/ath/ath_hal/ar5210/ar5210_beacon.c4
-rw-r--r--sys/dev/ath/ath_hal/ar5211/ar5211_beacon.c4
-rw-r--r--sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c5
-rw-r--r--sys/dev/ath/ath_hal/ar5212/ar5212_beacon.c4
-rw-r--r--sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c6
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar2133.c2
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c4
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416_misc.c2
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c6
11 files changed, 32 insertions, 26 deletions
diff --git a/sys/dev/ath/ath_hal/ah.h b/sys/dev/ath/ath_hal/ah.h
index 7a01be3..f81e6aa 100644
--- a/sys/dev/ath/ath_hal/ah.h
+++ b/sys/dev/ath/ath_hal/ah.h
@@ -756,6 +756,17 @@ struct dfs_event {
};
typedef struct dfs_event HAL_DFS_EVENT;
+typedef struct
+{
+ int ah_debug; /* only used if AH_DEBUG is defined */
+ int ah_ar5416_biasadj; /* enable AR2133 radio specific bias fiddling */
+
+ /* NB: these are deprecated; they exist for now for compatibility */
+ int ah_dma_beacon_response_time;/* in TU's */
+ int ah_sw_beacon_response_time; /* in TU's */
+ int ah_additional_swba_backoff; /* in TU's */
+}HAL_OPS_CONFIG;
+
/*
* Hardware Access Layer (HAL) API.
*
@@ -784,6 +795,7 @@ struct ath_hal {
uint16_t *ah_eepromdata; /* eeprom buffer, if needed */
+ HAL_OPS_CONFIG ah_config;
const HAL_RATE_TABLE *__ahdecl(*ah_getRateTable)(struct ath_hal *,
u_int mode);
void __ahdecl(*ah_detach)(struct ath_hal*);
diff --git a/sys/dev/ath/ath_hal/ah_internal.h b/sys/dev/ath/ath_hal/ah_internal.h
index d66c9d8..91edc34 100644
--- a/sys/dev/ath/ath_hal/ah_internal.h
+++ b/sys/dev/ath/ath_hal/ah_internal.h
@@ -475,12 +475,6 @@ isBigEndian(void)
#define OS_A_REG_RMW_FIELD(_a, _r, _f, _v) \
do { OS_REG_WRITE(_a, _r, (OS_REG_READ(_a, _r) &~ (_f)) | (((_v) << _f##_S) & (_f))) ; OS_DELAY(100); } while (0)
-/* system-configurable parameters */
-extern int ath_hal_dma_beacon_response_time; /* in TU's */
-extern int ath_hal_sw_beacon_response_time; /* in TU's */
-extern int ath_hal_additional_swba_backoff; /* in TU's */
-extern int ath_hal_ar5416_biasadj; /* 1 or 0 */
-
/* wait for the register contents to have the specified value */
extern HAL_BOOL ath_hal_wait(struct ath_hal *, u_int reg,
uint32_t mask, uint32_t val);
@@ -504,11 +498,10 @@ extern void ath_hal_free(void *);
/* common debugging interfaces */
#ifdef AH_DEBUG
#include "ah_debug.h"
-extern int ath_hal_debug;
#define HALDEBUG(_ah, __m, ...) \
do { \
if ((__m) == HAL_DEBUG_UNMASKABLE || \
- (ath_hal_debug & (__m))) { \
+ ((_ah != AH_NULL) && (((struct ath_hal*)_ah)->ah_config.ah_debug & (__m)))) { \
DO_HALDEBUG((_ah), (__m), __VA_ARGS__); \
} \
} while(0);
diff --git a/sys/dev/ath/ath_hal/ar5210/ar5210_beacon.c b/sys/dev/ath/ath_hal/ar5210/ar5210_beacon.c
index dbd059e..a613c9c 100644
--- a/sys/dev/ath/ath_hal/ar5210/ar5210_beacon.c
+++ b/sys/dev/ath/ath_hal/ar5210/ar5210_beacon.c
@@ -56,9 +56,9 @@ ar5210BeaconInit(struct ath_hal *ah,
if (AH_PRIVATE(ah)->ah_opmode != HAL_M_STA) {
bt.bt_nextdba = (next_beacon -
- ath_hal_dma_beacon_response_time) << 3; /* 1/8 TU */
+ ah->ah_config.ah_dma_beacon_response_time) << 3; /* 1/8 TU */
bt.bt_nextswba = (next_beacon -
- ath_hal_sw_beacon_response_time) << 3; /* 1/8 TU */
+ ah->ah_config.ah_sw_beacon_response_time) << 3; /* 1/8 TU */
/*
* The SWBA interrupt is not used for beacons in ad hoc mode
* as we don't yet support ATIMs. So since the beacon never
diff --git a/sys/dev/ath/ath_hal/ar5211/ar5211_beacon.c b/sys/dev/ath/ath_hal/ar5211/ar5211_beacon.c
index 669b8f6..31e9c5d 100644
--- a/sys/dev/ath/ath_hal/ar5211/ar5211_beacon.c
+++ b/sys/dev/ath/ath_hal/ar5211/ar5211_beacon.c
@@ -71,9 +71,9 @@ ar5211BeaconInit(struct ath_hal *ah,
case HAL_M_IBSS:
case HAL_M_HOSTAP:
bt.bt_nextdba = (next_beacon -
- ath_hal_dma_beacon_response_time) << 3; /* 1/8 TU */
+ ah->ah_config.ah_dma_beacon_response_time) << 3; /* 1/8 TU */
bt.bt_nextswba = (next_beacon -
- ath_hal_sw_beacon_response_time) << 3; /* 1/8 TU */
+ ah->ah_config.ah_sw_beacon_response_time) << 3; /* 1/8 TU */
break;
}
/*
diff --git a/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c b/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c
index 3af314f..e1e7f73 100644
--- a/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c
+++ b/sys/dev/ath/ath_hal/ar5211/ar5211_xmit.c
@@ -345,8 +345,9 @@ ar5211ResetTxQueue(struct ath_hal *ah, u_int q)
| AR_Q_MISC_CBR_INCR_DIS0 | AR_Q_MISC_RDYTIME_EXP_POLICY);
value = (ahp->ah_beaconInterval
- - (ath_hal_sw_beacon_response_time - ath_hal_dma_beacon_response_time)
- - ath_hal_additional_swba_backoff) * 1024;
+ - (ah->ah_config.ah_sw_beacon_response_time
+ - ah->ah_config.ah_dma_beacon_response_time)
+ - ah->ah_config.ah_additional_swba_backoff) * 1024;
OS_REG_WRITE(ah, AR_QRDYTIMECFG(q), value | AR_Q_RDYTIMECFG_EN);
/* Configure DCU for CAB */
diff --git a/sys/dev/ath/ath_hal/ar5212/ar5212_beacon.c b/sys/dev/ath/ath_hal/ar5212/ar5212_beacon.c
index 538f8b8..6c1937a 100644
--- a/sys/dev/ath/ath_hal/ar5212/ar5212_beacon.c
+++ b/sys/dev/ath/ath_hal/ar5212/ar5212_beacon.c
@@ -84,9 +84,9 @@ ar5212BeaconInit(struct ath_hal *ah,
case HAL_M_HOSTAP:
case HAL_M_IBSS:
bt.bt_nextdba = (next_beacon -
- ath_hal_dma_beacon_response_time) << 3; /* 1/8 TU */
+ ah->ah_config.ah_dma_beacon_response_time) << 3; /* 1/8 TU */
bt.bt_nextswba = (next_beacon -
- ath_hal_sw_beacon_response_time) << 3; /* 1/8 TU */
+ ah->ah_config.ah_sw_beacon_response_time) << 3; /* 1/8 TU */
break;
}
/*
diff --git a/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c b/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c
index 4fbce31..3c6ddc0 100644
--- a/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c
+++ b/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c
@@ -416,9 +416,9 @@ ar5212ResetTxQueue(struct ath_hal *ah, u_int q)
* here solely for backwards compatibility.
*/
value = (ahp->ah_beaconInterval
- - (ath_hal_sw_beacon_response_time -
- ath_hal_dma_beacon_response_time)
- - ath_hal_additional_swba_backoff) * 1024;
+ - (ah->ah_config.ah_sw_beacon_response_time -
+ ah->ah_config.ah_dma_beacon_response_time)
+ - ah->ah_config.ah_additional_swba_backoff) * 1024;
OS_REG_WRITE(ah, AR_QRDYTIMECFG(q), value | AR_Q_RDYTIMECFG_ENA);
}
dmisc |= SM(AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL,
diff --git a/sys/dev/ath/ath_hal/ar5416/ar2133.c b/sys/dev/ath/ath_hal/ar5416/ar2133.c
index f92ea00..f25c108 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar2133.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar2133.c
@@ -185,7 +185,7 @@ ar2133SetChannel(struct ath_hal *ah, const struct ieee80211_channel *chan)
}
/* Workaround for hw bug - AR5416 specific */
- if (AR_SREV_OWL(ah) && ath_hal_ar5416_biasadj)
+ if (AR_SREV_OWL(ah) && ah->ah_config.ah_ar5416_biasadj)
ar2133ForceBias(ah, freq);
reg32 = (channelSel << 8) | (aModeRefSel << 2) | (bModeSynth << 1) |
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c b/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c
index 358a0ee..ee6c1eb 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416_beacon.c
@@ -93,9 +93,9 @@ ar5416BeaconInit(struct ath_hal *ah,
/* fall thru... */
case HAL_M_HOSTAP:
bt.bt_nextdba = (next_beacon -
- ath_hal_dma_beacon_response_time) << 3; /* 1/8 TU */
+ ah->ah_config.ah_dma_beacon_response_time) << 3; /* 1/8 TU */
bt.bt_nextswba = (next_beacon -
- ath_hal_sw_beacon_response_time) << 3; /* 1/8 TU */
+ ah->ah_config.ah_sw_beacon_response_time) << 3; /* 1/8 TU */
bt.bt_flags |= AR_TIMER_MODE_TBTT
| AR_TIMER_MODE_DBA
| AR_TIMER_MODE_SWBA;
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c b/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
index 2332656..6266b58 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
@@ -288,7 +288,7 @@ ar5416SetQuiet(struct ath_hal *ah, uint32_t period, uint32_t duration,
nextStart_us += OS_REG_READ(ah, AR_TSF_L32);
}
if (flag & HAL_QUIET_ADD_SWBA_RESP_TIME) {
- nextStart_us += ath_hal_sw_beacon_response_time;
+ nextStart_us += ah->ah_config.ah_sw_beacon_response_time;
}
OS_REG_RMW_FIELD(ah, AR_QUIET1, AR_QUIET1_QUIET_ACK_CTS_ENABLE, 1);
OS_REG_WRITE(ah, AR_QUIET2, SM(duration, AR_QUIET2_QUIET_DUR));
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c b/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
index 48956c5..20791e8 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c
@@ -1035,9 +1035,9 @@ ar5416ResetTxQueue(struct ath_hal *ah, u_int q)
* here solely for backwards compatibility.
*/
value = (ahp->ah_beaconInterval
- - (ath_hal_sw_beacon_response_time -
- ath_hal_dma_beacon_response_time)
- - ath_hal_additional_swba_backoff) * 1024;
+ - (ah->ah_config.ah_sw_beacon_response_time -
+ ah->ah_config.ah_dma_beacon_response_time)
+ - ah->ah_config.ah_additional_swba_backoff) * 1024;
OS_REG_WRITE(ah, AR_QRDYTIMECFG(q), value | AR_Q_RDYTIMECFG_ENA);
}
dmisc |= SM(AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL,
OpenPOWER on IntegriCloud