Ver Fonte

qcacld-3.0: Packing cdp_vdev_detach

Packing cleanup operation following cdp_vdev_detach.

Change-Id: I39ed8cf018df756e4a66fae833debfea25003cf0
CRs-Fixed: 2154859
Jingxiang Ge há 7 anos atrás
pai
commit
df9292a6b4
1 ficheiros alterados com 18 adições e 12 exclusões
  1. 18 12
      core/wma/src/wma_dev_if.c

+ 18 - 12
core/wma/src/wma_dev_if.c

@@ -556,6 +556,19 @@ static QDF_STATUS wma_self_peer_remove(tp_wma_handle wma_handle,
 	return QDF_STATUS_SUCCESS;
 }
 
+static void
+wma_cdp_vdev_detach(ol_txrx_soc_handle soc,
+			tp_wma_handle wma_handle,
+			uint8_t vdev_id)
+{
+	struct wma_txrx_node *iface = &wma_handle->interfaces[vdev_id];
+
+	cdp_vdev_detach(soc,
+		iface->handle, NULL, NULL);
+	iface->handle = NULL;
+	iface->is_vdev_valid = false;
+}
+
 static QDF_STATUS wma_handle_vdev_detach(tp_wma_handle wma_handle,
 			struct del_sta_self_params *del_sta_self_req_param,
 			uint8_t generate_rsp)
@@ -575,20 +588,12 @@ static QDF_STATUS wma_handle_vdev_detach(tp_wma_handle wma_handle,
 	status = wmi_unified_vdev_delete_send(wma_handle->wmi_handle, vdev_id);
 	if (QDF_IS_STATUS_ERROR(status)) {
 		WMA_LOGE("Unable to remove an interface");
-		cdp_vdev_detach(soc,
-			iface->handle, NULL, NULL);
-		iface->handle = NULL;
-		wma_handle->interfaces[vdev_id].is_vdev_valid = false;
 		goto out;
 	}
 
 	WMA_LOGD("vdev_id:%hu vdev_hdl:%pK", vdev_id, iface->handle);
 	if (!generate_rsp) {
 		WMA_LOGE("Call txrx detach w/o callback for vdev %d", vdev_id);
-		cdp_vdev_detach(soc,
-			iface->handle, NULL, NULL);
-		iface->handle = NULL;
-		wma_handle->interfaces[vdev_id].is_vdev_valid = false;
 		goto out;
 	}
 
@@ -609,10 +614,7 @@ static QDF_STATUS wma_handle_vdev_detach(tp_wma_handle wma_handle,
 				     WMA_FW_RSP_EVENT_WAKE_LOCK_DURATION);
 	}
 	WMA_LOGD("Call txrx detach with callback for vdev %d", vdev_id);
-	cdp_vdev_detach(soc,
-		iface->handle, NULL, NULL);
-	iface->handle = NULL;
-	wma_handle->interfaces[vdev_id].is_vdev_valid = false;
+	wma_cdp_vdev_detach(soc, wma_handle, vdev_id);
 
 	/*
 	 * send the response immediately if WMI_SERVICE_SYNC_DELETE_CMDS
@@ -623,6 +625,10 @@ static QDF_STATUS wma_handle_vdev_detach(tp_wma_handle wma_handle,
 		wma_vdev_detach_callback(iface);
 	return status;
 out:
+	WMA_LOGE("Call txrx detach callback for vdev %d, generate_rsp %u",
+		vdev_id, generate_rsp);
+	wma_cdp_vdev_detach(soc, wma_handle, vdev_id);
+
 	if (iface->addBssStaContext)
 		qdf_mem_free(iface->addBssStaContext);
 	if (iface->staKeyParams)