diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index e81c69f04725..918299506cc6 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -1718,6 +1718,7 @@ static void mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc, lfr->roam_scan_period_after_inactivity = cfg_get(psoc, CFG_POST_INACTIVITY_ROAM_SCAN_PERIOD); lfr->fw_akm_bitmap = 0; + lfr->enable_ft_im_roaming = cfg_get(psoc, CFG_FT_IM_ROAMING); mlme_init_roam_offload_cfg(psoc, lfr); mlme_init_ese_cfg(psoc, lfr); diff --git a/components/mlme/dispatcher/inc/cfg_mlme_lfr.h b/components/mlme/dispatcher/inc/cfg_mlme_lfr.h index fbf30d2ad318..ee555727cbef 100644 --- a/components/mlme/dispatcher/inc/cfg_mlme_lfr.h +++ b/components/mlme/dispatcher/inc/cfg_mlme_lfr.h @@ -2599,6 +2599,31 @@ 0, \ "Config roam scan policy") +/* + * + * enable_ft_im_roaming - FW needs to perform FT initial moiblity association + * instead of FT roaming for deauth roam trigger + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * This ini is used to FT roaming for deauth roam trigger behavior from HOST + * 0 - To disable FT-IM + * 1 - To enable FT-IM + * + * Related: None + * + * Supported Feature: Roaming + * + * Usage: Internal + * + * + */ +#define CFG_FT_IM_ROAMING CFG_INI_BOOL( \ + "enable_ft_im_roaming", \ + 1, \ + "FT roaming for deauth roam trigger") + /* * * roam_scan_inactivity_time - Device inactivity monitoring time in @@ -2805,6 +2830,7 @@ CFG(CFG_LFR_ROAM_FORCE_RSSI_TRIGGER) \ CFG(CFG_ROAM_SCAN_SCAN_POLICY) \ CFG(CFG_ROAM_SCAN_INACTIVITY_TIME) \ + CFG(CFG_FT_IM_ROAMING) \ CFG(CFG_ROAM_INACTIVE_COUNT) \ CFG(CFG_POST_INACTIVITY_ROAM_SCAN_PERIOD) \ CFG(CFG_BSS_LOAD_TRIG_5G_RSSI_THRES) \ diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 29b79cc02369..43837ac9b324 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -1532,6 +1532,7 @@ struct bss_load_trigger { * @enable_adaptive_11r Flag to check if adaptive 11r ini is enabled * @tgt_adaptive_11r_cap: Flag to check if target supports adaptive * 11r + * @enable_ft_im_roaming: Flag to enable/disable FT-IM roaming * @roam_scan_home_away_time: The home away time to firmware * @roam_scan_n_probes: The number of probes to be sent for firmware roaming * @delay_before_vdev_stop:Wait time for tx complete before vdev stop @@ -1642,6 +1643,7 @@ struct wlan_mlme_lfr_cfg { bool enable_adaptive_11r; bool tgt_adaptive_11r_cap; #endif + bool enable_ft_im_roaming; uint16_t roam_scan_home_away_time; uint32_t roam_scan_n_probes; uint8_t delay_before_vdev_stop; diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index 05938c7b1a0d..da3e6677675b 100644 --- a/core/mac/inc/sir_api.h +++ b/core/mac/inc/sir_api.h @@ -2236,7 +2236,7 @@ struct roam_offload_scan_req { struct pmkid_mode_bits pmkid_modes; bool is_adaptive_11r_connection; bool is_sae_single_pmk; - + bool enable_ft_im_roaming; /* Idle/Disconnect roam parameters */ struct wmi_idle_roam_params idle_roam_params; struct wmi_disconnect_roam_params disconnect_roam_params; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index ded013502a4e..d751c7d03e33 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -16891,6 +16891,8 @@ csr_update_roam_scan_offload_request(struct mac_context *mac_ctx, mac_ctx->mlme_cfg->lfr.roam_force_rssi_trigger); csr_update_roam_req_adaptive_11r(session, mac_ctx, req_buf); + req_buf->enable_ft_im_roaming = + mac_ctx->mlme_cfg->lfr.enable_ft_im_roaming; /* fill bss load triggered roam related configs */ req_buf->bss_load_trig_enabled = mac_ctx->mlme_cfg->lfr.bss_load_trig.enabled; diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 8609872a2c52..52cec90d323c 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -367,6 +367,7 @@ static void wma_roam_scan_offload_set_params( params->rct_validity_timer = roam_req->rct_validity_timer; params->is_adaptive_11r = roam_req->is_adaptive_11r_connection; params->is_sae_same_pmk = roam_req->is_sae_single_pmk; + params->enable_ft_im_roaming = roam_req->enable_ft_im_roaming; wma_debug("qos_caps %d, qos_enabled %d, ho_delay_for_rx %d, roam_scan_mode %d roam_preauth: retrycount %d, no_ack_timeout %d SAE Single PMK:%d", params->roam_offload_params.qos_caps, params->roam_offload_params.qos_enabled,