summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/hdd/inc/wlan_hdd_cfg.h71
-rw-r--r--core/hdd/src/wlan_hdd_cfg.c36
-rw-r--r--core/mac/inc/sir_api.h3
-rw-r--r--core/sme/inc/csr_api.h3
-rw-r--r--core/sme/inc/csr_internal.h3
-rw-r--r--core/sme/src/csr/csr_api_roam.c19
-rw-r--r--core/wma/src/wma_scan_roam.c3
7 files changed, 134 insertions, 4 deletions
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index 7cf3d59c1a19..677f8326e0ca 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -15251,7 +15251,9 @@ enum hw_filter_mode {
* 001 match if at least one top priority BSSID only
* 010, 011, 100, 101, 110, 111 reserved
*
- * BIT 6-31: Reserved
+ * BIT 6: Set this to 1 will send BTM query frame and 0 not sent.
+ *
+ * BIT 7-31: Reserved
*
* Supported Feature: STA
*
@@ -15262,7 +15264,69 @@ enum hw_filter_mode {
#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)
+#define CFG_BTM_ENABLE_DEFAULT (0x00000041)
+
+/*
+ * <ini>
+ * 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
+ *
+ * </ini>
+ */
+#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)
+
+/*
+ * <ini>
+ * 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
+ *
+ * </ini>
+ */
+#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)
+
+/*
+ * <ini>
+ * sticky_time - Stick time after roaming to new AP by BTM
+ * @Min: 1
+ * @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
+ *
+ * </ini>
+ */
+#define CFG_BTM_STICKY_TIME "btm_sticky_time"
+#define CFG_BTM_STICKY_TIME_MIN (0x00000001)
+#define CFG_BTM_STICKY_TIME_MAX (0x0000FFFF)
+#define CFG_BTM_STICKY_TIME_DEFAULT (300)
/*
* Type declarations
@@ -16215,6 +16279,9 @@ struct hdd_config {
uint32_t roam_preauth_no_ack_timeout;
uint32_t enable_rtt_support;
uint32_t btm_offload_config;
+ uint32_t btm_solicited_timeout;
+ uint32_t btm_max_attempt_cnt;
+ uint32_t btm_sticky_time;
};
#define VAR_OFFSET(_Struct, _Var) (offsetof(_Struct, _Var))
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index 073cbd01b5fe..66164c9b638c 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -5614,6 +5614,27 @@ 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_RTT_MAC_RANDOMIZATION_NAME,
WLAN_PARAM_Integer,
struct hdd_config, enable_rtt_mac_randomization,
@@ -7799,6 +7820,12 @@ void hdd_cfg_print(hdd_context_t *pHddCtx)
hdd_cfg_print_btc_params(pHddCtx);
hdd_debug("Name = [btm_offload_config] value = [0x%x]",
pHddCtx->config->btm_offload_config);
+ hdd_debug("Name = [btm_solicited_timeout] value = [0x%x]",
+ pHddCtx->config->btm_solicited_timeout);
+ hdd_debug("Name = [btm_max_attempt_cnt] value = [0x%x]",
+ pHddCtx->config->btm_max_attempt_cnt);
+ hdd_debug("Name = [btm_sticky_time] value = [0x%x]",
+ pHddCtx->config->btm_sticky_time);
}
/**
@@ -10491,8 +10518,15 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
(pConfig->rssi_assoc_reject_enabled *
WMI_VDEV_OCE_REASSOC_REJECT_FEATURE_BITMAP);
smeConfig->csrConfig.oce_feature_bitmap = val;
+
smeConfig->csrConfig.btm_offload_config =
- pHddCtx->config->btm_offload_config;
+ pHddCtx->config->btm_offload_config;
+ smeConfig->csrConfig.btm_solicited_timeout =
+ pHddCtx->config->btm_solicited_timeout;
+ smeConfig->csrConfig.btm_max_attempt_cnt =
+ pHddCtx->config->btm_max_attempt_cnt;
+ smeConfig->csrConfig.btm_sticky_time =
+ pHddCtx->config->btm_sticky_time;
hdd_update_bss_score_params(pHddCtx->config,
&smeConfig->csrConfig.bss_score_params);
diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h
index e4927079639e..dda588eed804 100644
--- a/core/mac/inc/sir_api.h
+++ b/core/mac/inc/sir_api.h
@@ -3724,6 +3724,9 @@ typedef struct sSirRoamOffloadScanReq {
bool roam_force_rssi_trigger;
bool roaming_scan_policy;
uint32_t btm_offload_config;
+ uint32_t btm_solicited_timeout;
+ uint32_t btm_max_attempt_cnt;
+ uint32_t btm_sticky_time;
} tSirRoamOffloadScanReq, *tpSirRoamOffloadScanReq;
typedef struct sSirRoamOffloadScanRsp {
diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h
index 2ca38ce4f1d5..0224ee61a8b5 100644
--- a/core/sme/inc/csr_api.h
+++ b/core/sme/inc/csr_api.h
@@ -1423,6 +1423,9 @@ typedef struct tagCsrConfigParam {
bool enable_ftopen;
bool roam_force_rssi_trigger;
uint32_t btm_offload_config;
+ uint32_t btm_solicited_timeout;
+ uint32_t btm_max_attempt_cnt;
+ uint32_t btm_sticky_time;
} tCsrConfigParam;
/* Tush */
diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h
index bb8518f23e1f..9cd4253196da 100644
--- a/core/sme/inc/csr_internal.h
+++ b/core/sme/inc/csr_internal.h
@@ -694,6 +694,9 @@ typedef struct tagCsrConfig {
bool roam_force_rssi_trigger;
bool roaming_scan_policy;
uint32_t btm_offload_config;
+ uint32_t btm_solicited_timeout;
+ uint32_t btm_max_attempt_cnt;
+ uint32_t btm_sticky_time;
} tCsrConfig;
typedef struct tagCsrChannelPowerInfo {
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index 237969895fc8..6d357c437278 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -3084,6 +3084,12 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
sizeof(struct sir_score_config));
pMac->roam.configParam.btm_offload_config =
pParam->btm_offload_config;
+ pMac->roam.configParam.btm_solicited_timeout =
+ pParam->btm_solicited_timeout;
+ pMac->roam.configParam.btm_max_attempt_cnt =
+ pParam->btm_max_attempt_cnt;
+ pMac->roam.configParam.btm_sticky_time =
+ pParam->btm_sticky_time;
csr_set_11k_offload_config_param(&pMac->roam.configParam,
pParam);
@@ -3425,6 +3431,11 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
&pMac->roam.configParam.bss_score_params,
sizeof(struct sir_score_config));
pParam->btm_offload_config = pMac->roam.configParam.btm_offload_config;
+ pParam->btm_solicited_timeout =
+ pMac->roam.configParam.btm_solicited_timeout;
+ pParam->btm_max_attempt_cnt =
+ pMac->roam.configParam.btm_max_attempt_cnt;
+ pParam->btm_sticky_time = pMac->roam.configParam.btm_sticky_time;
csr_get_11k_offload_config_param(&pMac->roam.configParam, pParam);
@@ -19776,7 +19787,13 @@ csr_create_roam_scan_offload_request(tpAniSirGlobal mac_ctx,
req_buf->lca_config_params.num_disallowed_aps =
mac_ctx->roam.configParam.num_disallowed_aps;
req_buf->btm_offload_config =
- mac_ctx->roam.configParam.btm_offload_config;
+ mac_ctx->roam.configParam.btm_offload_config;
+ req_buf->btm_solicited_timeout =
+ mac_ctx->roam.configParam.btm_solicited_timeout;
+ req_buf->btm_max_attempt_cnt =
+ mac_ctx->roam.configParam.btm_max_attempt_cnt;
+ req_buf->btm_sticky_time =
+ mac_ctx->roam.configParam.btm_sticky_time;
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c
index 5b785a8f699c..09063e5a1d76 100644
--- a/core/wma/src/wma_scan_roam.c
+++ b/core/wma/src/wma_scan_roam.c
@@ -2103,6 +2103,9 @@ static QDF_STATUS wma_roam_scan_btm_offload(tp_wma_handle wma_handle,
params->vdev_id = roam_req->sessionId;
params->btm_offload_config = roam_req->btm_offload_config;
+ params->btm_solicited_timeout = roam_req->btm_solicited_timeout;
+ params->btm_max_attempt_cnt = roam_req->btm_max_attempt_cnt;
+ params->btm_sticky_time = roam_req->btm_sticky_time;
status = wmi_unified_send_btm_config(wma_handle->wmi_handle, params);
qdf_mem_free(params);