summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/hdd/inc/wlan_hdd_cfg.h23
-rw-r--r--core/hdd/src/wlan_hdd_cfg.c12
-rw-r--r--core/mac/inc/sir_api.h1
-rw-r--r--core/sme/inc/csr_api.h1
-rw-r--r--core/sme/inc/csr_internal.h1
-rw-r--r--core/sme/inc/csr_support.h7
-rw-r--r--core/sme/src/csr/csr_api_roam.c9
-rw-r--r--core/sme/src/csr/csr_neighbor_roam.c2
-rw-r--r--core/sme/src/csr/csr_util.c13
-rw-r--r--core/wma/src/wma_scan_roam.c1
10 files changed, 57 insertions, 13 deletions
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index 3e6f3b24913b..64a5443bd6c9 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -2102,6 +2102,28 @@ enum hdd_dot11_mode {
/*
* <ini>
+ * enable_ftopen - enable/disable FT open feature
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * This INI is used to enable/disable FT open feature
+ *
+ * Related: None
+ *
+ * Supported Feature: Roaming
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ROAM_FT_OPEN_ENABLE_NAME "enable_ftopen"
+#define CFG_ROAM_FT_OPEN_ENABLE_MIN (0)
+#define CFG_ROAM_FT_OPEN_ENABLE_MAX (1)
+#define CFG_ROAM_FT_OPEN_ENABLE_DEFAULT (1)
+
+/*
+ * <ini>
* groam_dense_min_aps - Sets minimum number of AP for dense roam
* @Min: 1
* @Max: 5
@@ -15250,6 +15272,7 @@ struct hdd_config {
bool is_sae_enabled;
#endif
bool enable_rtt_mac_randomization;
+ bool enable_ftopen;
};
#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 30c2d8588019..0fefec720ea5 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -4074,6 +4074,13 @@ struct reg_table_entry g_registry_table[] = {
CFG_ROAM_DENSE_RSSI_THRE_OFFSET_MIN,
CFG_ROAM_DENSE_RSSI_THRE_OFFSET_MAX),
+ REG_VARIABLE(CFG_ROAM_FT_OPEN_ENABLE_NAME, WLAN_PARAM_Integer,
+ struct hdd_config, enable_ftopen,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ROAM_FT_OPEN_ENABLE_DEFAULT,
+ CFG_ROAM_FT_OPEN_ENABLE_MIN,
+ CFG_ROAM_FT_OPEN_ENABLE_MAX),
+
REG_VARIABLE(CFG_IGNORE_PEER_HT_MODE_NAME, WLAN_PARAM_Integer,
struct hdd_config, ignore_peer_ht_opmode,
VAR_FLAGS_OPTIONAL |
@@ -7097,6 +7104,9 @@ void hdd_cfg_print(hdd_context_t *pHddCtx)
CFG_ROAM_BG_SCAN_BAD_RSSI_OFFSET_2G_NAME,
pHddCtx->config->roam_bad_rssi_thresh_offset_2g);
hdd_debug("Name = [%s] Value = [%u]",
+ CFG_ROAM_FT_OPEN_ENABLE_NAME,
+ pHddCtx->config->enable_ftopen);
+ hdd_debug("Name = [%s] Value = [%u]",
CFG_MIN_REST_TIME_NAME,
pHddCtx->config->min_rest_time_conc);
hdd_debug("Name = [%s] Value = [%u]",
@@ -9953,6 +9963,8 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
pHddCtx->config->roam_bg_scan_client_bitmap;
smeConfig->csrConfig.roam_bad_rssi_thresh_offset_2g =
pHddCtx->config->roam_bad_rssi_thresh_offset_2g;
+ smeConfig->csrConfig.enable_ftopen =
+ pHddCtx->config->enable_ftopen;
smeConfig->csrConfig.obss_width_interval =
pHddCtx->config->obss_width_trigger_interval;
smeConfig->csrConfig.obss_active_dwelltime =
diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h
index c43a179c4be5..2c6eebcc754f 100644
--- a/core/mac/inc/sir_api.h
+++ b/core/mac/inc/sir_api.h
@@ -3608,6 +3608,7 @@ typedef struct sSirRoamOffloadScanReq {
uint8_t ValidChannelCount;
uint8_t ValidChannelList[SIR_ROAM_MAX_CHANNELS];
bool IsESEAssoc;
+ bool is_11r_assoc;
uint8_t nProbes;
uint16_t HomeAwayTime;
tSirRoamNetworkType ConnectedNetwork;
diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h
index 682ca6e4ef40..729f20a0caa9 100644
--- a/core/sme/inc/csr_api.h
+++ b/core/sme/inc/csr_api.h
@@ -1405,6 +1405,7 @@ typedef struct tagCsrConfigParam {
uint8_t oce_feature_bitmap;
uint32_t offload_11k_enable_bitmask;
struct csr_neighbor_report_offload_params neighbor_report_offload;
+ bool enable_ftopen;
} tCsrConfigParam;
/* Tush */
diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h
index 6ce321ae7b79..416d8969047d 100644
--- a/core/sme/inc/csr_internal.h
+++ b/core/sme/inc/csr_internal.h
@@ -683,6 +683,7 @@ typedef struct tagCsrConfig {
uint8_t oce_feature_bitmap;
uint32_t offload_11k_enable_bitmask;
struct csr_neighbor_report_offload_params neighbor_report_offload;
+ bool enable_ftopen;
} tCsrConfig;
typedef struct tagCsrChannelPowerInfo {
diff --git a/core/sme/inc/csr_support.h b/core/sme/inc/csr_support.h
index 532fe5aa227b..db47ec47c13f 100644
--- a/core/sme/inc/csr_support.h
+++ b/core/sme/inc/csr_support.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -366,8 +366,9 @@ QDF_STATUS csr_reassoc(tpAniSirGlobal pMac, uint32_t sessionId,
QDF_STATUS csr_validate_mcc_beacon_interval(tpAniSirGlobal pMac, uint8_t channelId,
uint16_t *beaconInterval, uint32_t cursessionId,
enum tQDF_ADAPTER_MODE currBssPersona);
-bool csr_is_profile11r(tCsrRoamProfile *pProfile);
-bool csr_is_auth_type11r(eCsrAuthType AuthType, uint8_t mdiePresent);
+bool csr_is_profile11r(tpAniSirGlobal mac, tCsrRoamProfile *pProfile);
+bool csr_is_auth_type11r(tpAniSirGlobal mac, eCsrAuthType AuthType,
+ uint8_t mdiePresent);
#ifdef FEATURE_WLAN_ESE
bool csr_is_profile_ese(tCsrRoamProfile *pProfile);
#endif
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index 4170293555de..61e254b4b7d9 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -1998,7 +1998,6 @@ bool csr_roam_is_ese_assoc(tpAniSirGlobal mac_ctx, uint32_t session_id)
return mac_ctx->roam.neighborRoamInfo[session_id].isESEAssoc;
}
-
/**
* csr_roam_is_ese_ini_feature_enabled() - is ese feature enabled
* @mac_ctx: Global MAC context
@@ -2875,7 +2874,8 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
pMac->roam.configParam.roam_params.
roam_bad_rssi_thresh_offset_2g =
pParam->roam_bad_rssi_thresh_offset_2g;
-
+ pMac->roam.configParam.enable_ftopen =
+ pParam->enable_ftopen;
pMac->roam.configParam.scan_adaptive_dwell_mode =
pParam->scan_adaptive_dwell_mode;
pMac->roam.configParam.scan_adaptive_dwell_mode_nc =
@@ -3189,7 +3189,7 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
cfg_params->roam_params.bg_scan_client_bitmap;
pParam->roam_bad_rssi_thresh_offset_2g =
cfg_params->roam_params.roam_bad_rssi_thresh_offset_2g;
-
+ pParam->enable_ftopen = cfg_params->enable_ftopen;
pParam->scan_adaptive_dwell_mode =
cfg_params->scan_adaptive_dwell_mode;
pParam->scan_adaptive_dwell_mode_nc =
@@ -15498,7 +15498,7 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
ese_config = pMac->roam.configParam.isEseIniFeatureEnabled;
#endif
pProfile->MDID.mdiePresent = pBssDescription->mdiePresent;
- if (csr_is_profile11r(pProfile)
+ if (csr_is_profile11r(pMac, pProfile)
#ifdef FEATURE_WLAN_ESE
&&
!((pProfile->negotiatedAuthType ==
@@ -18805,6 +18805,7 @@ csr_create_roam_scan_offload_request(tpAniSirGlobal mac_ctx,
eCSR_AUTH_TYPE_OPEN_SYSTEM) ||
(csr_is_auth_type_ese(req_buf->
ConnectedNetwork.authentication)));
+ req_buf->is_11r_assoc = roam_info->is11rAssoc;
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
"IsEseAssoc: %d middle of roaming: %d ese_neighbor_list_recvd: %d cur no of chan: %d",
req_buf->IsESEAssoc,
diff --git a/core/sme/src/csr/csr_neighbor_roam.c b/core/sme/src/csr/csr_neighbor_roam.c
index 8dd6bda7ef6c..0e6d736d18ab 100644
--- a/core/sme/src/csr/csr_neighbor_roam.c
+++ b/core/sme/src/csr/csr_neighbor_roam.c
@@ -989,7 +989,7 @@ static void csr_neighbor_roam_info_ctx_init(
/* Based on the auth scheme tell if we are 11r */
if (csr_is_auth_type11r
- (session->connectedProfile.AuthType,
+ (pMac, session->connectedProfile.AuthType,
session->connectedProfile.MDID.mdiePresent)) {
if (pMac->roam.configParam.isFastTransitionEnabled)
init_ft_flag = true;
diff --git a/core/sme/src/csr/csr_util.c b/core/sme/src/csr/csr_util.c
index fafb217e30df..300443049801 100644
--- a/core/sme/src/csr/csr_util.c
+++ b/core/sme/src/csr/csr_util.c
@@ -2405,17 +2405,20 @@ QDF_STATUS csr_validate_mcc_beacon_interval(tpAniSirGlobal mac_ctx,
/**
* csr_is_auth_type11r() - Check if Authentication type is 11R
+ * @mac: pointer to mac context
* @auth_type: The authentication type that is used to make the connection
* @mdie_present: Is MDIE IE present
*
* Return: true if is 11R auth type, false otherwise
*/
-bool csr_is_auth_type11r(eCsrAuthType auth_type, uint8_t mdie_present)
+bool csr_is_auth_type11r(tpAniSirGlobal mac, eCsrAuthType auth_type,
+ uint8_t mdie_present)
{
switch (auth_type) {
case eCSR_AUTH_TYPE_OPEN_SYSTEM:
- if (mdie_present)
- return true;
+ if (mdie_present &&
+ mac->roam.configParam.enable_ftopen)
+ return true;
break;
case eCSR_AUTH_TYPE_FT_RSN_PSK:
case eCSR_AUTH_TYPE_FT_RSN:
@@ -2427,9 +2430,9 @@ bool csr_is_auth_type11r(eCsrAuthType auth_type, uint8_t mdie_present)
}
/* Function to return true if the profile is 11r */
-bool csr_is_profile11r(tCsrRoamProfile *pProfile)
+bool csr_is_profile11r(tpAniSirGlobal mac, tCsrRoamProfile *pProfile)
{
- return csr_is_auth_type11r(pProfile->negotiatedAuthType,
+ return csr_is_auth_type11r(mac, pProfile->negotiatedAuthType,
pProfile->MDID.mdiePresent);
}
diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c
index a1d4e7350b02..a29696fc225b 100644
--- a/core/wma/src/wma_scan_roam.c
+++ b/core/wma/src/wma_scan_roam.c
@@ -969,6 +969,7 @@ QDF_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle,
params->fw_pmksa_cache = roam_req->pmkid_modes.fw_pmksa_cache;
#endif
params->is_ese_assoc = roam_req->IsESEAssoc;
+ params->is_11r_assoc = roam_req->is_11r_assoc;
params->mdid.mdie_present = roam_req->MDID.mdiePresent;
params->mdid.mobility_domain = roam_req->MDID.mobilityDomain;
params->assoc_ie_length = roam_req->assoc_ie.length;