diff --git a/source/core/wifi_ctrl_queue_handlers.c b/source/core/wifi_ctrl_queue_handlers.c index 1ffdd74e2..3e072a724 100644 --- a/source/core/wifi_ctrl_queue_handlers.c +++ b/source/core/wifi_ctrl_queue_handlers.c @@ -3231,6 +3231,12 @@ static void process_wps_cancel_event(void *data) INT vap_index = *(INT*)data; + if (!isVapPrivate(vap_index)) { + wifi_util_error_print(WIFI_CTRL,"%s:%d WPS not applicable for vap index %d, ignoring cancel\n", + __func__, __LINE__, vap_index); + return; + } + wifi_util_info_print(WIFI_CTRL,"%s:%d wps pbc cancel vap index = %d\n", __func__, __LINE__, vap_index); wifi_hal_setApWpsCancel(vap_index); diff --git a/source/dml/tr_181/ml/cosa_wifi_dml.c b/source/dml/tr_181/ml/cosa_wifi_dml.c index 255422130..3889f1ce1 100755 --- a/source/dml/tr_181/ml/cosa_wifi_dml.c +++ b/source/dml/tr_181/ml/cosa_wifi_dml.c @@ -12405,9 +12405,13 @@ WPS_SetParamBoolValue } if( AnscEqualString(ParamName, "X_CISCO_COM_CancelSession", TRUE)) { - instance_number -= 1; - wifi_util_dbg_print(WIFI_DMCLI,"%s:%d: WPS cancel for vap %d\n",__func__, __LINE__, instance_number); - push_event_to_ctrl_queue(&instance_number, sizeof(instance_number), wifi_event_type_command, wifi_event_type_command_wps_cancel, NULL); + if (vapInfo->u.bss_info.wps.enable == false) { + wifi_util_error_print(WIFI_DMCLI,"%s:%d: WPS not enabled for %s, cancel session not supported\n",__func__, __LINE__, vapInfo->vap_name); + return FALSE; + } + INT vap_index = (INT)(instance_number - 1); + wifi_util_dbg_print(WIFI_DMCLI,"%s:%d: WPS cancel for vap %d\n",__func__, __LINE__, vap_index); + push_event_to_ctrl_queue(&vap_index, sizeof(vap_index), wifi_event_type_command, wifi_event_type_command_wps_cancel, NULL); return TRUE; } #else diff --git a/source/platform/common/data_model/wifi_dml_cb.c b/source/platform/common/data_model/wifi_dml_cb.c index e0fa81bce..df6a042fa 100644 --- a/source/platform/common/data_model/wifi_dml_cb.c +++ b/source/platform/common/data_model/wifi_dml_cb.c @@ -4820,10 +4820,16 @@ bool wps_set_param_bool_value(void *obj_ins_context, char *param_name, bool outp } } } else if (STR_CMP(param_name, "X_CISCO_COM_CancelSession")) { - instance_number -= 1; + if (p_dm_vap_info->u.bss_info.wps.enable == false) { + wifi_util_error_print(WIFI_DMCLI, + "%s:%d: WPS not enabled for %s, cancel session not supported\n", + __func__, __LINE__, p_dm_vap_info->vap_name); + return false; + } + INT vap_index = (INT)(instance_number - 1); wifi_util_dbg_print(WIFI_DMCLI, "%s:%d: WPS cancel for vap %d\n", __func__, __LINE__, - instance_number); - push_event_to_ctrl_queue(&instance_number, sizeof(instance_number), wifi_event_type_command, + vap_index); + push_event_to_ctrl_queue(&vap_index, sizeof(vap_index), wifi_event_type_command, wifi_event_type_command_wps_cancel, NULL); } else { wifi_util_info_print(WIFI_DMCLI, "%s:%d: unsupported param name:%s\n", __func__, __LINE__,