• Rakesh Pillai's avatar
    ath10k: Correct the DMA direction for management tx buffers · 6ba8b3b6
    Rakesh Pillai authored
    The management packets, send to firmware via WMI, are
    mapped using the direction DMA_TO_DEVICE. Currently in
    case of wmi cleanup, these buffers are being unmapped
    using an incorrect DMA direction. This can cause unwanted
    behavior when the host driver is handling a restart
    of the wlan firmware.
    
    We might see a trace like below
    
    [<ffffff8008098b18>] __dma_inv_area+0x28/0x58
    [<ffffff8001176734>] ath10k_wmi_mgmt_tx_clean_up_pending+0x60/0xb0 [ath10k_core]
    [<ffffff80088c7c50>] idr_for_each+0x78/0xe4
    [<ffffff80011766a4>] ath10k_wmi_detach+0x4c/0x7c [ath10k_core]
    [<ffffff8001163d7c>] ath10k_core_stop+0x58/0x68 [ath10k_core]
    [<ffffff800114fb74>] ath10k_halt+0xec/0x13c [ath10k_core]
    [<ffffff8001165110>] ath10k_core_restart+0x11c/0x1a8 [ath10k_core]
    [<ffffff80080c36bc>] process_one_work+0x16c/0x31c
    
    Fix the incorrect DMA direction during the wmi
    management tx buffer cleanup.
    
    Tested HW: WCN3990
    Tested FW: WLAN.HL.3.1-00784-QCAHLSWMTPLZ-1
    
    Fixes: dc405152 ("ath10k: handle mgmt tx completion event")
    Signed-off-by: default avatarRakesh Pillai <pillair@codeaurora.org>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    6ba8b3b6
wmi.c 310 KB