Browse Source

qcacld-3.0: Add new ini to enable/disable FT open feature

Add new ini item "enable_ftopen" to enable/disable FT open
feature. There is no ini currently to disable only FT open.

Change-Id: I18280d9de77857b15698eb233ba4ec71089beb06
CRs-Fixed: 2214766
Abhinav Kumar 7 years ago
parent
commit
271f063980

+ 23 - 0
core/hdd/inc/wlan_hdd_cfg.h

@@ -2041,6 +2041,28 @@ enum hdd_dot11_mode {
 #define CFG_ROAM_DENSE_RSSI_THRE_OFFSET_MAX     (20)
 #define CFG_ROAM_DENSE_RSSI_THRE_OFFSET_DEFAULT (10)
 
+/*
+ * <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
@@ -14765,6 +14787,7 @@ struct hdd_config {
 	uint8_t enable_tx_sch_delay;
 	HDD_GREEN_AP_CFG_FIELDS
 	bool is_unit_test_framework_enabled;
+	bool enable_ftopen;
 };
 
 #define VAR_OFFSET(_Struct, _Var) (offsetof(_Struct, _Var))

+ 12 - 0
core/hdd/src/wlan_hdd_cfg.c

@@ -5328,6 +5328,13 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_ENABLE_UINT_TEST_FRAMEWORK_DEFAULT,
 		     CFG_ENABLE_UNIT_TEST_FRAMEWORK_MIN,
 		     CFG_ENABLE_UNIT_TEST_FRAMEWORK_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),
 };
 
 
@@ -7204,6 +7211,9 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx)
 	hdd_debug("Name = [%s] value = [0x%x]",
 		  CFG_ENABLE_UNIT_TEST_FRAMEWORK_NAME,
 		  hdd_ctx->config->is_unit_test_framework_enabled);
+	hdd_debug("Name = [%s] Value = [%u]",
+		  CFG_ROAM_FT_OPEN_ENABLE_NAME,
+		  hdd_ctx->config->enable_ftopen);
 }
 
 
@@ -8799,6 +8809,8 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
 			hdd_ctx->config->scan_adaptive_dwell_mode_nc;
 	smeConfig->csrConfig.roamscan_adaptive_dwell_mode =
 			hdd_ctx->config->roamscan_adaptive_dwell_mode;
+	smeConfig->csrConfig.enable_ftopen =
+			hdd_ctx->config->enable_ftopen;
 
 	hdd_update_per_config_to_sme(hdd_ctx, smeConfig);
 

+ 1 - 0
core/mac/inc/sir_api.h

@@ -2894,6 +2894,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;

+ 1 - 0
core/sme/inc/csr_api.h

@@ -1306,6 +1306,7 @@ typedef struct tagCsrConfigParam {
 	uint32_t offload_11k_enable_bitmask;
 	bool wep_tkip_in_he;
 	struct csr_neighbor_report_offload_params neighbor_report_offload;
+	bool enable_ftopen;
 } tCsrConfigParam;
 
 /* Tush */

+ 1 - 0
core/sme/inc/csr_internal.h

@@ -610,6 +610,7 @@ struct csr_config {
 	uint32_t offload_11k_enable_bitmask;
 	bool wep_tkip_in_he;
 	struct csr_neighbor_report_offload_params neighbor_report_offload;
+	bool enable_ftopen;
 };
 
 struct csr_channel_powerinfo {

+ 3 - 2
core/sme/inc/csr_support.h

@@ -357,8 +357,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 QDF_OPMODE currBssPersona);
-bool csr_is_profile11r(struct csr_roam_profile *pProfile);
-bool csr_is_auth_type11r(eCsrAuthType AuthType, uint8_t mdiePresent);
+bool csr_is_profile11r(tpAniSirGlobal mac, struct csr_roam_profile *pProfile);
+bool csr_is_auth_type11r(tpAniSirGlobal mac, eCsrAuthType AuthType,
+			 uint8_t mdiePresent);
 #ifdef FEATURE_WLAN_ESE
 bool csr_is_profile_ese(struct csr_roam_profile *pProfile);
 #endif

+ 7 - 3
core/sme/src/csr/csr_api_roam.c

@@ -2988,6 +2988,8 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
 			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 =
@@ -3308,6 +3310,7 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
 	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 =
@@ -15479,7 +15482,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 ==
@@ -18271,9 +18274,10 @@ 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,
+			"IsEseAssoc: %d is_11r_assoc: %d middle of roaming: %d ese_neighbor_list_recvd: %d cur no of chan: %d",
+			req_buf->IsESEAssoc, req_buf->is_11r_assoc,
 			req_buf->middle_of_roaming,
 			ese_neighbor_list_recvd,
 			curr_ch_lst_info->numOfChannels);

+ 1 - 1
core/sme/src/csr/csr_neighbor_roam.c

@@ -1000,7 +1000,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;

+ 8 - 4
core/sme/src/csr/csr_util.c

@@ -2701,16 +2701,19 @@ 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)
+		if (mdie_present &&
+		    mac->roam.configParam.enable_ftopen)
 			return true;
 		break;
 	case eCSR_AUTH_TYPE_FT_RSN_PSK:
@@ -2723,9 +2726,10 @@ 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(struct csr_roam_profile *pProfile)
+bool csr_is_profile11r(tpAniSirGlobal mac,
+			struct csr_roam_profile *pProfile)
 {
-	return csr_is_auth_type11r(pProfile->negotiatedAuthType,
+	return csr_is_auth_type11r(mac, pProfile->negotiatedAuthType,
 				   pProfile->MDID.mdiePresent);
 }
 

+ 1 - 0
core/wma/src/wma_scan_roam.c

@@ -360,6 +360,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;