diff options
author | Vasanthakumar Thiagarajan <vasanth@atheros.com> | 2009-09-17 07:56:14 +0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-09-23 19:35:51 +0400 |
commit | 204d794086f26a7b191d9a9c3483af8b81362b16 (patch) | |
tree | 797644f85b2cb78d6681b68479a102ccfd0ad88b /drivers/net/wireless | |
parent | d8caa83967d62c05f406d34abaaf2e1baa172c6c (diff) | |
download | linux-204d794086f26a7b191d9a9c3483af8b81362b16.tar.xz |
ath9k: Fix rx data corruption
Setting bit 20 and 25 of 0x8344 can cause occasional rx data
corruption, clear them to fix this issue.
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index af5bb50a2e8b..4731ad2d9996 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c @@ -1273,6 +1273,15 @@ static void ath9k_hw_override_ini(struct ath_hw *ah, */ REG_SET_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT)); + if (AR_SREV_9280_10_OR_LATER(ah)) { + val = REG_READ(ah, AR_PCU_MISC_MODE2) & + (~AR_PCU_MISC_MODE2_HWWAR1); + + if (AR_SREV_9287_10_OR_LATER(ah)) + val = val & (~AR_PCU_MISC_MODE2_HWWAR2); + + REG_WRITE(ah, AR_PCU_MISC_MODE2, val); + } if (!AR_SREV_5416_20_OR_LATER(ah) || AR_SREV_9280_10_OR_LATER(ah)) |