• Sergey Ryazanov's avatar
    ath5k: fix spontaneus AR5312 freezes · cb3f9ca3
    Sergey Ryazanov authored
    commit 8bfae4f9 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 1846ac3d ("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: 1846ac3d ("ath5k: Use usleep_range where possible")
    Reported-by: default avatarChristophe Prevotaux <c.prevotaux@rural-networks.com>
    Tested-by: default avatarChristophe Prevotaux <c.prevotaux@rural-networks.com>
    Tested-by: default avatarEric Bree <ebree@nltinc.com>
    Signed-off-by: default avatarSergey Ryazanov <ryazanov.s.a@gmail.com>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
    cb3f9ca3
reset.c 37 KB