diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-02-25 19:53:31 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-02-25 19:53:31 +0000 |
commit | 8e807a20944c0b908230627839d2a546cd6e23e9 (patch) | |
tree | 804f3bd0c6671ed2e4b4e2a4a317b1efa7b102ab /package/mac80211/patches/300-pending_work.patch | |
parent | 834755da583480512687b8b818985e8e71951795 (diff) |
ath9k: issue a cold reset after failures or after bringing the chip out of full sleep - fixes many kinds of DMA issues
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35785 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/patches/300-pending_work.patch')
-rw-r--r-- | package/mac80211/patches/300-pending_work.patch | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 11c9a5af4..51da3cf84 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -499,3 +499,16 @@ ret = 0; } rcu_read_unlock(); +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -1463,7 +1463,9 @@ static bool ath9k_hw_chip_reset(struct a + reset_type = ATH9K_RESET_POWER_ON; + else + reset_type = ATH9K_RESET_COLD; +- } ++ } else if (ah->chip_fullsleep || REG_READ(ah, AR_Q_TXE) || ++ (REG_READ(ah, AR_CR) & AR_CR_RXE)) ++ reset_type = ATH9K_RESET_COLD; + + if (!ath9k_hw_set_reset_reg(ah, reset_type)) + return false; |