linux/drivers/net/wireless/ath/ath5k
Sergey Ryazanov 8bfae4f993 ath5k: fix spontaneus AR5312 freezes
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>
2015-02-06 08:42:32 +02:00
..
ahb.c ath5k: drop owner assignment from platform_drivers 2015-01-06 20:40:27 +02:00
ani.c ath: Add and use pr_fmt, convert printks to pr_<level> 2012-04-10 14:52:13 -04:00
ani.h ath5k: Cleanups v2 + add kerneldoc on all hw functions 2011-11-28 14:44:16 -05:00
ath5k.h ath5k: update dependencies 2014-11-24 07:45:29 +01:00
attach.c ath5k: remove redundant null check before kfree() 2014-08-28 14:41:57 -04:00
base.c ath5k: update dependencies 2014-11-24 07:45:29 +01:00
base.h ath5k: enable support for 5 MHz and 10 MHz channels 2013-08-16 14:17:50 -04:00
caps.c ath5k: MRR support and 2GHz radio override belong in ah_capabilities 2011-11-28 14:44:19 -05:00
debug.c Merge tag 'master-2014-10-02' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2014-10-05 21:34:39 -04:00
debug.h
desc.c ath5k: Remove extraneous statements from ath5k_hw_proc_4word_tx_status and ath5k_hw_proc_2word_status. 2012-04-11 16:23:58 -04:00
desc.h ath5k: Cleanups v2 + add kerneldoc on all hw functions 2011-11-28 14:44:16 -05:00
dma.c ath5k: Reset Tx interrupt bits also on PISR 2013-12-11 10:56:22 -05:00
eeprom.c ath5k: cleanup channel to eprom_mode function 2013-03-06 16:24:27 -05:00
eeprom.h ath5k: cleanup channel to eprom_mode function 2013-03-06 16:24:27 -05:00
gpio.c ath5k: Cleanups v2 + add kerneldoc on all hw functions 2011-11-28 14:44:16 -05:00
initvals.c ath: Add and use pr_fmt, convert printks to pr_<level> 2012-04-10 14:52:13 -04:00
Kconfig ath5k: update dependencies 2014-11-24 07:45:29 +01:00
led.c ath5k: update dependencies 2014-11-24 07:45:29 +01:00
mac80211-ops.c cfg80211: remove "channel" from survey names 2015-01-08 15:27:52 +01:00
Makefile ath5k: revert AHB bus support removing 2014-11-24 07:45:28 +01:00
pci.c PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
pcu.c ath5k: document a fall-through case in ath5k_hw_set_opmode 2015-01-23 21:17:26 +02:00
phy.c ath5k: Fix AR5K_PHY_TXPOWER_RATE_MAX register value setting. 2014-04-30 12:13:07 -04:00
qcu.c ath5k: fix hardware queue index assignment 2014-12-01 15:57:22 -05:00
reg.h
reset.c ath5k: fix spontaneus AR5312 freezes 2015-02-06 08:42:32 +02:00
rfbuffer.h ath5k: Cleanups v2 + add kerneldoc on all hw functions 2011-11-28 14:44:16 -05:00
rfgain.h ath5k: Cleanups v2 + add kerneldoc on all hw functions 2011-11-28 14:44:16 -05:00
rfkill.c
sysfs.c ath: Add and use pr_fmt, convert printks to pr_<level> 2012-04-10 14:52:13 -04:00
trace.h ath5k: use more idiomatic tracing include style 2013-04-12 15:29:14 -04:00