From 7a78877964788c51ed01ec10c67ec298aa6ec125 Mon Sep 17 00:00:00 2001 From: Jianmin Zhu Date: Fri, 3 Apr 2020 20:47:20 +0800 Subject: [PATCH] qcacld-3.0: Mgmt frame buffer free before dma unmap on Rome Rome doesn't support service WMI_SERVICE_MGMT_TX_WMI, mgmt frames and their tx complete are sent by HTT instead of WMI. WLAN_SOC_CEXT_WMI_MGMT_REF cap isn't set too. When delete vdev, need drain all mgmt packets of the vdev, if there are mgmt frames waiting tx complete, need complete them and free nbuf forcely, but dma unmap is missed on Rome for WLAN_SOC_CEXT_WMI_MGMT_REF not set, assert will happen when free nbuf. Fix: Don't check WLAN_SOC_CEXT_WMI_MGMT_REF when drain mgmt frames, then dma unmap will happen before nbuf free on Rome. Change-Id: I27c46c71cbc35df371d9852860da0cb9f08c826f CRs-Fixed: 2650229 --- core/wma/src/wma_mgmt.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/wma/src/wma_mgmt.c b/core/wma/src/wma_mgmt.c index 06081ef0b89f..ecead2d3b72a 100644 --- a/core/wma/src/wma_mgmt.c +++ b/core/wma/src/wma_mgmt.c @@ -4031,8 +4031,7 @@ void wma_mgmt_nbuf_unmap_cb(struct wlan_objmgr_pdev *pdev, } dev = wlan_psoc_get_qdf_dev(psoc); - if (wlan_psoc_nif_fw_ext_cap_get(psoc, WLAN_SOC_CEXT_WMI_MGMT_REF)) - qdf_nbuf_unmap_single(dev, buf, QDF_DMA_TO_DEVICE); + qdf_nbuf_unmap_single(dev, buf, QDF_DMA_TO_DEVICE); } QDF_STATUS wma_mgmt_frame_fill_peer_cb(struct wlan_objmgr_peer *peer,