linux/drivers/net/wireless
Felix Fietkau 5882da02e9 ath9k_hw: fix stopping rx DMA during resets
During PHY errors, the MAC can sometimes fail to enter an idle state on older
hardware (before AR9380) after an rx stop has been requested.

This typically shows up in the kernel log with messages like these:

ath: Could not stop RX, we could be confusing the DMA engine when we start RX up
------------[ cut here ]------------
WARNING: at drivers/net/wireless/ath/ath9k/recv.c:504 ath_stoprecv+0xcc/0xf0 [ath9k]()
Call Trace:
[<8023f0e8>] dump_stack+0x8/0x34
[<80075050>] warn_slowpath_common+0x78/0xa4
[<80075094>] warn_slowpath_null+0x18/0x24
[<80d66d60>] ath_stoprecv+0xcc/0xf0 [ath9k]
[<80d642cc>] ath_set_channel+0xbc/0x270 [ath9k]
[<80d65254>] ath_radio_disable+0x4a4/0x7fc [ath9k]

When this happens, the state that the MAC enters is easy to identify and
does not result in bogus DMA traffic, however to ensure a working state
after a channel change, the hardware should still be reset.

This patch adds detection for this specific MAC state, after which the above
warnings completely disappear in my tests.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Cc: stable@kernel.org
Cc: Kyungwan Nam <Kyungwan.Nam@Atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-04-12 16:41:33 -04:00
..
ath ath9k_hw: fix stopping rx DMA during resets 2011-04-12 16:41:33 -04:00
b43 b43: allocate receive buffers big enough for max frame len + offset 2011-04-04 15:22:11 -04:00
b43legacy
hostap net: change to new flag variable 2011-03-17 14:05:35 +01:00
ipw2x00 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2011-03-16 16:29:25 -07:00
iwlegacy iwlegacy: make iwl3945 and iwl4965 select IWLWIFI_LEGACY 2011-04-11 13:56:07 -04:00
iwlwifi iwlagn: override 5300 EEPROM # of chains 2011-04-07 14:40:13 -04:00
iwmc3200wifi
libertas libertas: fix write past end of array in mesh_id_get() 2011-03-11 14:15:36 -05:00
libertas_tf
orinoco orinoco: Clear dangling pointer on hardware busy 2011-03-23 15:22:04 -04:00
p54 p54: Initialize extra_len in p54_tx_80211 2011-04-08 13:06:30 -04:00
prism54
rt2x00 rt2x00: fix cancelling uninitialized work 2011-04-04 15:22:13 -04:00
rtl818x rtl8187: Change rate-control feedback 2011-03-04 14:05:17 -05:00
rtlwifi rtlwifi: Fix some warnings/bugs 2011-04-04 15:22:13 -04:00
wl12xx wl12xx: fix potential buffer overflow in testmode nvs push 2011-04-04 15:22:12 -04:00
wl1251 drivers: Final irq namespace conversion 2011-03-29 14:48:19 +02:00
zd1211rw zd1211rw: reset rx idle timer from tasklet 2011-04-04 15:22:12 -04:00
adm8211.c
adm8211.h
airo.c
airo.h
airo_cs.c
at76c50x-usb.c
at76c50x-usb.h ieee80211: add IEEE80211_COUNTRY_STRING_LEN definition 2011-03-09 16:10:56 -05:00
atmel.c
atmel.h
atmel_cs.c
atmel_pci.c
Kconfig
mac80211_hwsim.c
Makefile
mwl8k.c mwl8k: do not free unrequested irq 2011-04-07 14:40:13 -04:00
ray_cs.c
ray_cs.h
rayctl.h
rndis_wlan.c
wl3501.h
wl3501_cs.c
zd1201.c
zd1201.h