summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSelvaraj, Sridhar <sselvara@codeaurora.org>2017-01-20 17:06:34 +0530
committerqcabuildsw <qcabuildsw@localhost>2017-02-24 06:15:30 -0800
commit8ac2f4363e2e9516f9eb30ac86eeac05319711ce (patch)
tree7769c34047ed3d09c51f44ec946c785a21dea8f0
parent247cc865c8fa1e6b94a87e6480646f712898c781 (diff)
qcacld-3.0: Add "g_fils_max_chan_guard_time" INI and pass it to firmware
Add "g_fils_max_chan_guard_time" INI and pass the configured value to firmware for STA vdev as part of vdev attach. Based on this INI, firmware will calculate the dwell time while sending in probe request. Change-Id: I2336a7e0a37181ea00ef117e9907e7eaf194ae3d CRs-Fixed: 1114057
-rw-r--r--core/hdd/inc/wlan_hdd_cfg.h23
-rw-r--r--core/hdd/src/wlan_hdd_cfg.c8
-rw-r--r--core/sme/inc/csr_api.h1
-rw-r--r--core/sme/inc/csr_internal.h1
-rw-r--r--core/sme/src/csr/csr_api_roam.c6
-rw-r--r--core/wma/inc/wma_if.h2
-rw-r--r--core/wma/src/wma_dev_if.c8
7 files changed, 49 insertions, 0 deletions
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index 61aa45bfcd88..42552d518fb5 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -9620,6 +9620,28 @@ enum dot11p_mode {
#define CFG_QCN_IE_SUPPORT_MAX 1
#define CFG_QCN_IE_SUPPORT_DEFAULT 0
+/*
+ * <ini>
+ * g_fils_max_chan_guard_time - Set maximum channel guard time(ms)
+ * @Min: 0
+ * @Max: 10
+ * @Default: 0
+ *
+ * This ini is used to set maximum channel guard time in milli seconds
+ *
+ * Related: None
+ *
+ * Supported Feature: FILS
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_FILS_MAX_CHAN_GUARD_TIME_NAME "g_fils_max_chan_guard_time"
+#define CFG_FILS_MAX_CHAN_GUARD_TIME_MIN (0)
+#define CFG_FILS_MAX_CHAN_GUARD_TIME_MAX (10)
+#define CFG_FILS_MAX_CHAN_GUARD_TIME_DEFAULT (0)
+
/*---------------------------------------------------------------------------
Type declarations
-------------------------------------------------------------------------*/
@@ -10330,6 +10352,7 @@ struct hdd_config {
bool sap_internal_restart;
bool enable_bcast_probe_rsp;
bool qcn_ie_support;
+ uint8_t fils_max_chan_guard_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 232001926ae4..91ec80b5c791 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -4291,6 +4291,12 @@ REG_TABLE_ENTRY g_registry_table[] = {
CFG_QCN_IE_SUPPORT_DEFAULT,
CFG_QCN_IE_SUPPORT_MIN,
CFG_QCN_IE_SUPPORT_MAX),
+ REG_VARIABLE(CFG_FILS_MAX_CHAN_GUARD_TIME_NAME, WLAN_PARAM_Integer,
+ struct hdd_config, fils_max_chan_guard_time,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_FILS_MAX_CHAN_GUARD_TIME_DEFAULT,
+ CFG_FILS_MAX_CHAN_GUARD_TIME_MIN,
+ CFG_FILS_MAX_CHAN_GUARD_TIME_MAX),
};
/**
@@ -7327,6 +7333,8 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
pHddCtx->config->enable_bcast_probe_rsp;
smeConfig->csrConfig.qcn_ie_support =
pHddCtx->config->qcn_ie_support;
+ smeConfig->csrConfig.fils_max_chan_guard_time =
+ pHddCtx->config->fils_max_chan_guard_time;
status = sme_update_config(pHddCtx->hHal, smeConfig);
if (!QDF_IS_STATUS_SUCCESS(status)) {
diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h
index 9e70e4375b58..a069f5861d77 100644
--- a/core/sme/inc/csr_api.h
+++ b/core/sme/inc/csr_api.h
@@ -1315,6 +1315,7 @@ typedef struct tagCsrConfigParam {
struct wmi_per_roam_config per_roam_config;
bool enable_bcast_probe_rsp;
bool qcn_ie_support;
+ uint8_t fils_max_chan_guard_time;
} tCsrConfigParam;
/* Tush */
diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h
index 6f5af6a2a538..f58dbcf52c85 100644
--- a/core/sme/inc/csr_internal.h
+++ b/core/sme/inc/csr_internal.h
@@ -665,6 +665,7 @@ typedef struct tagCsrConfig {
struct wmi_per_roam_config per_roam_config;
bool enable_bcast_probe_rsp;
bool qcn_ie_support;
+ uint8_t fils_max_chan_guard_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 01aad375ca0e..b2167089d731 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -2626,6 +2626,8 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
pParam->enable_bcast_probe_rsp;
pMac->roam.configParam.qcn_ie_support =
pParam->qcn_ie_support;
+ pMac->roam.configParam.fils_max_chan_guard_time =
+ pParam->fils_max_chan_guard_time;
}
return status;
@@ -2864,6 +2866,8 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
pMac->roam.configParam.enable_bcast_probe_rsp;
pParam->qcn_ie_support =
pMac->roam.configParam.qcn_ie_support;
+ pParam->fils_max_chan_guard_time =
+ pMac->roam.configParam.fils_max_chan_guard_time;
return QDF_STATUS_SUCCESS;
}
@@ -15409,6 +15413,8 @@ QDF_STATUS csr_process_add_sta_session_command(tpAniSirGlobal pMac,
pMac->roam.configParam.rx_aggregation_size;
add_sta_self_req->enable_bcast_probe_rsp =
pMac->roam.configParam.enable_bcast_probe_rsp;
+ add_sta_self_req->fils_max_chan_guard_time =
+ pMac->roam.configParam.fils_max_chan_guard_time;
msg.type = WMA_ADD_STA_SELF_REQ;
msg.reserved = 0;
diff --git a/core/wma/inc/wma_if.h b/core/wma/inc/wma_if.h
index 5ce20c4c4272..ad68492d4209 100644
--- a/core/wma/inc/wma_if.h
+++ b/core/wma/inc/wma_if.h
@@ -1149,6 +1149,7 @@ typedef struct sMaxTxPowerPerBandParams {
* @tx_aggregation_size: Tx aggregation size
* @rx_aggregation_size: Rx aggregation size
* @enable_bcast_probe_rsp: enable broadcast probe response
+ * @fils_max_chan_guard_time: FILS max channel guard time
*/
struct add_sta_self_params {
tSirMacAddr self_mac_addr;
@@ -1162,6 +1163,7 @@ struct add_sta_self_params {
uint32_t tx_aggregation_size;
uint32_t rx_aggregation_size;
bool enable_bcast_probe_rsp;
+ uint8_t fils_max_chan_guard_time;
};
/**
diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c
index 1c2eb15cb784..3ddd0fce2fca 100644
--- a/core/wma/src/wma_dev_if.c
+++ b/core/wma/src/wma_dev_if.c
@@ -1897,6 +1897,14 @@ ol_txrx_vdev_handle wma_vdev_attach(tp_wma_handle wma_handle,
if (QDF_IS_STATUS_ERROR(ret))
WMA_LOGE("Failed to set WMI_VDEV_PARAM_ENABLE_BCAST_PROBE_RESPONSE");
+ /* Pass down the FILS max channel guard time to FW */
+ ret = wma_vdev_set_param(
+ wma_handle->wmi_handle,
+ self_sta_req->session_id,
+ WMI_VDEV_PARAM_FILS_MAX_CHANNEL_GUARD_TIME,
+ self_sta_req->fils_max_chan_guard_time);
+ if (QDF_IS_STATUS_ERROR(ret))
+ WMA_LOGE("Failed to set WMI_VDEV_PARAM_FILS_MAX_CHANNEL_GUARD_TIME");
}
/* Initialize BMISS parameters */