Browse Source

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 years ago
parent
commit
0ebf453164
1 changed files with 10 additions and 10 deletions
  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);
 }