qcacld-3.0: Do not create vdev if already created
if a SEL_STA is being created then check if the session
on which it is being created is already active and deny
the request
Change-Id: I2ae4aa6034afdefb9ee61c28e4be2b0de6891a44
CRs-Fixed: 2084306
diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c
index 60f6d4b..4a12458 100644
--- a/core/wma/src/wma_dev_if.c
+++ b/core/wma/src/wma_dev_if.c
@@ -1926,10 +1926,19 @@
struct sir_set_tx_rx_aggregation_size tx_rx_aggregation_size;
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
+ WMA_LOGD("mac %pM, vdev_id %hu, type %d, sub_type %d, nss 2g %d, 5g %d",
+ self_sta_req->self_mac_addr, self_sta_req->session_id,
+ self_sta_req->type, self_sta_req->sub_type,
+ self_sta_req->nss_2g, self_sta_req->nss_5g);
if (NULL == mac) {
WMA_LOGE("%s: Failed to get mac", __func__);
goto end;
}
+ if (wma_handle->interfaces[self_sta_req->session_id].vdev_active) {
+ WMA_LOGE("%s: vdev %d already active",
+ __func__, self_sta_req->session_id);
+ goto end;
+ }
params.if_id = self_sta_req->session_id;
params.type = self_sta_req->type;
@@ -2050,8 +2059,6 @@
(self_sta_req->type == WMI_VDEV_TYPE_OCB) ||
(self_sta_req->type == WMI_VDEV_TYPE_MONITOR) ||
(self_sta_req->type == WMI_VDEV_TYPE_NDI)) {
- WMA_LOGD("Creating self peer %pM, vdev_id %hu",
- self_sta_req->self_mac_addr, self_sta_req->session_id);
status = wma_create_peer(wma_handle, txrx_pdev,
txrx_vdev_handle,
self_sta_req->self_mac_addr,