• Wen Gong's avatar
    wifi: ath12k: change to initialize recovery variables earlier in ath12k_core_reset() · 41e7a399
    Wen Gong authored
    Sometimes device recovery fail with this operation.
    Run test command for many times:
    echo assert > /sys/kernel/debug/ath12k/wcn7850\ hw2.0_0000\:03\:00.0/simulate_fw_crash
    
    While recovery start, ath12k_core_post_reconfigure_recovery() will
    call ieee80211_restart_hw(), and the restart_work which queued by
    ieee80211_restart_hw() is running in another thread, it will call
    into ath12k_mac_op_start() and ath12k_mac_wait_reconfigure(), and
    the variables ab->recovery_start_count and ab->recovery_start is used
    in ath12k_mac_wait_reconfigure(), so ath12k need to initialize the
    variables before queue the restart_work, otherwise ath12k_mac_wait_reconfigure()
    maybe use the un-initialized variables. Change to initialize the 2
    variables earlier and then recovery process become correct.
    
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
    Signed-off-by: default avatarWen Gong <quic_wgong@quicinc.com>
    Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
    Link: https://lore.kernel.org/r/20230830060850.18881-1-quic_wgong@quicinc.com
    41e7a399
core.c 20.6 KB