summaryrefslogtreecommitdiff
path: root/package
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-04-08 12:18:43 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-04-08 12:18:43 +0000
commitf53132ef54776212c6a1a670222a3cf9f0fb6dc0 (patch)
treea0e6fad787d7f9b1e1f01f4feb48313dc3e4fa92 /package
parent063b9eca012063120457a82eb3f80ee0bdc19ca9 (diff)
ath9k: improve the rx dma stop fix, add more debugging output in case the issue still occurs
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26532 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r--package/mac80211/patches/300-pending_work.patch45
-rw-r--r--package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch2
2 files changed, 26 insertions, 21 deletions
diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch
index cc2b1c2be1..cf4272d92b 100644
--- a/package/mac80211/patches/300-pending_work.patch
+++ b/package/mac80211/patches/300-pending_work.patch
@@ -276,32 +276,25 @@
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1244,6 +1244,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
- u32 saveDefAntenna;
- u32 macStaId1;
- u64 tsf = 0;
-+ bool reset = false;
- int i, r;
-
+@@ -1249,15 +1249,6 @@ int ath9k_hw_reset(struct ath_hw *ah, st
ah->txchainmask = common->tx_chainmask;
-@@ -1251,11 +1252,13 @@ int ath9k_hw_reset(struct ath_hw *ah, st
+ ah->rxchainmask = common->rx_chainmask;
- if ((common->bus_ops->ath_bus_type != ATH_USB) && !ah->chip_fullsleep) {
- ath9k_hw_abortpcurecv(ah);
+- if ((common->bus_ops->ath_bus_type != ATH_USB) && !ah->chip_fullsleep) {
+- ath9k_hw_abortpcurecv(ah);
- if (!ath9k_hw_stopdmarecv(ah)) {
-+ if (!ath9k_hw_stopdmarecv(ah, &reset)) {
- ath_dbg(common, ATH_DBG_XMIT,
- "Failed to stop receive dma\n");
- bChannelChange = false;
- }
-+ if (reset)
-+ bChannelChange = false;
- }
-
+- ath_dbg(common, ATH_DBG_XMIT,
+- "Failed to stop receive dma\n");
+- bChannelChange = false;
+- }
+- }
+-
if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE))
+ return -EIO;
+
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
-@@ -710,18 +710,36 @@ void ath9k_hw_abortpcurecv(struct ath_hw
+@@ -710,27 +710,46 @@ void ath9k_hw_abortpcurecv(struct ath_hw
}
EXPORT_SYMBOL(ath9k_hw_abortpcurecv);
@@ -339,6 +332,18 @@
udelay(AH_TIME_QUANTUM);
}
+ if (i == 0) {
+ ath_err(common,
+- "DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x\n",
++ "DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x DMADBG_7=0x%08x\n",
+ AH_RX_STOP_DMA_TIMEOUT / 1000,
+ REG_READ(ah, AR_CR),
+- REG_READ(ah, AR_DIAG_SW));
++ REG_READ(ah, AR_DIAG_SW),
++ REG_READ(ah, AR_DMADBG_7));
+ return false;
+ } else {
+ return true;
--- a/drivers/net/wireless/ath/ath9k/mac.h
+++ b/drivers/net/wireless/ath/ath9k/mac.h
@@ -695,7 +695,7 @@ bool ath9k_hw_setrxabort(struct ath_hw *
diff --git a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch
index 1c9c424507..c6a61224b5 100644
--- a/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch
+++ b/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1449,8 +1449,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
+@@ -1437,8 +1437,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
REG_WRITE(ah, AR_OBS, 8);
if (ah->config.rx_intr_mitigation) {