Просмотр исходного кода

qcacld-3.0: Add support to enable/disable FILS runtime

Currently, FILS feature is enabled with ini parameter
[is_fils_enabled] at init time. This change adds support
to enable disable FILS from vendor command.

Change-Id: I0c84d777a6259c96233a4777f184ddf6f7bc58af
CRs-Fixed: 2121214
Vignesh Viswanathan 7 лет назад
Родитель
Сommit
32761e468e

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

@@ -8857,6 +8857,8 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
 			hdd_ctx->config->rx_aggregation_size;
 	smeConfig->csrConfig.enable_bcast_probe_rsp =
 			hdd_ctx->config->enable_bcast_probe_rsp;
+	smeConfig->csrConfig.is_fils_enabled =
+			hdd_ctx->config->is_fils_enabled;
 	smeConfig->csrConfig.qcn_ie_support =
 			hdd_ctx->config->qcn_ie_support;
 	smeConfig->csrConfig.fils_max_chan_guard_time =

+ 16 - 0
core/hdd/src/wlan_hdd_cfg80211.c

@@ -6690,6 +6690,22 @@ __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
 			return -EINVAL;
 		}
 	}
+	if (adapter->device_mode == QDF_STA_MODE &&
+	    tb[QCA_WLAN_VENDOR_ATTR_CONFIG_DISABLE_FILS]) {
+		uint8_t disable_fils;
+
+		disable_fils = nla_get_u8(tb[
+			QCA_WLAN_VENDOR_ATTR_CONFIG_DISABLE_FILS]);
+		hdd_debug("Set disable_fils - %d", disable_fils);
+
+		qdf_status = sme_update_fils_setting(hdd_ctx->hHal,
+						     adapter->session_id,
+						     disable_fils);
+		if (qdf_status != QDF_STATUS_SUCCESS) {
+			hdd_err("set disable_fils failed");
+			ret_val = -EINVAL;
+		}
+	}
 
 	return ret_val;
 }

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

@@ -1340,6 +1340,7 @@ typedef struct tagCsrConfigParam {
 	uint32_t rx_aggregation_size;
 	struct wmi_per_roam_config per_roam_config;
 	bool enable_bcast_probe_rsp;
+	bool is_fils_enabled;
 #ifdef WLAN_FEATURE_11AX
 	bool enable_ul_ofdma;
 	bool enable_ul_mimo;

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

@@ -617,6 +617,7 @@ struct csr_config {
 	uint32_t rx_aggregation_size;
 	struct wmi_per_roam_config per_roam_config;
 	bool enable_bcast_probe_rsp;
+	bool is_fils_enabled;
 #ifdef WLAN_FEATURE_11AX
 	bool enable_ul_ofdma;
 	bool enable_ul_mimo;

+ 10 - 0
core/sme/inc/sme_api.h

@@ -1297,6 +1297,16 @@ QDF_STATUS sme_set_default_scan_ie(tHalHandle hal, uint16_t session_id,
 QDF_STATUS sme_update_session_param(tHalHandle hal, uint8_t session_id,
 		uint32_t param_type, uint32_t param_val);
 
+/**
+ * sme_update_fils_setting() - API to update PE FILS setting
+ * @hal: HAL handle for device
+ * @session_id: Session ID
+ * @param_val: Param value to be update
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS sme_update_fils_setting(tHalHandle hal, uint8_t session_id,
+				   uint8_t param_val);
 #ifdef WLAN_FEATURE_DISA
 /**
  * sme_encrypt_decrypt_msg() - handles encrypt/decrypt mesaage

+ 21 - 2
core/sme/src/common/sme_api.c

@@ -6470,8 +6470,27 @@ QDF_STATUS sme_set_tx_power(tHalHandle hHal, uint8_t sessionId,
 	return QDF_STATUS_SUCCESS;
 }
 
-QDF_STATUS sme_update_session_param(tHalHandle hal,
-						uint8_t session_id,
+QDF_STATUS sme_update_fils_setting(tHalHandle hal, uint8_t session_id,
+				   uint8_t param_val)
+{
+	QDF_STATUS status;
+	tpAniSirGlobal pMac = PMAC_STRUCT(hal);
+
+	pMac->roam.configParam.is_fils_enabled = !param_val;
+
+	pMac->roam.configParam.enable_bcast_probe_rsp = !param_val;
+	status = wma_cli_set_command((int)session_id,
+			(int)WMI_VDEV_PARAM_ENABLE_BCAST_PROBE_RESPONSE,
+			!param_val, VDEV_CMD);
+	if (status)
+		QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
+			"%s: Failed to set enable bcast probe setting",
+			__func__);
+
+	return status;
+}
+
+QDF_STATUS sme_update_session_param(tHalHandle hal, uint8_t session_id,
 			uint32_t param_type, uint32_t param_val)
 {
 	QDF_STATUS status = QDF_STATUS_SUCCESS;

+ 4 - 0
core/sme/src/csr/csr_api_roam.c

@@ -2928,6 +2928,8 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
 			pParam->rx_aggregation_size;
 		pMac->roam.configParam.enable_bcast_probe_rsp =
 			pParam->enable_bcast_probe_rsp;
+		pMac->roam.configParam.is_fils_enabled =
+			pParam->is_fils_enabled;
 		pMac->roam.configParam.qcn_ie_support =
 			pParam->qcn_ie_support;
 		pMac->roam.configParam.fils_max_chan_guard_time =
@@ -3189,6 +3191,8 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
 		pMac->roam.configParam.rx_aggregation_size;
 	pParam->enable_bcast_probe_rsp =
 		pMac->roam.configParam.enable_bcast_probe_rsp;
+	pParam->is_fils_enabled =
+		pMac->roam.configParam.is_fils_enabled;
 	pParam->qcn_ie_support =
 		pMac->roam.configParam.qcn_ie_support;
 	pParam->fils_max_chan_guard_time =