ath9k: Fix TX99 support

The patch 300-ath9k-force-rx_clear-when-disabling-rx.patch broke TX99 support
in ath9k. Fix the patch by only applying rx_clear if TX99 mode is not used.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
This commit is contained in:
Helmut Schaa 2016-05-18 06:09:59 +02:00 committed by Felix Fietkau
parent 262cec2fb8
commit 21b04c623e

View file

@ -3,15 +3,16 @@ Date: Sun, 7 Jun 2015 13:53:35 +0200
Subject: [PATCH] ath9k: force rx_clear when disabling rx Subject: [PATCH] ath9k: force rx_clear when disabling rx
This makes stopping Rx more reliable and should reduce the frequency of This makes stopping Rx more reliable and should reduce the frequency of
Rx related DMA stop warnings Rx related DMA stop warnings. Don't use rx_clear in TX99 mode.
Cc: stable@vger.kernel.org Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
--- ---
--- a/drivers/net/wireless/ath/ath9k/mac.c --- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c +++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -677,13 +677,15 @@ void ath9k_hw_startpcureceive(struct ath @@ -677,13 +677,18 @@ void ath9k_hw_startpcureceive(struct ath
ath9k_ani_reset(ah, is_scanning); ath9k_ani_reset(ah, is_scanning);
@ -24,8 +25,11 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
void ath9k_hw_abortpcurecv(struct ath_hw *ah) void ath9k_hw_abortpcurecv(struct ath_hw *ah)
{ {
- REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_ABORT | AR_DIAG_RX_DIS); - REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_ABORT | AR_DIAG_RX_DIS);
+ REG_SET_BIT(ah, AR_DIAG_SW, + u32 reg = AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT;
+ AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT | AR_DIAG_FORCE_RX_CLEAR); +
+ if (!config_enabled(CPTCFG_ATH9K_TX99))
+ reg |= AR_DIAG_FORCE_RX_CLEAR;
+ REG_SET_BIT(ah, AR_DIAG_SW, reg);
ath9k_hw_disable_mib_counters(ah); ath9k_hw_disable_mib_counters(ah);
} }