diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index 2c3247f459e0..bbd31ba0b371 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -164,6 +164,19 @@ static void mlme_init_qos_cfg(struct wlan_objmgr_psoc *psoc, cfg_get(psoc, CFG_SAP_MAX_INACTIVITY_OVERRIDE); } +static void mlme_init_mbo_cfg(struct wlan_objmgr_psoc *psoc, + struct wlan_mlme_mbo *mbo_params) +{ + mbo_params->mbo_candidate_rssi_thres = + cfg_get(psoc, CFG_MBO_CANDIDATE_RSSI_THRESHOLD); + mbo_params->mbo_current_rssi_thres = + cfg_get(psoc, CFG_MBO_CURRENT_RSSI_THRESHOLD); + mbo_params->mbo_current_rssi_mcc_thres = + cfg_get(psoc, CFG_MBO_CUR_RSSI_MCC_THRESHOLD); + mbo_params->mbo_candidate_rssi_btc_thres = + cfg_get(psoc, CFG_MBO_CAND_RSSI_BTC_THRESHOLD); +} + static void mlme_update_rates_in_cfg(struct wlan_objmgr_psoc *psoc, struct wlan_mlme_rates *rates) { @@ -293,6 +306,7 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) mlme_cfg = &mlme_obj->cfg; mlme_update_ht_cap_in_cfg(psoc, &mlme_cfg->ht_caps.ht_cap_info); + mlme_init_mbo_cfg(psoc, &mlme_cfg->mbo_cfg); mlme_init_qos_cfg(psoc, &mlme_cfg->qos_mlme_params); mlme_update_rates_in_cfg(psoc, &mlme_cfg->rates); mlme_update_sap_protection_cfg(psoc, &mlme_cfg->sap_protection_cfg); diff --git a/components/mlme/dispatcher/inc/cfg_mlme.h b/components/mlme/dispatcher/inc/cfg_mlme.h index 954824c6ffd0..0ebd1c97b54c 100644 --- a/components/mlme/dispatcher/inc/cfg_mlme.h +++ b/components/mlme/dispatcher/inc/cfg_mlme.h @@ -26,6 +26,7 @@ #include "cfg_mlme_chainmask.h" #include "cfg_mlme_ht_caps.h" #include "cfg_mlme_obss_ht40.h" +#include "cfg_mlme_mbo.h" #include "cfg_mlme_vht_caps.h" #include "cfg_qos.h" #include "cfg_mlme_rates.h" @@ -37,6 +38,7 @@ CFG_CHAINMASK_ALL \ CFG_HT_CAPS_ALL \ CFG_OBSS_HT40_ALL \ + CFG_MBO_ALL \ CFG_VHT_CAPS_ALL \ CFG_QOS_ALL \ CFG_RATES_ALL \ diff --git a/components/mlme/dispatcher/inc/cfg_mlme_mbo.h b/components/mlme/dispatcher/inc/cfg_mlme_mbo.h new file mode 100644 index 000000000000..02dce2278e59 --- /dev/null +++ b/components/mlme/dispatcher/inc/cfg_mlme_mbo.h @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/** + * DOC: This file contains centralized definitions of QOS related + * converged configurations. + */ + +#ifndef __CFG_MLME_MBO_H +#define __CFG_MLME_MBO_H + +/* + * + * g_mbo_candidate_rssi_thres - Candidate AP's minimum RSSI to accept + * @Min: -120 + * @Max: 0 + * @Default: -72 + * + * This ini specifies the minimum RSSI value a candidate should have to accept + * it as a target for transition. + * + * Related: N/A + * + * Supported Feature: MBO + * + * Usage: Internal + * + * + */ +#define CFG_MBO_CANDIDATE_RSSI_THRESHOLD CFG_INI_INT( \ + "g_mbo_candidate_rssi_thres", \ + -120, \ + 0, \ + -72, \ + CFG_VALUE_OR_DEFAULT, \ + "candidate AP rssi threshold") +/* + * + * g_mbo_current_rssi_thres - Connected AP's RSSI threshold to consider a + * transition + * @Min: -120 + * @Max: 0 + * @Default: -65 + * + * This ini is used to configure connected AP's RSSI threshold value to consider + * a transition. + * + * Related: N/A + * + * Supported Feature: MBO + * + * Usage: Internal + * + * + */ +#define CFG_MBO_CURRENT_RSSI_THRESHOLD CFG_INI_INT( \ + "g_mbo_current_rssi_thres", \ + -120, \ + 0, \ + -65, \ + CFG_VALUE_OR_DEFAULT, \ + "current AP rssi threshold") + +/* + * + * g_mbo_current_rssi_mcc_thres - connected AP's RSSI threshold value to prefer + * against a MCC + * @Min: -120 + * @Max: 0 + * @Default: -75 + * + * This ini is used to configure connected AP's minimum RSSI threshold that is + * preferred against a MCC case, if the candidate can cause MCC. + * + * Related: N/A + * + * Supported Feature: MBO + * + * Usage: Internal + * + * + */ +#define CFG_MBO_CUR_RSSI_MCC_THRESHOLD CFG_INI_INT( \ + "g_mbo_current_rssi_mcc_thres", \ + -120, \ + 0, \ + -75, \ + CFG_VALUE_OR_DEFAULT, \ + "current AP mcc rssi threshold") + +/* + * + * g_mbo_candidate_rssi_btc_thres - Candidate AP's minimum RSSI threshold to + * prefer it even in case of BT coex + * @Min: -120 + * @Max: 0 + * @Default: -70 + * + * This ini is used to configure candidate AP's minimum RSSI threshold to prefer + * it for transition even in case of BT coex. + * + * Related: N/A + * + * Supported Feature: MBO + * + * Usage: Internal + * + * + */ +#define CFG_MBO_CAND_RSSI_BTC_THRESHOLD CFG_INI_INT( \ + "g_mbo_candidate_rssi_btc_thres", \ + -120, \ + 0, \ + -70, \ + CFG_VALUE_OR_DEFAULT, \ + "candidate AP rssi threshold") + +#define CFG_MBO_ALL \ + CFG(CFG_MBO_CANDIDATE_RSSI_THRESHOLD) \ + CFG(CFG_MBO_CURRENT_RSSI_THRESHOLD) \ + CFG(CFG_MBO_CUR_RSSI_MCC_THRESHOLD) \ + CFG(CFG_MBO_CAND_RSSI_BTC_THRESHOLD) + +#endif /* __CFG_MLME_MBO_H */ diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 7c393e760ad7..0274046b893e 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -119,6 +119,20 @@ struct wlan_mlme_cfg_sap { uint8_t reduced_beacon_interval; }; +/** + * struct wlan_mlme_mbo - Multiband Operation related ini configs + * @mbo_candidate_rssi_thres: + * @mbo_current_rssi_thres: + * @mbo_current_rssi_mcc_thres: + * @mbo_candidate_rssi_btc_thres: + */ +struct wlan_mlme_mbo { + int8_t mbo_candidate_rssi_thres; + int8_t mbo_current_rssi_thres; + int8_t mbo_current_rssi_mcc_thres; + int8_t mbo_candidate_rssi_btc_thres; +}; + struct wlan_mlme_vht_caps { /* VHT related configs */ }; @@ -291,6 +305,7 @@ struct wlan_mlme_sta_cfg { struct wlan_mlme_cfg { struct wlan_mlme_ht_caps ht_caps; struct wlan_mlme_obss_ht40 obss_ht40; + struct wlan_mlme_mbo mbo_cfg; struct wlan_mlme_vht_caps vht_caps; struct wlan_mlme_qos qos_mlme_params; struct wlan_mlme_rates rates; diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 034dd2db90e5..088c9399055d 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -11735,101 +11735,6 @@ enum hdd_external_acs_policy { #define CFG_CHAN_SWITCH_HOSTAPD_RATE_ENABLED_MAX (1) #define CFG_CHAN_SWITCH_HOSTAPD_RATE_ENABLED_DEFAULT (0) -/* - * - * g_mbo_candidate_rssi_thres - Candidate AP's minimum RSSI to accept - * @Min: -120 - * @Max: 0 - * @Default: -72 - * - * This ini specifies the minimum RSSI value a candidate should have to accept - * it as a target for transition. - * - * Related: N/A - * - * Supported Feature: MBO - * - * Usage: Internal - * - * - */ -#define CFG_MBO_CANDIDATE_RSSI_THRESHOLD_NAME "g_mbo_candidate_rssi_thres" -#define CFG_CANDIDATE_RSSI_THRESHOLD_DEFAULT (-72) -#define CFG_CANDIDATE_RSSI_THRESHOLD_MIN (-120) -#define CFG_CANDIDATE_RSSI_THRESHOLD_MAX (0) - -/* - * - * g_mbo_current_rssi_thres - Connected AP's RSSI threshold to consider a - * transition - * @Min: -120 - * @Max: 0 - * @Default: -65 - * - * This ini is used to configure connected AP's RSSI threshold value to consider - * a transition. - * - * Related: N/A - * - * Supported Feature: MBO - * - * Usage: Internal - * - * - */ -#define CFG_MBO_CURRENT_RSSI_THRESHOLD_NAME "g_mbo_current_rssi_thres" -#define CFG_CURRENT_RSSI_THRESHOLD_DEFAULT (-65) -#define CFG_CURRENT_RSSI_THRESHOLD_MIN (-120) -#define CFG_CURRENT_RSSI_THRESHOLD_MAX (0) - -/* - * - * g_mbo_current_rssi_mcc_thres - connected AP's RSSI threshold value to prefer - * against a MCC - * @Min: -120 - * @Max: 0 - * @Default: -75 - * - * This ini is used to configure connected AP's minimum RSSI threshold that is - * preferred against a MCC case, if the candidate can cause MCC. - * - * Related: N/A - * - * Supported Feature: MBO - * - * Usage: Internal - * - * - */ -#define CFG_MBO_CUR_RSSI_MCC_THRESHOLD_NAME "g_mbo_current_rssi_mcc_thres" -#define CFG_MBO_CUR_RSSI_MCC_THRESHOLD_DEFAULT (-75) -#define CFG_MBO_CUR_RSSI_MCC_THRESHOLD_MIN (-120) -#define CFG_MBO_CUR_RSSI_MCC_THRESHOLD_MAX (0) - -/* - * - * g_mbo_candidate_rssi_btc_thres - Candidate AP's minimum RSSI threshold to - * prefer it even in case of BT coex - * @Min: -120 - * @Max: 0 - * @Default: -70 - * - * This ini is used to configure candidate AP's minimum RSSI threshold to prefer - * it for transition even in case of BT coex. - * - * Related: N/A - * - * Supported Feature: MBO - * - * Usage: Internal - * - * - */ -#define CFG_MBO_CAND_RSSI_BTC_THRESHOLD_NAME "g_mbo_candidate_rssi_btc_thres" -#define CFG_MBO_CAND_RSSI_BTC_THRESHOLD_DEFAULT (-70) -#define CFG_MBO_CAND_RSSI_BTC_THRESHOLD_MIN (-120) -#define CFG_MBO_CAND_RSSI_BTC_THRESHOLD_MAX (0) - #ifdef WLAN_FEATURE_PACKET_FILTERING /* * @@ -13714,11 +13619,6 @@ struct hdd_config { uint32_t wlm_latency_flags_moderate; uint32_t wlm_latency_flags_low; uint32_t wlm_latency_flags_ultralow; - /* mbo related thresholds */ - int8_t mbo_candidate_rssi_thres; - int8_t mbo_current_rssi_thres; - int8_t mbo_current_rssi_mcc_thres; - int8_t mbo_candidate_rssi_btc_thres; #ifdef WLAN_FEATURE_PACKET_FILTERING uint8_t packet_filters_bitmap; #endif diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index 706f01de27af..c1fd4a1c4174 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -4645,37 +4645,6 @@ struct reg_table_entry g_registry_table[] = { CFG_ENABLE_SCORING_FOR_ROAM_MIN, CFG_ENABLE_SCORING_FOR_ROAM_MAX), - REG_VARIABLE(CFG_MBO_CANDIDATE_RSSI_THRESHOLD_NAME, - WLAN_PARAM_SignedInteger, struct hdd_config, - mbo_candidate_rssi_thres, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_CANDIDATE_RSSI_THRESHOLD_DEFAULT, - CFG_CANDIDATE_RSSI_THRESHOLD_MIN, - CFG_CANDIDATE_RSSI_THRESHOLD_MAX), - - REG_VARIABLE(CFG_MBO_CURRENT_RSSI_THRESHOLD_NAME, - WLAN_PARAM_SignedInteger, struct hdd_config, - mbo_current_rssi_thres, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_CURRENT_RSSI_THRESHOLD_DEFAULT, - CFG_CURRENT_RSSI_THRESHOLD_MIN, - CFG_CURRENT_RSSI_THRESHOLD_MAX), - - REG_VARIABLE(CFG_MBO_CUR_RSSI_MCC_THRESHOLD_NAME, - WLAN_PARAM_SignedInteger, struct hdd_config, - mbo_current_rssi_mcc_thres, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_MBO_CUR_RSSI_MCC_THRESHOLD_DEFAULT, - CFG_MBO_CUR_RSSI_MCC_THRESHOLD_MIN, - CFG_MBO_CUR_RSSI_MCC_THRESHOLD_MAX), - - REG_VARIABLE(CFG_MBO_CAND_RSSI_BTC_THRESHOLD_NAME, - WLAN_PARAM_SignedInteger, struct hdd_config, - mbo_candidate_rssi_btc_thres, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_MBO_CAND_RSSI_BTC_THRESHOLD_DEFAULT, - CFG_MBO_CAND_RSSI_BTC_THRESHOLD_MIN, - CFG_MBO_CAND_RSSI_BTC_THRESHOLD_MAX), REG_VARIABLE(CFG_IS_FILS_ENABLED_NAME, WLAN_PARAM_Integer, struct hdd_config, is_fils_enabled, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -7269,14 +7238,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx) (pConfig->rssi_assoc_reject_enabled * WMI_VDEV_OCE_REASSOC_REJECT_FEATURE_BITMAP); smeConfig->csrConfig.oce_feature_bitmap = val; - smeConfig->csrConfig.mbo_thresholds.mbo_candidate_rssi_thres = - hdd_ctx->config->mbo_candidate_rssi_thres; - smeConfig->csrConfig.mbo_thresholds.mbo_current_rssi_thres = - hdd_ctx->config->mbo_current_rssi_thres; - smeConfig->csrConfig.mbo_thresholds.mbo_current_rssi_mcc_thres = - hdd_ctx->config->mbo_current_rssi_mcc_thres; - smeConfig->csrConfig.mbo_thresholds.mbo_candidate_rssi_btc_thres = - hdd_ctx->config->mbo_candidate_rssi_btc_thres; smeConfig->csrConfig.btm_offload_config = hdd_ctx->config->btm_offload_config; smeConfig->csrConfig.btm_solicited_timeout = diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h index 9ff96e68ffa6..2b2140f46e23 100644 --- a/core/sme/inc/csr_api.h +++ b/core/sme/inc/csr_api.h @@ -1014,20 +1014,6 @@ struct csr_sta_roam_policy_params { uint8_t sap_operating_band; }; -/** - * struct csr_mbo_thresholds - mbo related thresholds - * @mbo_candidate_rssi_thres - Candidate RSSI threshold - * @mbo_current_rssi_thres - Current RSSI threshold - * @mbo_current_rssi_mcc_thres - Current RSSI MCC threshold - * mbo_candidate_rssi_btc_thres - Candidate RSSI BTC threshold - */ -struct csr_mbo_thresholds { - int8_t mbo_candidate_rssi_thres; - int8_t mbo_current_rssi_thres; - int8_t mbo_current_rssi_mcc_thres; - int8_t mbo_candidate_rssi_btc_thres; -}; - /** * struct csr_neighbor_report_offload_params - neighbor report offload params * @params_bitmask: bitmask to specify which of the below are enabled @@ -1263,7 +1249,6 @@ typedef struct tagCsrConfigParam { uint32_t num_disallowed_aps; struct sir_score_config bss_score_params; uint8_t oce_feature_bitmap; - struct csr_mbo_thresholds mbo_thresholds; uint32_t btm_offload_config; uint32_t btm_solicited_timeout; uint32_t btm_max_attempt_cnt; diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h index 74c140294ba5..da6c32e10af5 100644 --- a/core/sme/inc/csr_internal.h +++ b/core/sme/inc/csr_internal.h @@ -574,7 +574,6 @@ struct csr_config { uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL]; struct sir_score_config bss_score_params; uint8_t oce_feature_bitmap; - struct csr_mbo_thresholds mbo_thresholds; uint32_t btm_offload_config; uint32_t btm_solicited_timeout; uint32_t btm_max_attempt_cnt; diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index b6582778205f..6b1f8a5be348 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -15734,6 +15734,14 @@ static bool sme_get_status_for_candidate(tHalHandle hal, bool is_bt_in_progress) { tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal); + struct wlan_mlme_mbo *mbo_cfg; + int8_t current_rssi_mcc_thres; + + if (!(mac_ctx->mlme_cfg)) { + pe_err("mlme cfg is NULL"); + return false; + } + mbo_cfg = &mac_ctx->mlme_cfg->mbo_cfg; /* * Low RSSI based rejection @@ -15741,10 +15749,8 @@ static bool sme_get_status_for_candidate(tHalHandle hal, * bss rssi is greater than mbo_current_rssi_thres, then reject the * candidate with MBO reason code 4. */ - if ((bss_desc->rssi < mac_ctx->roam.configParam.mbo_thresholds. - mbo_candidate_rssi_thres) && - (conn_bss_desc->rssi > mac_ctx->roam.configParam.mbo_thresholds. - mbo_current_rssi_thres)) { + if ((bss_desc->rssi < mbo_cfg->mbo_candidate_rssi_thres) && + (conn_bss_desc->rssi > mbo_cfg->mbo_current_rssi_thres)) { sme_err("Candidate BSS "MAC_ADDRESS_STR" has LOW RSSI(%d), hence reject", MAC_ADDR_ARRAY(bss_desc->bssId), bss_desc->rssi); info->status = QCA_STATUS_REJECT_LOW_RSSI; @@ -15760,9 +15766,8 @@ static bool sme_get_status_for_candidate(tHalHandle hal, * mbo_current_rssi_mss_thres, then reject the candidate with * MBO reason code 3. */ - if ((conn_bss_desc->rssi > - mac_ctx->roam.configParam.mbo_thresholds. - mbo_current_rssi_mcc_thres) && + current_rssi_mcc_thres = mbo_cfg->mbo_current_rssi_mcc_thres; + if ((conn_bss_desc->rssi > current_rssi_mcc_thres) && csr_is_mcc_channel(mac_ctx, bss_desc->channelId)) { sme_err("Candidate BSS "MAC_ADDRESS_STR" causes MCC, hence reject", MAC_ADDR_ARRAY(bss_desc->bssId)); @@ -15781,9 +15786,7 @@ static bool sme_get_status_for_candidate(tHalHandle hal, if (WLAN_REG_IS_5GHZ_CH(conn_bss_desc->channelId) && WLAN_REG_IS_24GHZ_CH(bss_desc->channelId) && is_bt_in_progress && - (bss_desc->rssi < - mac_ctx->roam.configParam.mbo_thresholds. - mbo_candidate_rssi_btc_thres)) { + (bss_desc->rssi < mbo_cfg->mbo_candidate_rssi_btc_thres)) { sme_err("Candidate BSS "MAC_ADDRESS_STR" causes BT coex, hence reject", MAC_ADDR_ARRAY(bss_desc->bssId)); info->status = diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 5e8a26a84d34..4d41c5495cbc 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -3221,19 +3221,6 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac, pMac->roam.configParam.roam_force_rssi_trigger = pParam->roam_force_rssi_trigger; - pMac->roam.configParam.mbo_thresholds. - mbo_candidate_rssi_thres = - pParam->mbo_thresholds.mbo_candidate_rssi_thres; - pMac->roam.configParam.mbo_thresholds. - mbo_current_rssi_thres = - pParam->mbo_thresholds.mbo_current_rssi_thres; - pMac->roam.configParam.mbo_thresholds. - mbo_current_rssi_mcc_thres = - pParam->mbo_thresholds.mbo_current_rssi_mcc_thres; - pMac->roam.configParam.mbo_thresholds. - mbo_candidate_rssi_btc_thres = - pParam->mbo_thresholds.mbo_candidate_rssi_btc_thres; - qdf_mem_copy(&pMac->roam.configParam.bss_score_params, &pParam->bss_score_params, sizeof(struct sir_score_config)); @@ -3535,19 +3522,6 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam) pMac->roam.configParam.btm_max_attempt_cnt; pParam->btm_sticky_time = pMac->roam.configParam.btm_sticky_time; - pParam->mbo_thresholds.mbo_candidate_rssi_thres = - pMac->roam.configParam.mbo_thresholds. - mbo_candidate_rssi_thres; - pParam->mbo_thresholds.mbo_current_rssi_thres = - pMac->roam.configParam.mbo_thresholds. - mbo_current_rssi_thres; - pParam->mbo_thresholds.mbo_current_rssi_mcc_thres = - pMac->roam.configParam.mbo_thresholds. - mbo_current_rssi_mcc_thres; - pParam->mbo_thresholds.mbo_candidate_rssi_btc_thres = - pMac->roam.configParam.mbo_thresholds. - mbo_candidate_rssi_btc_thres; - csr_get_he_config_param(pParam, pMac); csr_get_11k_offload_config_param(&pMac->roam.configParam, pParam);