diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-04-08 12:18:43 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-04-08 12:18:43 +0000 |
commit | f53132ef54776212c6a1a670222a3cf9f0fb6dc0 (patch) | |
tree | a0e6fad787d7f9b1e1f01f4feb48313dc3e4fa92 /package | |
parent | 063b9eca012063120457a82eb3f80ee0bdc19ca9 (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.patch | 45 | ||||
-rw-r--r-- | package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch | 2 |
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) { |