diff --git a/umac/mlme/mlme_objmgr/dispatcher/inc/wlan_vdev_mlme_main.h b/umac/mlme/mlme_objmgr/dispatcher/inc/wlan_vdev_mlme_main.h index 8a89344b2bda..e13bcddf009b 100644 --- a/umac/mlme/mlme_objmgr/dispatcher/inc/wlan_vdev_mlme_main.h +++ b/umac/mlme/mlme_objmgr/dispatcher/inc/wlan_vdev_mlme_main.h @@ -116,6 +116,8 @@ enum wlan_vdev_state { * @WLAN_VDEV_SM_EV_DOWN_COMPLETE: Notification of DOWN complete * @WLAN_VDEV_SM_EV_ROAM: Notifiction on ROAMING * @WLAN_VDEV_SM_EV_STOP_REQ: Invoke API to initiate STOP handshake + * @WLAN_VDEV_SM_EV_CHAN_SWITCH_DISABLED:Test only, CSA completes without + * change in channel */ enum wlan_vdev_sm_evt { WLAN_VDEV_SM_EV_START = 0, @@ -148,6 +150,7 @@ enum wlan_vdev_sm_evt { WLAN_VDEV_SM_EV_DOWN_COMPLETE = 27, WLAN_VDEV_SM_EV_ROAM = 28, WLAN_VDEV_SM_EV_STOP_REQ = 29, + WLAN_VDEV_SM_EV_CHAN_SWITCH_DISABLED = 30, }; /** diff --git a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c b/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c index 5e936b2b7f7b..47d178eb3af5 100644 --- a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c +++ b/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c @@ -1374,6 +1374,19 @@ static bool mlme_vdev_subst_suspend_csa_restart_event(void *ctx, bool status; switch (event) { + case WLAN_VDEV_SM_EV_CHAN_SWITCH_DISABLED: + /** + * This event is sent when CSA count becomes 0 without + * change in channel i.e. only Beacon Probe response template + * is updated (CSA / ECSA IE is removed). + */ + + mlme_vdev_sm_transition_to(vdev_mlme, WLAN_VDEV_S_UP); + mlme_vdev_sm_deliver_event(vdev_mlme, + WLAN_VDEV_SM_EV_UP_HOST_RESTART, + event_data_len, event_data); + status = true; + break; case WLAN_VDEV_SM_EV_CSA_RESTART: mlme_vdev_update_beacon(vdev_mlme, BEACON_CSA, event_data_len, event_data); @@ -1640,6 +1653,7 @@ static const char *vdev_sm_event_names[] = { "EV_DOWN_COMPLETE", "EV_ROAM", "EV_STOP_REQ", + "EV_CHAN_SWITCH_DISABLED", }; struct wlan_sm_state_info sm_info[] = {