Merge "qcacld-3.0: Add vdev validity check before sending vdev set param" into wlan-cld3.driver.lnx.2.0-dev
diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c
index 98b3a8b..36bee95 100644
--- a/core/wma/src/wma_dev_if.c
+++ b/core/wma/src/wma_dev_if.c
@@ -1113,6 +1113,16 @@
 	return 0;
 }
 
+static bool wma_is_vdev_valid(uint32_t vdev_id)
+{
+	tp_wma_handle wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
+
+	if (NULL == wma_handle)
+		return false;
+
+	return wma_handle->interfaces[vdev_id].vdev_active;
+}
+
 /**
  * wma_vdev_set_param() - set per vdev params in fw
  * @wmi_handle: wmi handle
@@ -1128,6 +1138,13 @@
 {
 	struct vdev_set_params param = {0};
 
+	if (!wma_is_vdev_valid(if_id)) {
+		WMA_LOGE(FL("vdev_id: %d is not active reject the req: param id %d val %d"),
+			if_id, param_id, param_value);
+		QDF_ASSERT(0);
+		return QDF_STATUS_E_INVAL;
+	}
+
 	param.if_id = if_id;
 	param.param_id = param_id;
 	param.param_value = param_value;
diff --git a/core/wma/src/wma_nan_datapath.c b/core/wma/src/wma_nan_datapath.c
index 4eca017..0bd98b0 100644
--- a/core/wma/src/wma_nan_datapath.c
+++ b/core/wma/src/wma_nan_datapath.c
@@ -973,10 +973,9 @@
 	struct wma_target_req *msg;
 	uint8_t vdev_id, peer_id;
 	QDF_STATUS status;
-	struct vdev_set_params param = {0};
 	void *soc = cds_get_context(QDF_MODULE_ID_SOC);
 
-	WMA_LOGI("%s: enter", __func__);
+	WMA_LOGD("%s: enter", __func__);
 	if (NULL == wma_find_vdev_by_addr(wma, add_bss->bssId, &vdev_id)) {
 		WMA_LOGE("%s: Failed to find vdev", __func__);
 		goto send_fail_resp;
@@ -1029,17 +1028,14 @@
 			WMA_TARGET_REQ_TYPE_VDEV_START);
 		goto send_fail_resp;
 	}
-	WMA_LOGI("%s: vdev start request for NDI sent to target", __func__);
+	WMA_LOGD("%s: vdev start request for NDI sent to target", __func__);
 
 	/* Initialize protection mode to no protection */
-	param.if_id = vdev_id;
-	param.param_id = WMI_VDEV_PARAM_PROTECTION_MODE;
-	param.param_value = IEEE80211_PROT_NONE;
-	if (wmi_unified_vdev_set_param_send(wma->wmi_handle, &param))
-		WMA_LOGE("Failed to initialize protection mode");
-
+	wma_vdev_set_param(wma->wmi_handle, vdev_id,
+		WMI_VDEV_PARAM_PROTECTION_MODE, IEEE80211_PROT_NONE);
 
 	return;
+
 send_fail_resp:
 	add_bss->status = QDF_STATUS_E_FAILURE;
 	wma_send_msg(wma, WMA_ADD_BSS_RSP, (void *)add_bss, 0);