瀏覽代碼

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
Jianmin Zhu 5 年之前
父節點
當前提交
7a78877964
共有 1 個文件被更改,包括 1 次插入2 次删除
  1. 1 2
      core/wma/src/wma_mgmt.c

+ 1 - 2
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,