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,