summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2011-05-06 15:33:56 +0000
committeradrian <adrian@FreeBSD.org>2011-05-06 15:33:56 +0000
commit12286510b6ac55429024fb44201672e47985f264 (patch)
treea3106162990cc2107f8381c2fab663b6710dd6c2
parentf56d17ac15c534a36a56fcb317305feeae0db736 (diff)
downloadFreeBSD-src-12286510b6ac55429024fb44201672e47985f264.zip
FreeBSD-src-12286510b6ac55429024fb44201672e47985f264.tar.gz
Add a function which enables or disables RX RIFS searching, and migrate
the code which does this into it.
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416.h1
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416_misc.c19
-rw-r--r--sys/dev/ath/ath_hal/ar5416/ar5416_reset.c7
3 files changed, 22 insertions, 5 deletions
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416.h b/sys/dev/ath/ath_hal/ar5416/ar5416.h
index 38a346e..3738aaf 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416.h
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416.h
@@ -199,6 +199,7 @@ extern HAL_STATUS ar5416GetCapability(struct ath_hal *ah,
extern HAL_BOOL ar5416GetDiagState(struct ath_hal *ah, int request,
const void *args, uint32_t argsize,
void **result, uint32_t *resultsize);
+extern HAL_BOOL ar5416SetRifsDelay(struct ath_hal *ah, HAL_BOOL enable);
extern HAL_BOOL ar5416SetPowerMode(struct ath_hal *ah, HAL_POWER_MODE mode,
int setChip);
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c b/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
index aa31824..087bf92 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
@@ -368,6 +368,25 @@ typedef struct {
uint8_t qcu_complete_state;
} hal_mac_hang_check_t;
+HAL_BOOL
+ar5416SetRifsDelay(struct ath_hal *ah, HAL_BOOL enable)
+{
+ uint32_t val;
+
+ /* Only support disabling RIFS delay for now */
+ HALASSERT(enable == AH_FALSE);
+
+ if (enable == AH_TRUE)
+ return AH_FALSE;
+
+ /* Change RIFS init delay to 0 */
+ val = OS_REG_READ(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS);
+ val &= ~AR_PHY_RIFS_INIT_DELAY;
+ OS_REG_WRITE(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS, val);
+
+ return AH_TRUE;
+}
+
static HAL_BOOL
ar5416CompareDbgHang(struct ath_hal *ah, const mac_dbg_regs_t *regs,
const hal_mac_hang_check_t *check)
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c b/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
index 4917caa..12f30f1 100644
--- a/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
+++ b/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
@@ -2520,11 +2520,8 @@ ar5416OverrideIni(struct ath_hal *ah, const struct ieee80211_channel *chan)
* Disable RIFS search on some chips to avoid baseband
* hang issues.
*/
- if (AR_SREV_HOWL(ah) || AR_SREV_SOWL(ah)) {
- val = OS_REG_READ(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS);
- val &= ~AR_PHY_RIFS_INIT_DELAY;
- OS_REG_WRITE(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS, val);
- }
+ if (AR_SREV_HOWL(ah) || AR_SREV_SOWL(ah))
+ (void) ar5416SetRifsDelay(ah, AH_FALSE);
}
struct ini {
OpenPOWER on IntegriCloud