diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-04-08 12:18:43 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-04-08 12:18:43 +0000 |
commit | 5505e8f61e586902dfff2b6c5f97de054faaadfe (patch) | |
tree | 554bf0d7c934b4e58cde6e1146dd302479bfc8ba /package/mac80211/patches/300-pending_work.patch | |
parent | 070c2ba1f4fa19310ebed5dbc3b7b246d9337b7e (diff) | |
download | upstream-5505e8f61e586902dfff2b6c5f97de054faaadfe.tar.gz upstream-5505e8f61e586902dfff2b6c5f97de054faaadfe.tar.bz2 upstream-5505e8f61e586902dfff2b6c5f97de054faaadfe.zip |
ath9k: improve the rx dma stop fix, add more debugging output in case the issue still occurs
SVN-Revision: 26532
Diffstat (limited to 'package/mac80211/patches/300-pending_work.patch')
-rw-r--r-- | package/mac80211/patches/300-pending_work.patch | 45 |
1 files changed, 25 insertions, 20 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 * |