瀏覽代碼

qcacld-3.0: Use psoc handle to check for wmi service cap

wma_mgmt_nbuf_unmap_cb uses wma handle to check if wmi service
capability for mgmt is supported. If wma handle is freed before
call back is invoked it returns with out doing unmap of nbuf.
Instead of wma handle use psoc object handle which has the
information about wmi service capability support.

Change-Id: Icbdeb155be0fb5d056dd876faa2bd73f78cd9db7
CRs-Fixed: 2317785
Sravan Kumar Kairam 6 年之前
父節點
當前提交
0ebf453164
共有 1 個文件被更改,包括 10 次插入10 次删除
  1. 10 10
      core/wma/src/wma_mgmt.c

+ 10 - 10
core/wma/src/wma_mgmt.c

@@ -4377,19 +4377,19 @@ QDF_STATUS wma_mgmt_unified_cmd_send(struct wlan_objmgr_vdev *vdev,
 void wma_mgmt_nbuf_unmap_cb(struct wlan_objmgr_pdev *pdev,
 			    qdf_nbuf_t buf)
 {
-	tp_wma_handle wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
-
-	if (!wma_handle) {
-		WMA_LOGE("%s: wma handle is NULL", __func__);
-		return;
-	}
+	struct wlan_objmgr_psoc *psoc;
+	qdf_device_t dev;
 
 	if (!buf)
 		return;
 
-	if (wmi_service_enabled(wma_handle->wmi_handle,
-				wmi_service_mgmt_tx_wmi)) {
-		qdf_nbuf_unmap_single(wma_handle->qdf_dev, buf,
-				      QDF_DMA_TO_DEVICE);
+	psoc = wlan_pdev_get_psoc(pdev);
+	if (!psoc) {
+		WMA_LOGE("%s: Psoc handle NULL", __func__);
+		return;
 	}
+
+	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);
 }