diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index 1ab1ffe471..66c7ea7b17 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -1835,6 +1835,14 @@ static void mlme_init_wps_params_cfg(struct wlan_objmgr_psoc *psoc, wps_params->wps_version = cfg_default(CFG_WPS_VERSION); } +static void mlme_init_btm_cfg(struct wlan_mlme_btm *btm) +{ + btm->btm_offload_config = cfg_default(CFG_BTM_ENABLE); + btm->btm_solicited_timeout = cfg_default(CFG_BTM_SOLICITED_TIMEOUT); + btm->btm_max_attempt_cnt = cfg_default(CFG_BTM_MAX_ATTEMPT_CNT); + btm->btm_sticky_time = cfg_default(CFG_BTM_STICKY_TIME); +} + QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) { struct wlan_mlme_psoc_obj *mlme_obj; @@ -1877,6 +1885,7 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) mlme_init_wep_cfg(&mlme_cfg->wep_params); mlme_init_wifi_pos_cfg(psoc, &mlme_cfg->wifi_pos_cfg); mlme_init_wps_params_cfg(psoc, &mlme_cfg->wps_params); + mlme_init_btm_cfg(&mlme_cfg->btm); return status; } diff --git a/components/mlme/dispatcher/inc/cfg_mlme.h b/components/mlme/dispatcher/inc/cfg_mlme.h index 8b8292bb64..9b428e188e 100644 --- a/components/mlme/dispatcher/inc/cfg_mlme.h +++ b/components/mlme/dispatcher/inc/cfg_mlme.h @@ -51,10 +51,12 @@ #include "cfg_mlme_feature_flag.h" #include "cfg_mlme_wep_params.h" #include "cfg_mlme_wifi_pos.h" +#include "cfg_mlme_btm.h" /* Please Maintain Alphabetic Order here */ #define CFG_MLME_ALL \ CFG_ACS_ALL \ + CFG_BTM_ALL \ CFG_CHAINMASK_ALL \ CFG_DFS_ALL \ CFG_EDCA_PARAMS_ALL \ diff --git a/components/mlme/dispatcher/inc/cfg_mlme_btm.h b/components/mlme/dispatcher/inc/cfg_mlme_btm.h new file mode 100644 index 0000000000..f49a7fcc2e --- /dev/null +++ b/components/mlme/dispatcher/inc/cfg_mlme_btm.h @@ -0,0 +1,147 @@ +/* + * 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 MLME BTM related CFG/INI Items. + */ + +#ifndef CFG_MLME_BTM_H_ +#define CFG_MLME_BTM_H_ + +/* + * + * btm_offload_config - Configure BTM + * @Min: 0x00000000 + * @Max: 0xFFFFFFFF + * @Default: 0x00000001 + * + * This ini is used to configure BTM + * + * Bit 0: Enable/Disable the BTM offload. Set this to 1 will + * enable and 0 will disable BTM offload. + * + * BIT 2, 1: Action on non matching candidate with cache. If a BTM request + * is received from AP then the candidate AP's may/may-not be present in + * the firmware scan cache . Based on below config firmware will decide + * whether to forward BTM frame to host or consume with firmware and proceed + * with Roaming to candidate AP. + * 00 scan and consume + * 01 no scan and forward to host + * 10, 11 reserved + * + * BIT 5, 4, 3: Roaming handoff decisions on multiple candidates match + * 000 match if exact BSSIDs are found + * 001 match if at least one top priority BSSID only + * 010, 011, 100, 101, 110, 111 reserved + * + * BIT 6: Set this to 1 will send BTM query frame and 0 not sent. + * + * BIT 7-31: Reserved + * + * Supported Feature: STA + * + * Usage: External + * + * + */ +#define CFG_BTM_ENABLE CFG_INI_UINT( \ + "btm_offload_config", \ + 0x00000000, \ + 0xffffffff, \ + 0x00000001, \ + CFG_VALUE_OR_DEFAULT, \ + "configure btm offload") + +/* + * + * btm_solicited_timeout - timeout value for waiting BTM request + * @Min: 1 + * @Max: 10000 + * @Default: 100 + * + * This ini is used to configure timeout value for waiting BTM request. + * Unit: millionsecond + * + * Supported Feature: STA + * + * Usage: External + * + * + */ +#define CFG_BTM_SOLICITED_TIMEOUT CFG_INI_UINT( \ + "btm_solicited_timeout", \ + 1, \ + 10000, \ + 100, \ + CFG_VALUE_OR_DEFAULT, \ + "configure timeout value for waiting BTM request") + +/* + * + * btm_max_attempt_cnt - Maximum attempt for sending BTM query to ESS + * @Min: 1 + * @Max: 0xFFFFFFFF + * @Default: 3 + * + * This ini is used to configure maximum attempt for sending BTM query to ESS. + * + * Supported Feature: STA + * + * Usage: External + * + * + */ +#define CFG_BTM_MAX_ATTEMPT_CNT CFG_INI_UINT( \ + "btm_max_attempt_cnt", \ + 1, \ + 0xFFFFFFFF, \ + 3, \ + CFG_VALUE_OR_DEFAULT, \ + "configure maximum attempt for sending BTM query to ESS") + +/* + * + * btm_sticky_time - Stick time after roaming to new AP by BTM + * @Min: 0 + * @Max: 0x0000FFFF + * @Default: 300 + * + * This ini is used to configure Stick time after roaming to new AP by BTM. + * Unit: seconds + * + * Supported Feature: STA + * + * Usage: External + * + * + */ +#define CFG_BTM_STICKY_TIME CFG_INI_UINT( \ + "btm_sticky_time", \ + 0, \ + 0x0000FFFF, \ + 300, \ + CFG_VALUE_OR_DEFAULT, \ + "configure Stick time after roaming to new AP by BTM") + +#define CFG_BTM_ALL \ + CFG(CFG_BTM_ENABLE) \ + CFG(CFG_BTM_SOLICITED_TIMEOUT) \ + CFG(CFG_BTM_MAX_ATTEMPT_CNT) \ + CFG(CFG_BTM_STICKY_TIME) + +#endif /* CFG_MLME_BTM_H_ */ diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 65df894c29..d171c955f0 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -1662,6 +1662,20 @@ struct wlan_mlme_wifi_pos_cfg { uint32_t fine_time_meas_cap; }; +/* + * struct wlan_mlme_btm - BTM related configs + * @btm_offload_config: configure btm offload + * @btm_solicited_timeout: configure timeout value for waiting BTM request + * @btm_max_attempt_cnt: configure maximum attempt for sending BTM query to ESS + * @btm_sticky_time: configure Stick time after roaming to new AP by BTM + */ +struct wlan_mlme_btm { + uint32_t btm_offload_config; + uint32_t btm_solicited_timeout; + uint32_t btm_max_attempt_cnt; + uint32_t btm_sticky_time; +}; + /** * struct wlan_mlme_cfg - MLME config items * @chainmask_cfg: VHT chainmask related cfg items @@ -1693,6 +1707,7 @@ struct wlan_mlme_wifi_pos_cfg { * @wifi_pos_cfg: WIFI POS config * @wmm_params: WMM related CFG & INI Items * @wps_params: WPS related CFG itmes + * @btm: BTM related CFG itmes */ struct wlan_mlme_cfg { struct wlan_mlme_chainmask chainmask_cfg; @@ -1726,6 +1741,7 @@ struct wlan_mlme_cfg { struct wlan_mlme_wifi_pos_cfg wifi_pos_cfg; struct wlan_mlme_wmm_params wmm_params; struct wlan_mlme_wps_params wps_params; + struct wlan_mlme_btm btm; }; #endif diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 72cf8283fe..96d6ea5cc4 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -4046,109 +4046,6 @@ enum hdd_link_speed_rpt_type { #define CFG_ENABLE_PACKET_FILTERS_MAX (63) #endif /* WLAN_FEATURE_PACKET_FILTERING */ -/* - * - * btm_offload_config - Configure BTM - * @Min: 0x00000000 - * @Max: 0xFFFFFFFF - * @Default: 0x00000000 - * - * This ini is used to configure BTM - * - * Bit 0: Enable/Disable the BTM offload. Set this to 1 will - * enable and 0 will disable BTM offload. - * - * BIT 2, 1: Action on non matching candidate with cache. If a BTM request - * is received from AP then the candidate AP's may/may-not be present in - * the firmware scan cache . Based on below config firmware will decide - * whether to forward BTM frame to host or consume with firmware and proceed - * with Roaming to candidate AP. - * 00 scan and consume - * 01 no scan and forward to host - * 10, 11 reserved - * - * BIT 5, 4, 3: Roaming handoff decisions on multiple candidates match - * 000 match if exact BSSIDs are found - * 001 match if at least one top priority BSSID only - * 010, 011, 100, 101, 110, 111 reserved - * - * BIT 6: Set this to 1 will send BTM query frame and 0 not sent. - * - * BIT 7-31: Reserved - * - * Supported Feature: STA - * - * Usage: External - * - * - */ -#define CFG_BTM_ENABLE_NAME "btm_offload_config" -#define CFG_BTM_ENABLE_MIN (0x00000000) -#define CFG_BTM_ENABLE_MAX (0xffffffff) -#define CFG_BTM_ENABLE_DEFAULT (0x00000001) - -/* - * - * btm_solicited_timeout - timeout value for waiting BTM request - * @Min: 1 - * @Max: 10000 - * @Default: 100 - * - * This ini is used to configure timeout value for waiting BTM request. - * Unit: millionsecond - * - * Supported Feature: STA - * - * Usage: External - * - * - */ -#define CFG_BTM_SOLICITED_TIMEOUT "btm_solicited_timeout" -#define CFG_BTM_SOLICITED_TIMEOUT_MIN (1) -#define CFG_BTM_SOLICITED_TIMEOUT_MAX (10000) -#define CFG_BTM_SOLICITED_TIMEOUT_DEFAULT (100) - -/* - * - * btm_max_attempt_cnt - Maximum attempt for sending BTM query to ESS - * @Min: 1 - * @Max: 0xFFFFFFFF - * @Default: 3 - * - * This ini is used to configure maximum attempt for sending BTM query to ESS. - * - * Supported Feature: STA - * - * Usage: External - * - * - */ -#define CFG_BTM_MAX_ATTEMPT_CNT "btm_max_attempt_cnt" -#define CFG_BTM_MAX_ATTEMPT_CNT_MIN (0x00000001) -#define CFG_BTM_MAX_ATTEMPT_CNT_MAX (0xFFFFFFFF) -#define CFG_BTM_MAX_ATTEMPT_CNT_DEFAULT (0x00000003) - -/* - * - * btm_sticky_time - Stick time after roaming to new AP by BTM - * @Min: 0 - * @Max: 0x0000FFFF - * @Default: 300 - * - * This ini is used to configure Stick time after roaming to new AP by BTM. - * Unit: seconds - * - * Supported Feature: STA - * - * Usage: External - * - * - */ -#define CFG_BTM_STICKY_TIME "btm_sticky_time" -#define CFG_BTM_STICKY_TIME_MIN (0x00000000) -#define CFG_BTM_STICKY_TIME_MAX (0x0000FFFF) -#define CFG_BTM_STICKY_TIME_DEFAULT (300) - /* * * gcmp_enabled - ini to enable/disable GCMP @@ -5127,16 +5024,12 @@ struct hdd_config { #ifdef WLAN_FEATURE_PACKET_FILTERING uint8_t packet_filters_bitmap; #endif - uint32_t btm_offload_config; #ifdef WLAN_FEATURE_SAE bool is_sae_enabled; #endif bool enable_dtim_selection_diversity; bool gcmp_enabled; bool is_11k_offload_supported; - uint32_t btm_solicited_timeout; - uint32_t btm_max_attempt_cnt; - uint32_t btm_sticky_time; uint32_t offload_11k_enable_bitmask; uint32_t neighbor_report_offload_params_bitmask; uint32_t neighbor_report_offload_time_offset; diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index e5d1a1912b..b73173d98a 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -1133,13 +1133,6 @@ struct reg_table_entry g_registry_table[] = { CFG_LATENCY_FLAGS_ULTRALOW_MIN, CFG_LATENCY_FLAGS_ULTRALOW_MAX), - REG_VARIABLE(CFG_BTM_ENABLE_NAME, WLAN_PARAM_HexInteger, - struct hdd_config, btm_offload_config, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_BTM_ENABLE_DEFAULT, - CFG_BTM_ENABLE_MIN, - CFG_BTM_ENABLE_MAX), - #ifdef WLAN_FEATURE_SAE REG_VARIABLE(CFG_IS_SAE_ENABLED_NAME, WLAN_PARAM_Integer, struct hdd_config, is_sae_enabled, @@ -1149,27 +1142,6 @@ struct reg_table_entry g_registry_table[] = { CFG_IS_SAE_ENABLED_MAX), #endif - REG_VARIABLE(CFG_BTM_SOLICITED_TIMEOUT, WLAN_PARAM_Integer, - struct hdd_config, btm_solicited_timeout, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_BTM_SOLICITED_TIMEOUT_DEFAULT, - CFG_BTM_SOLICITED_TIMEOUT_MIN, - CFG_BTM_SOLICITED_TIMEOUT_MAX), - - REG_VARIABLE(CFG_BTM_MAX_ATTEMPT_CNT, WLAN_PARAM_Integer, - struct hdd_config, btm_max_attempt_cnt, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_BTM_MAX_ATTEMPT_CNT_DEFAULT, - CFG_BTM_MAX_ATTEMPT_CNT_MIN, - CFG_BTM_MAX_ATTEMPT_CNT_MAX), - - REG_VARIABLE(CFG_BTM_STICKY_TIME, WLAN_PARAM_Integer, - struct hdd_config, btm_sticky_time, - VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, - CFG_BTM_STICKY_TIME_DEFAULT, - CFG_BTM_STICKY_TIME_MIN, - CFG_BTM_STICKY_TIME_MAX), - REG_VARIABLE(CFG_ENABLE_GCMP_NAME, WLAN_PARAM_Integer, struct hdd_config, gcmp_enabled, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -2952,15 +2924,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx) smeConfig->csrConfig.is_force_1x1 = hdd_ctx->config->is_force_1x1; - - smeConfig->csrConfig.btm_offload_config = - hdd_ctx->config->btm_offload_config; - smeConfig->csrConfig.btm_solicited_timeout = - hdd_ctx->config->btm_solicited_timeout; - smeConfig->csrConfig.btm_max_attempt_cnt = - hdd_ctx->config->btm_max_attempt_cnt; - smeConfig->csrConfig.btm_sticky_time = - hdd_ctx->config->btm_sticky_time; hdd_set_sme_cfgs_related_to_plcy_mgr(hdd_ctx, smeConfig); hdd_update_11k_offload_params(hdd_ctx->config, &smeConfig->csrConfig); diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h index 0d7813aa67..5325ca4da2 100644 --- a/core/sme/inc/csr_api.h +++ b/core/sme/inc/csr_api.h @@ -1139,10 +1139,6 @@ typedef struct tagCsrConfigParam { uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL]; bool is_force_1x1; uint8_t oce_feature_bitmap; - uint32_t btm_offload_config; - uint32_t btm_solicited_timeout; - uint32_t btm_max_attempt_cnt; - uint32_t btm_sticky_time; uint32_t offload_11k_enable_bitmask; bool wep_tkip_in_he; struct csr_neighbor_report_offload_params neighbor_report_offload; diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h index 949d0aba34..5e59aac503 100644 --- a/core/sme/inc/csr_internal.h +++ b/core/sme/inc/csr_internal.h @@ -466,10 +466,6 @@ struct csr_config { uint16_t wlm_latency_level; uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL]; uint8_t oce_feature_bitmap; - uint32_t btm_offload_config; - uint32_t btm_solicited_timeout; - uint32_t btm_max_attempt_cnt; - uint32_t btm_sticky_time; uint32_t offload_11k_enable_bitmask; bool wep_tkip_in_he; struct csr_neighbor_report_offload_params neighbor_report_offload; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 4d66e4492c..0dbdfba9b9 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -2739,15 +2739,6 @@ QDF_STATUS csr_change_default_config_param(struct mac_context *mac, mac->roam.configParam.roam_force_rssi_trigger = pParam->roam_force_rssi_trigger; - mac->roam.configParam.btm_offload_config = - pParam->btm_offload_config; - mac->roam.configParam.btm_solicited_timeout = - pParam->btm_solicited_timeout; - mac->roam.configParam.btm_max_attempt_cnt = - pParam->btm_max_attempt_cnt; - mac->roam.configParam.btm_sticky_time = - pParam->btm_sticky_time; - csr_update_he_config_param(mac, pParam); csr_set_11k_offload_config_param(&mac->roam.configParam, pParam); @@ -2890,12 +2881,6 @@ QDF_STATUS csr_get_config_param(struct mac_context *mac, tCsrConfigParam *pParam pParam->oce_feature_bitmap = mac->roam.configParam.oce_feature_bitmap; pParam->roam_force_rssi_trigger = cfg_params->roam_force_rssi_trigger; - pParam->btm_offload_config = mac->roam.configParam.btm_offload_config; - pParam->btm_solicited_timeout = - mac->roam.configParam.btm_solicited_timeout; - pParam->btm_max_attempt_cnt = - mac->roam.configParam.btm_max_attempt_cnt; - pParam->btm_sticky_time = mac->roam.configParam.btm_sticky_time; csr_get_he_config_param(pParam, mac); @@ -18252,14 +18237,14 @@ csr_create_roam_scan_offload_request(struct mac_context *mac_ctx, req_buf->btm_offload_config = 0; else req_buf->btm_offload_config = - mac_ctx->roam.configParam.btm_offload_config; + mac_ctx->mlme_cfg->btm.btm_offload_config; req_buf->btm_solicited_timeout = - mac_ctx->roam.configParam.btm_solicited_timeout; + mac_ctx->mlme_cfg->btm.btm_solicited_timeout; req_buf->btm_max_attempt_cnt = - mac_ctx->roam.configParam.btm_max_attempt_cnt; + mac_ctx->mlme_cfg->btm.btm_max_attempt_cnt; req_buf->btm_sticky_time = - mac_ctx->roam.configParam.btm_sticky_time; + mac_ctx->mlme_cfg->btm.btm_sticky_time; #ifdef WLAN_FEATURE_ROAM_OFFLOAD QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,