mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 22:40:54 -04:00
qcacld-3.0: Add vdev valid check for wmi vdev level commands
Check if vdev is active for the following roam related vdev commands before sending it to wmi: 1. WMI_ROAM_SCAN_MODE 2. WMI_ROAM_SCAN_PERIOD 3. WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD 4. WMI_ROAM_AP_PROFILE 5. WMI_ROAM_CHAN_LIST 6. WMI_ROAM_SCAN_CMD 7. WMI_ROAM_SYNCH_COMPLETE This will avoid the race condition where the vdev is deleted and the vdev related commands for the deleted vdev are sent to firmware before wmi_stop_inprogress is set at wmi. Change-Id: I8b54bb5663ef517bc58141bc3b96fd9b863fd656 CRs-Fixed: 2344006
This commit is contained in:
parent
6b01731f49
commit
ecb607352a
1 changed files with 56 additions and 6 deletions
|
|
@ -384,6 +384,12 @@ QDF_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle,
|
|||
if (!params)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
if (!wma_is_vdev_valid(vdev_id)) {
|
||||
WMA_LOGE("%s: Invalid vdev id:%d", __func__, vdev_id);
|
||||
qdf_mem_free(params);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
params->is_roam_req_valid = 0;
|
||||
params->mode = mode;
|
||||
params->vdev_id = vdev_id;
|
||||
|
|
@ -621,8 +627,14 @@ QDF_STATUS wma_roam_scan_offload_scan_period(tp_wma_handle wma_handle,
|
|||
uint32_t scan_age,
|
||||
uint32_t vdev_id)
|
||||
{
|
||||
if (!wma_is_vdev_valid(vdev_id)) {
|
||||
WMA_LOGE("%s: Invalid vdev id:%d", __func__, vdev_id);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return wmi_unified_roam_scan_offload_scan_period(wma_handle->wmi_handle,
|
||||
scan_period, scan_age, vdev_id);
|
||||
scan_period, scan_age,
|
||||
vdev_id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -637,13 +649,18 @@ QDF_STATUS wma_roam_scan_offload_scan_period(tp_wma_handle wma_handle,
|
|||
* Return: QDF status
|
||||
*/
|
||||
QDF_STATUS wma_roam_scan_offload_rssi_change(tp_wma_handle wma_handle,
|
||||
uint32_t vdev_id,
|
||||
int32_t rssi_change_thresh,
|
||||
uint32_t bcn_rssi_weight,
|
||||
uint32_t hirssi_delay_btw_scans)
|
||||
uint32_t vdev_id,
|
||||
int32_t rssi_change_thresh,
|
||||
uint32_t bcn_rssi_weight,
|
||||
uint32_t hirssi_delay_btw_scans)
|
||||
{
|
||||
int status;
|
||||
|
||||
if (!wma_is_vdev_valid(vdev_id)) {
|
||||
WMA_LOGE("%s: Invalid vdev id:%d", __func__, vdev_id);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
status = wmi_unified_roam_scan_offload_rssi_change_cmd(
|
||||
wma_handle->wmi_handle,
|
||||
vdev_id, rssi_change_thresh,
|
||||
|
|
@ -681,6 +698,12 @@ QDF_STATUS wma_roam_scan_offload_chan_list(tp_wma_handle wma_handle,
|
|||
chan_count);
|
||||
return QDF_STATUS_E_EMPTY;
|
||||
}
|
||||
|
||||
if (!wma_is_vdev_valid(vdev_id)) {
|
||||
WMA_LOGE("%s: Invalid vdev id:%d", __func__, vdev_id);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
chan_list_mhz = qdf_mem_malloc(chan_count * sizeof(*chan_list_mhz));
|
||||
if (!chan_list_mhz)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
|
@ -1187,6 +1210,11 @@ static QDF_STATUS wma_roam_scan_offload_ap_profile(tp_wma_handle wma_handle,
|
|||
struct ap_profile_params ap_profile;
|
||||
bool db2dbm_enabled;
|
||||
|
||||
if (!wma_is_vdev_valid(roam_req->sessionId)) {
|
||||
WMA_LOGE("%s: Invalid vdev id:%d", __func__,
|
||||
roam_req->sessionId);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
ap_profile.vdev_id = roam_req->sessionId;
|
||||
wma_roam_scan_fill_ap_profile(roam_req, &ap_profile.profile);
|
||||
|
||||
|
|
@ -1229,6 +1257,12 @@ static QDF_STATUS wma_roam_scan_filter(tp_wma_handle wma_handle,
|
|||
struct roam_scan_filter_params *params;
|
||||
struct lca_disallow_config_params *lca_config_params;
|
||||
|
||||
if (!wma_is_vdev_valid(roam_req->sessionId)) {
|
||||
WMA_LOGE("%s: Invalid vdev id:%d", __func__,
|
||||
roam_req->sessionId);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
params = qdf_mem_malloc(sizeof(struct roam_scan_filter_params));
|
||||
if (!params)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
|
@ -1381,8 +1415,13 @@ QDF_STATUS wma_roam_scan_bmiss_cnt(tp_wma_handle wma_handle,
|
|||
QDF_STATUS wma_roam_scan_offload_command(tp_wma_handle wma_handle,
|
||||
uint32_t command, uint32_t vdev_id)
|
||||
{
|
||||
if (!wma_is_vdev_valid(vdev_id)) {
|
||||
WMA_LOGE("%s: Invalid vdev id:%d", __func__, vdev_id);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return wmi_unified_roam_scan_offload_cmd(wma_handle->wmi_handle,
|
||||
command, vdev_id);
|
||||
command, vdev_id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1958,6 +1997,12 @@ void wma_process_roam_invoke(WMA_HANDLE handle,
|
|||
__func__);
|
||||
goto free_frame_buf;
|
||||
}
|
||||
|
||||
if (!wma_is_vdev_valid(roaminvoke->vdev_id)) {
|
||||
WMA_LOGE("%s: Invalid vdev id:%d", __func__,
|
||||
roaminvoke->vdev_id);
|
||||
goto free_frame_buf;
|
||||
}
|
||||
ch_hz = (A_UINT32)cds_chan_to_freq(roaminvoke->channel);
|
||||
wmi_unified_roam_invoke_cmd(wma_handle->wmi_handle,
|
||||
(struct wmi_roam_invoke_cmd *)roaminvoke,
|
||||
|
|
@ -3023,6 +3068,11 @@ void wma_process_roam_synch_complete(WMA_HANDLE handle, uint8_t vdev_id)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!wma_is_vdev_valid(vdev_id)) {
|
||||
WMA_LOGE("%s: Invalid vdev id:%d", __func__, vdev_id);
|
||||
return;
|
||||
}
|
||||
|
||||
if (wmi_unified_roam_synch_complete_cmd(wma_handle->wmi_handle,
|
||||
vdev_id)) {
|
||||
return;
|
||||
|
|
|
|||
Loading…
Reference in a new issue