diff options
author | sam <sam@FreeBSD.org> | 2009-07-21 19:23:34 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2009-07-21 19:23:34 +0000 |
commit | db513982617a6fea7af277fcf4247676e321c8c1 (patch) | |
tree | 45889c5236c746f38c91dc030e75a92b1ef5537d | |
parent | 109d6f3c87933f2d5603d091a6f77e034c23d09f (diff) | |
download | FreeBSD-src-db513982617a6fea7af277fcf4247676e321c8c1.zip FreeBSD-src-db513982617a6fea7af277fcf4247676e321c8c1.tar.gz |
Fix handling of AR_RX_FILTER_BSSID: write the shadow value for AR_MISC_MODE
so other register writes preserve the setting of AR_MISC_MODE_BSSID_MATCH_FORCE.
Reviewed by: rpaulo
Approved by: re (kib)
-rw-r--r-- | sys/dev/ath/ath_hal/ar5212/ar5212_recv.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c b/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c index f6d5b33..eee18b0 100644 --- a/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c +++ b/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c @@ -164,7 +164,7 @@ ar5212GetRxFilter(struct ath_hal *ah) if (phybits & (AR_PHY_ERR_OFDM_TIMING|AR_PHY_ERR_CCK_TIMING)) bits |= HAL_RX_FILTER_PHYERR; if (AH_PRIVATE(ah)->ah_caps.halBssidMatchSupport && - (OS_REG_READ(ah, AR_MISC_MODE) & AR_MISC_MODE_BSSID_MATCH_FORCE)) + (AH5212(ah)->ah_miscMode & AR_MISC_MODE_BSSID_MATCH_FORCE)) bits |= HAL_RX_FILTER_BSSID; return bits; } @@ -175,6 +175,7 @@ ar5212GetRxFilter(struct ath_hal *ah) void ar5212SetRxFilter(struct ath_hal *ah, uint32_t bits) { + struct ath_hal_5212 *ahp = AH5212(ah); uint32_t phybits; OS_REG_WRITE(ah, AR_RX_FILTER, @@ -194,12 +195,11 @@ ar5212SetRxFilter(struct ath_hal *ah, uint32_t bits) OS_REG_READ(ah, AR_RXCFG) &~ AR_RXCFG_ZLFDMA); } if (AH_PRIVATE(ah)->ah_caps.halBssidMatchSupport) { - uint32_t miscbits = OS_REG_READ(ah, AR_MISC_MODE); if (bits & HAL_RX_FILTER_BSSID) - miscbits |= AR_MISC_MODE_BSSID_MATCH_FORCE; + ahp->ah_miscMode |= AR_MISC_MODE_BSSID_MATCH_FORCE; else - miscbits &= ~AR_MISC_MODE_BSSID_MATCH_FORCE; - OS_REG_WRITE(ah, AR_MISC_MODE, miscbits); + ahp->ah_miscMode &= ~AR_MISC_MODE_BSSID_MATCH_FORCE; + OS_REG_WRITE(ah, AR_MISC_MODE, ahp->ah_miscMode); } } |