diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 6b23d99a0cb4..17c16fa0f490 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -9139,6 +9139,31 @@ enum hdd_wext_control { #define CFG_MAX_WOW_FILTERS_MAX (WOW_MAX_BITMAP_FILTERS) #define CFG_MAX_WOW_FILTERS_DEFAULT (WOW_MAX_BITMAP_FILTERS) +/* + * + * gper_min_rssi_threshold_for_roam - Minimum roamable AP RSSI for + * candidate selection for PER based roam + * @Min: 0 + * @Max: 96 + * @Default: 83 + * + * Minimum roamable AP RSSI for candidate selection for PER based roam + * + * Related: gper_roam_enabled, gper_roam_high_rate_th, gper_roam_low_rate_th, + * gper_roam_th_percent, gper_roam_rest_time + * + * Supported Feature: LFR-3.0 + * + * Usage: Internal + * + * + */ +#define CFG_PER_ROAM_MIN_CANDIDATE_RSSI "gper_min_rssi_threshold_for_roam" +#define CFG_PER_ROAM_MIN_CANDIDATE_RSSI_MIN (0) +#define CFG_PER_ROAM_MIN_CANDIDATE_RSSI_MAX (96) +#define CFG_PER_ROAM_MIN_CANDIDATE_RSSI_DEFAULT (83) + + /* * * gEnableImps - Enable/Disable IMPS @@ -10957,6 +10982,7 @@ struct hdd_config { uint32_t per_roam_th_percent; uint32_t per_roam_rest_time; uint32_t per_roam_mon_time; + uint32_t min_candidate_rssi; enum active_bpf_mode active_uc_bpf_mode; enum active_bpf_mode active_mc_bc_bpf_mode; bool enable_bcast_probe_rsp; diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index 7f637e56d62e..9eb654ea1317 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -4255,6 +4255,13 @@ struct reg_table_entry g_registry_table[] = { CFG_PER_ROAM_MONITOR_TIME_MIN, CFG_PER_ROAM_MONITOR_TIME_MAX), + REG_VARIABLE(CFG_PER_ROAM_MIN_CANDIDATE_RSSI, WLAN_PARAM_Integer, + struct hdd_config, min_candidate_rssi, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_PER_ROAM_MIN_CANDIDATE_RSSI_DEFAULT, + CFG_PER_ROAM_MIN_CANDIDATE_RSSI_MIN, + CFG_PER_ROAM_MIN_CANDIDATE_RSSI_MAX), + REG_VARIABLE(CFG_ACTIVE_UC_BPF_MODE_NAME, WLAN_PARAM_Integer, struct hdd_config, active_uc_bpf_mode, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -5215,7 +5222,9 @@ static void hdd_per_roam_print_ini_config(hdd_context_t *hdd_ctx) hdd_debug("Name = [%s] Value = [%u]", CFG_PER_ROAM_MONITOR_TIME, hdd_ctx->config->per_roam_mon_time); - + hdd_debug("Name = [%s] Value = [%u]", + CFG_PER_ROAM_MIN_CANDIDATE_RSSI, + hdd_ctx->config->min_candidate_rssi); } /** @@ -7123,6 +7132,10 @@ static void hdd_update_per_config_to_sme(hdd_context_t *hdd_ctx, hdd_ctx->config->per_roam_mon_time; sme_config->csrConfig.per_roam_config.rx_per_mon_time = hdd_ctx->config->per_roam_mon_time; + + /* Assigning minimum roamable AP RSSI for candidate selection */ + sme_config->csrConfig.per_roam_config.min_candidate_rssi = + hdd_ctx->config->min_candidate_rssi; } /** diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 10cabc52ebb8..07d050a9de21 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -2747,6 +2747,8 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac, pParam->per_roam_config.tx_per_mon_time; pMac->roam.configParam.per_roam_config.rx_per_mon_time = pParam->per_roam_config.rx_per_mon_time; + pMac->roam.configParam.per_roam_config.min_candidate_rssi = + pParam->per_roam_config.min_candidate_rssi; pMac->fEnableDebugLog = pParam->fEnableDebugLog; @@ -2975,6 +2977,8 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam) cfg_params->per_roam_config.tx_per_mon_time; pParam->per_roam_config.rx_per_mon_time = cfg_params->per_roam_config.rx_per_mon_time; + pParam->per_roam_config.min_candidate_rssi = + cfg_params->per_roam_config.min_candidate_rssi; pParam->conc_custom_rule1 = cfg_params->conc_custom_rule1; pParam->conc_custom_rule2 = cfg_params->conc_custom_rule2; @@ -17864,15 +17868,18 @@ csr_create_per_roam_request(tpAniSirGlobal mac_ctx, uint8_t session_id) mac_ctx->roam.configParam.per_roam_config.tx_rate_thresh_percnt; req_buf->per_config.rx_rate_thresh_percnt = mac_ctx->roam.configParam.per_roam_config.rx_rate_thresh_percnt; + req_buf->per_config.min_candidate_rssi = + mac_ctx->roam.configParam.per_roam_config.min_candidate_rssi; QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG, - "PER based roaming configuaration enable: %d vdev: %d high_rate_thresh: %d low_rate_thresh: %d rate_thresh_percnt: %d per_rest_time: %d monitor_time: %d", + "PER based roaming configuaration enable: %d vdev: %d high_rate_thresh: %d low_rate_thresh: %d rate_thresh_percnt: %d per_rest_time: %d monitor_time: %d min cand rssi: %d", req_buf->per_config.enable, session_id, req_buf->per_config.tx_high_rate_thresh, req_buf->per_config.tx_low_rate_thresh, req_buf->per_config.tx_rate_thresh_percnt, req_buf->per_config.per_rest_time, - req_buf->per_config.tx_per_mon_time); + req_buf->per_config.tx_per_mon_time, + req_buf->per_config.min_candidate_rssi); return req_buf; }