diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c
index 208d9a200bcf..d36bf0ceb6c2 100644
--- a/components/mlme/core/src/wlan_mlme_main.c
+++ b/components/mlme/core/src/wlan_mlme_main.c
@@ -1887,9 +1887,14 @@ static void mlme_init_wps_params_cfg(struct wlan_objmgr_psoc *psoc,
&wps_params->wps_uuid.len);
}
-static void mlme_init_btm_cfg(struct wlan_mlme_btm *btm)
+static void mlme_init_btm_cfg(struct wlan_objmgr_psoc *psoc,
+ struct wlan_mlme_btm *btm)
{
btm->btm_offload_config = cfg_default(CFG_BTM_ENABLE);
+ btm->prefer_btm_query = cfg_get(psoc, CFG_PREFER_BTM_QUERY);
+ if (btm->prefer_btm_query)
+ MLME_SET_BIT(btm->btm_offload_config, BTM_OFFLOAD_CONFIG_BIT_8);
+
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);
@@ -2024,11 +2029,11 @@ 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);
mlme_init_fe_wlm_in_cfg(psoc, &mlme_cfg->wlm_config);
mlme_init_fe_rrm_in_cfg(psoc, &mlme_cfg->rrm_config);
mlme_init_mwc_cfg(psoc, &mlme_cfg->mwc);
mlme_init_reg_cfg(psoc, &mlme_cfg->reg);
+ mlme_init_btm_cfg(psoc, &mlme_cfg->btm);
return status;
}
diff --git a/components/mlme/dispatcher/inc/cfg_mlme_btm.h b/components/mlme/dispatcher/inc/cfg_mlme_btm.h
index f49a7fcc2e16..9d7ded6adb6d 100644
--- a/components/mlme/dispatcher/inc/cfg_mlme_btm.h
+++ b/components/mlme/dispatcher/inc/cfg_mlme_btm.h
@@ -23,6 +23,27 @@
#ifndef CFG_MLME_BTM_H_
#define CFG_MLME_BTM_H_
+/*
+ *
+ * prefer_btm_query - Prefer btm query over 11k neighbor report
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * This ini is used to enable the STA to send BTM query instead of
+ * 11k neighbor report.
+ *
+ * Supported Feature: STA
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_PREFER_BTM_QUERY CFG_INI_BOOL( \
+ "prefer_btm_query", \
+ 1, \
+ "prefer btm query over 11k neighbor report")
+
/*
*
* btm_offload_config - Configure BTM
@@ -139,6 +160,7 @@
"configure Stick time after roaming to new AP by BTM")
#define CFG_BTM_ALL \
+ CFG(CFG_PREFER_BTM_QUERY) \
CFG(CFG_BTM_ENABLE) \
CFG(CFG_BTM_SOLICITED_TIMEOUT) \
CFG(CFG_BTM_MAX_ATTEMPT_CNT) \
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
index 21e609c2800a..d6b6384557fd 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
+++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
@@ -1744,14 +1744,21 @@ struct wlan_mlme_wifi_pos_cfg {
uint32_t fine_time_meas_cap;
};
+#define MLME_SET_BIT(value, bit_offset) ((value) |= (1 << (bit_offset)))
+
+#define BTM_OFFLOAD_CONFIG_BIT_8 8
+#define BTM_OFFLOAD_CONFIG_BIT_7 7
+
/*
* struct wlan_mlme_btm - BTM related configs
+ * @prefer_btm_query: flag to prefer btm query over 11k
* @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 {
+ bool prefer_btm_query;
uint32_t btm_offload_config;
uint32_t btm_solicited_timeout;
uint32_t btm_max_attempt_cnt;