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, ¶m))
- 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);