linux/drivers/net/wireless/ath
Sergey Ryazanov 032f0e4fcc ath5k: fix spontaneus AR5312 freezes
commit 8bfae4f993 upstream.

Sometimes while CPU have some load and ath5k doing the wireless
interface reset the whole WiSoC completely freezes. Set of tests shows
that using atomic delay function while we wait interface reset helps to
avoid such freezes.

The easiest way to reproduce this issue: create a station interface,
start continous scan with wpa_supplicant and load CPU by something. Or
just create multiple station interfaces and put them all in continous
scan.

This patch partially reverts the commit 1846ac3dbe ("ath5k: Use
usleep_range where possible"), which replaces initial udelay()
by usleep_range().

I do not know actual source of this issue, but all looks like that HW
freeze is caused by transaction on internal SoC bus, while wireless
block is in reset state.

Also I should note that I do not know how many chips are affected, but I
did not see this issue with chips, other than AR5312.

CC: Jiri Slaby <jirislaby@gmail.com>
CC: Nick Kossifidis <mickflemm@gmail.com>
CC: Luis R. Rodriguez <mcgrof@do-not-panic.com>
Fixes: 1846ac3dbe ("ath5k: Use usleep_range where possible")
Reported-by: Christophe Prevotaux <c.prevotaux@rural-networks.com>
Tested-by: Christophe Prevotaux <c.prevotaux@rural-networks.com>
Tested-by: Eric Bree <ebree@nltinc.com>
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2015-03-18 15:26:09 +00:00
..
ar5523 mac80211: add vif to flush call 2014-04-09 10:55:29 +02:00
ath5k ath5k: fix spontaneus AR5312 freezes 2015-03-18 15:26:09 +00:00
ath6kl Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-06-12 14:27:40 -07:00
ath9k ath9k: fix BE/BK queue order 2015-01-12 15:44:09 +00:00
ath10k Merge branch 'ath-current' of git://github.com/kvalo/ath 2014-06-26 11:39:36 -04:00
carl9170 carl9170: fix sending URBs with wrong type when using full-speed 2014-10-05 13:40:50 -07:00
wcn36xx wcn36xx: Use kmemdup instead of kmalloc + memcpy 2014-05-29 13:08:11 -04:00
wil6210 wil6210: improve debug for WMI receive 2014-05-30 13:49:34 -04:00
ath.h ath9k: move sc_flags to ath_common 2014-03-17 13:13:06 -04:00
debug.c drivers/net: Add export.h to files using EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:31:08 -04:00
dfs_pattern_detector.c ath: add JP DFS pattern detector 2014-05-16 14:26:53 -04:00
dfs_pattern_detector.h ath9k/ath: move dfs pattern detector to ath 2013-10-18 14:03:54 -04:00
dfs_pri_detector.c ath9k/ath: move dfs pattern detector to ath 2013-10-18 14:03:54 -04:00
dfs_pri_detector.h ath9k/ath: move dfs pattern detector to ath 2013-10-18 14:03:54 -04:00
hw.c ath: update hardware mac address with bssid mask 2013-04-22 15:20:15 -04:00
Kconfig ath: add support for proper dynamic regulatory hints 2013-10-18 14:04:41 -04:00
key.c ath: Let user know which keycache method is complaining. 2013-04-08 15:28:37 -04:00
main.c ath: add common function ath_is_mybeacon 2014-01-16 14:55:44 -05:00
Makefile ath9k/ath: move dfs pattern detector to ath 2013-10-18 14:03:54 -04:00
reg.h ath: update hardware mac address with bssid mask 2013-04-22 15:20:15 -04:00
regd.c ath: remove camel case from struct reg_dmn_pair_mapping 2014-02-14 13:20:32 +02:00
regd.h wireless: make the reg_notifier() void 2013-01-14 11:32:44 +01:00
regd_common.h ath: fix spelling of Grenada 2011-08-08 16:04:13 -04:00