• Wen Gong's avatar
    ath10k: add atomic protection for device recovery · 5dadbe4e
    Wen Gong authored
    When it has more than one restart_work queued meanwhile, the 2nd
    restart_work is very easy to break the 1st restart work and lead
    recovery fail.
    
    Add a flag to allow only one restart work running untill
    device successfully recovered.
    
    It already has flag ATH10K_FLAG_CRASH_FLUSH, but it can not use this
    flag again, because it is clear in ath10k_core_start. The function
    ieee80211_reconfig(called by ieee80211_restart_work) of mac80211 do
    many things and drv_start(call to ath10k_core_start) is 1st thing,
    when drv_start complete, it does not mean restart complete. So it
    add new flag and clear it in ath10k_reconfig_complete, because it
    is the last thing called from drv_reconfig_complete of function
    ieee80211_reconfig, after it, the restart process finished.
    
    Tested-on: QCA6174 hw3.2 SDIO WLAN.RMH.4.4.1-00049
    Signed-off-by: default avatarWen Gong <wgong@codeaurora.org>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/010101746bead6a0-d5e97c66-dedd-4b92-810e-c2e4840fafc9-000000@us-west-2.amazonses.com
    5dadbe4e
sdio.c 66.7 KB