Преглед изворни кода

qcacmn: Move deletion of datapath vdev to vdev destroy handler

Move dp vdev detach flow to vdev destroy handler from vdev delete
sequence.

Change-Id: I727d70e77f8e913ca732b6ae56c60049161547de
Akshay Kosigi пре 6 година
родитељ
комит
ce7a81cbed

+ 13 - 0
umac/mlme/mlme_objmgr/dispatcher/src/wlan_vdev_mlme_main.c

@@ -30,6 +30,7 @@
 #include "wlan_vdev_mlme_api.h"
 #include "wlan_serialization_api.h"
 #include "wlan_utility.h"
+#include <cdp_txrx_cmn.h>
 
 static QDF_STATUS mlme_vdev_obj_create_handler(struct wlan_objmgr_vdev *vdev,
 					       void *arg)
@@ -106,6 +107,9 @@ static QDF_STATUS mlme_vdev_obj_destroy_handler(struct wlan_objmgr_vdev *vdev,
 						void *arg)
 {
 	struct vdev_mlme_obj *vdev_mlme;
+	struct wlan_objmgr_psoc *psoc;
+	struct cdp_soc_t *soc_txrx_handle;
+	struct cdp_vdev *vdev_txrx_handle;
 
 	if (!vdev) {
 		mlme_err(" VDEV is NULL");
@@ -118,6 +122,15 @@ static QDF_STATUS mlme_vdev_obj_destroy_handler(struct wlan_objmgr_vdev *vdev,
 		return QDF_STATUS_SUCCESS;
 	}
 
+	psoc = wlan_vdev_get_psoc(vdev);
+	soc_txrx_handle = (struct cdp_soc_t *)wlan_psoc_get_dp_handle(psoc);
+	vdev_txrx_handle = wlan_vdev_get_dp_handle(vdev);
+	if (soc_txrx_handle && vdev_txrx_handle) {
+		wlan_vdev_set_dp_handle(vdev, NULL);
+		cdp_vdev_detach(soc_txrx_handle, vdev_txrx_handle,
+				NULL, NULL);
+	}
+
 	mlme_vdev_sm_destroy(vdev_mlme);
 
 	mlme_vdev_ops_ext_hdl_destroy(vdev_mlme);

+ 0 - 12
umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_tgt_if_tx_api.c

@@ -202,9 +202,6 @@ QDF_STATUS tgt_vdev_mgr_delete_send(
 	QDF_STATUS status;
 	struct wlan_lmac_if_mlme_tx_ops *txops;
 	struct wlan_objmgr_vdev *vdev;
-	struct wlan_objmgr_psoc *psoc;
-	ol_txrx_soc_handle soc_txrx_handle;
-	struct cdp_vdev *vdev_txrx_handle;
 	uint8_t vdev_id;
 
 	if (!param) {
@@ -220,15 +217,6 @@ QDF_STATUS tgt_vdev_mgr_delete_send(
 		return QDF_STATUS_E_INVAL;
 	}
 
-	psoc = wlan_vdev_get_psoc(vdev);
-	soc_txrx_handle = wlan_psoc_get_dp_handle(psoc);
-	vdev_txrx_handle = wlan_vdev_get_dp_handle(vdev);
-	if (soc_txrx_handle && vdev_txrx_handle) {
-		wlan_vdev_set_dp_handle(vdev, NULL);
-		cdp_vdev_detach(soc_txrx_handle, vdev_txrx_handle,
-				NULL, NULL);
-	}
-
 	status = txops->vdev_delete_send(vdev, param);
 	if (QDF_IS_STATUS_ERROR(status))
 		mlme_err("VDEV_%d: Tx Ops Error : %d", vdev_id, status);