kernel-ark/drivers/net/wireless/ath/ath9k
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
..
ahb.c wireless:ath: use resource_size() help function 2011-03-07 13:51:04 -05:00
ani.c
ani.h
ar5008_initvals.h
ar5008_phy.c
ar9001_initvals.h
ar9002_calib.c
ar9002_hw.c
ar9002_initvals.h
ar9002_mac.c
ar9002_phy.c
ar9002_phy.h
ar9003_2p2_initvals.h
ar9003_calib.c
ar9003_eeprom.c
ar9003_eeprom.h
ar9003_hw.c ath9k_hw: Fix pcie_serdes setting for AR9485 1.1 version. 2011-02-25 15:33:39 -05:00
ar9003_mac.c
ar9003_mac.h
ar9003_paprd.c
ar9003_phy.c ath9k_hw: Read noise floor only for available chains for AR9003 2011-03-04 14:05:17 -05:00
ar9003_phy.h
ar9485_initvals.h ath9k_hw: Improve idle power consumption for AR9485. 2011-03-11 14:15:36 -05:00
ath9k.h ath9k: fix the .flush driver op implementation 2011-03-14 14:46:58 -04:00
beacon.c ath9k: improve reliability of beacon transmission and stuck beacon handling 2011-03-14 14:46:58 -04:00
btcoex.c
btcoex.h
calib.c ath9k_hw: Increase the wait count for nf load. 2011-03-11 14:15:36 -05:00
calib.h
common.c
common.h
debug.c ath9k: Fix txq memory address printing in debugfs. 2011-03-04 14:06:49 -05:00
debug.h
eeprom_4k.c
eeprom_9287.c
eeprom_def.c
eeprom.c
eeprom.h
gpio.c ath9k: Fix incorrect GPIO LED pin for AR9485 2011-02-28 14:06:55 -05:00
hif_usb.c Merge branch 'for-davem' of ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2011-03-04 12:48:25 -08:00
hif_usb.h
htc_drv_beacon.c ath9k_htc: Handle BSSID/AID for multiple interfaces 2011-03-01 13:48:21 -05:00
htc_drv_gpio.c
htc_drv_init.c ath9k_htc: Add debug code to print endpoint mapping 2011-02-23 16:25:28 -05:00
htc_drv_main.c ath9k_htc: Handle BSSID/AID for multiple interfaces 2011-03-01 13:48:21 -05:00
htc_drv_txrx.c mac80211: rename RX_FLAG_TSFT 2011-02-23 16:25:29 -05:00
htc_hst.c
htc_hst.h
htc.h ath9k_htc: Handle BSSID/AID for multiple interfaces 2011-03-01 13:48:21 -05:00
hw-ops.h
hw.c ath9k_hw: fix stopping rx DMA during resets 2011-04-12 16:41:33 -04:00
hw.h ath9k_hw: fix REG_SET_BIT and REG_CLR_BIT for multiple bits 2011-03-14 14:46:58 -04:00
init.c ath9k: use generic mac80211 LED blinking code 2011-02-28 14:06:55 -05:00
Kconfig
mac.c ath9k_hw: fix stopping rx DMA during resets 2011-04-12 16:41:33 -04:00
mac.h ath9k_hw: fix stopping rx DMA during resets 2011-04-12 16:41:33 -04:00
main.c ath9k: fix missing ath9k_ps_wakeup/ath9k_ps_restore calls 2011-04-08 13:06:30 -04:00
Makefile
pci.c
phy.h
rc.c ath9k: Fix kernel panic caused by invalid rate index access. 2011-03-23 15:22:04 -04:00
rc.h
recv.c ath9k_hw: fix stopping rx DMA during resets 2011-04-12 16:41:33 -04:00
reg.h ath9k_htc: Handle storage devices 2011-02-23 16:25:25 -05:00
wmi.c ath9k_htc: Configure beacon timers in AP mode 2011-02-23 16:25:28 -05:00
wmi.h
xmit.c ath9k: Fix kernel panic in AR2427 2011-03-21 15:19:49 -04:00