• Wen Gong's avatar
    ath11k: add wait operation for tx management packets for flush from mac80211 · dddaa64d
    Wen Gong authored
    In ath11k, tx of management packet is doing in a work queue. Sometimes
    the workqueue does not finish tx immediately, then it lead after the next
    step of vdev delete finished, it start to send the management packet to
    firmware and lead firmware crash.
    
    ieee80211_set_disassoc() have logic of ieee80211_flush_queues() after
    it send_deauth_disassoc() to ath11k, its purpose is make sure the
    deauth was actually sent, so it need to change ath11k to match the
    purpose of mac80211.
    
    To address these issue wait for tx mgmt as well as tx data packets.
    
    dmesg log of connect/disconnect to AP:
    [  307.522226] wls1: authenticate with 62:66:e4:e9:6a:a9
    [  307.586565] wls1: send auth to 62:66:e4:e9:6a:a9 (try 1/3)
    [  307.586581] ath11k_pci 0000:05:00.0: mac tx mgmt frame, buf id 0
    [  307.586922] ath11k_pci 0000:05:00.0: mac tx mgmt frame, vdev_id 0
    [  307.590179] ath11k_pci 0000:05:00.0: wmi mgmt tx comp pending 0 desc id 0
    [  307.590181] ath11k_pci 0000:05:00.0: mgmt tx compl ev pdev_id 2, desc_id 0, status 0
    [  307.598699] wls1: authenticated
    [  307.599483] wls1: associate with 62:66:e4:e9:6a:a9 (try 1/3)
    [  307.599506] ath11k_pci 0000:05:00.0: mac tx mgmt frame, buf id 0
    [  307.599519] ath11k_pci 0000:05:00.0: mac tx mgmt frame, vdev_id 0
    [  307.603059] ath11k_pci 0000:05:00.0: wmi mgmt tx comp pending 0 desc id 0
    [  307.603063] ath11k_pci 0000:05:00.0: mgmt tx compl ev pdev_id 2, desc_id 0, status 0
    [  307.637105] wls1: associated
    [  317.365239] wls1: deauthenticating from 62:66:e4:e9:6a:a9 by local choice (Reason: 3=DEAUTH_LEAVING)
    [  317.368104] ath11k_pci 0000:05:00.0: mac tx mgmt frame, buf id 0
    [  317.372622] ath11k_pci 0000:05:00.0: mac tx mgmt frame, vdev_id 0
    [  317.378320] ath11k_pci 0000:05:00.0: wmi mgmt tx comp pending 0 desc id 0
    [  317.378330] ath11k_pci 0000:05:00.0: mgmt tx compl ev pdev_id 2, desc_id 0, status 0
    [  317.378359] ath11k_pci 0000:05:00.0: mac mgmt tx flush mgmt pending 0
    [  317.421066] ath11k_pci 0000:05:00.0: mac mgmt tx flush mgmt pending 0
    [  317.421427] ath11k_pci 0000:05:00.0: mac remove interface (vdev 0)
    
    Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-01230-QCAHSTSWPLZ_V2_TO_X86-1
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
    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/20211202063705.14321-1-quic_wgong@quicinc.com
    dddaa64d
core.h 24.3 KB