Răsfoiți Sursa

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 ani în urmă
părinte
comite
0ebf453164
1 a modificat fișierele cu 10 adăugiri și 10 ștergeri
  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);
 }