From e3e903bf37818f2f2fefcfe3b229dac0b8a0869f Mon Sep 17 00:00:00 2001 From: Abhinav Kumar Date: Thu, 16 Apr 2020 19:37:38 +0530 Subject: [PATCH] qcacld-3.0: Introduce new INI to enable/disable FT-IM With specific AP(s), FW needs to perform FT initial mobility association instead of FT roaming for deauth roam trigger. This ini is used to configure "FT roaming for deauth roam trigger" behavior from the HOST. Change-Id: Id754a21f7ac2c330019055646f79c79db3e0c52c CRs-Fixed: 2665882 --- components/mlme/core/src/wlan_mlme_main.c | 1 + components/mlme/dispatcher/inc/cfg_mlme_lfr.h | 26 +++++++++++++++++++ .../dispatcher/inc/wlan_mlme_public_struct.h | 2 ++ core/mac/inc/sir_api.h | 2 +- core/sme/src/csr/csr_api_roam.c | 2 ++ core/wma/src/wma_scan_roam.c | 1 + 6 files changed, 33 insertions(+), 1 deletion(-) 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,