From 4f684bbaf238998e9664dfa0e8db17a70d034ff5 Mon Sep 17 00:00:00 2001 From: "Selvaraj, Sridhar" Date: Thu, 19 Jan 2017 15:59:23 +0530 Subject: [PATCH] qcacld-3.0: Add "g_enable_bcast_probe_rsp" INI and pass it to firmware Add "g_enable_bcast_probe_rsp" INI and pass the configured value to firmware for STA vdev as part of vdev attach. Based on this INI, firmware will send the dwell time IE in probe request. Change-Id: I446c7d7589534688e04579ed434de0803ed8b4ff CRs-Fixed: 1113498 --- core/hdd/inc/wlan_hdd_cfg.h | 23 +++++++++++++++++++++++ core/hdd/src/wlan_hdd_cfg.c | 9 ++++++++- core/sme/inc/csr_api.h | 1 + core/sme/inc/csr_internal.h | 1 + core/sme/src/csr/csr_api_roam.c | 6 ++++++ core/wma/inc/wma_if.h | 4 ++++ core/wma/src/wma_dev_if.c | 10 ++++++++++ 7 files changed, 53 insertions(+), 1 deletion(-) diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 5a61ae9dc6fc..28c7dc89a43c 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -9058,6 +9058,28 @@ enum hdd_wext_control { #define CFG_PER_ROAM_REST_TIME_MAX (3600) #define CFG_PER_ROAM_REST_TIME_DEFAULT (300) +/* + * + * g_enable_bcast_probe_rsp - Enable Broadcast probe response. + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * This ini is used to enable/disable broadcast probe response + * + * Related: None + * + * Supported Feature: FILS + * + * Usage: External + * + * + */ +#define CFG_ENABLE_BCAST_PROBE_RESP_NAME "g_enable_bcast_probe_rsp" +#define CFG_ENABLE_BCAST_PROBE_RESP_MIN (0) +#define CFG_ENABLE_BCAST_PROBE_RESP_MAX (1) +#define CFG_ENABLE_BCAST_PROBE_RESP_DEFAULT (0) + /* * Type declarations */ @@ -9791,6 +9813,7 @@ struct hdd_config { uint32_t per_roam_rest_time; uint32_t per_roam_mon_time; enum active_bpf_mode active_bpf_mode; + bool enable_bcast_probe_rsp; }; #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 2fa75c99c821..c3791c406404 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -4208,7 +4208,6 @@ REG_TABLE_ENTRY g_registry_table[] = { CFG_SAP_INTERNAL_RESTART_DEFAULT, CFG_SAP_INTERNAL_RESTART_MIN, CFG_SAP_INTERNAL_RESTART_MAX), - REG_VARIABLE(CFG_PER_ROAM_ENABLE_NAME, WLAN_PARAM_Integer, struct hdd_config, is_per_roam_enabled, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -4257,6 +4256,12 @@ REG_TABLE_ENTRY g_registry_table[] = { CFG_ACTIVE_BPF_MODE_DEFAULT, CFG_ACTIVE_BPF_MODE_MIN, CFG_ACTIVE_BPF_MODE_MAX), + REG_VARIABLE(CFG_ENABLE_BCAST_PROBE_RESP_NAME, WLAN_PARAM_Integer, + struct hdd_config, enable_bcast_probe_rsp, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_BCAST_PROBE_RESP_DEFAULT, + CFG_ENABLE_BCAST_PROBE_RESP_MIN, + CFG_ENABLE_BCAST_PROBE_RESP_MAX), }; /** @@ -7298,6 +7303,8 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx) pHddCtx->config->tx_aggregation_size; smeConfig->csrConfig.rx_aggregation_size = pHddCtx->config->rx_aggregation_size; + smeConfig->csrConfig.enable_bcast_probe_rsp = + pHddCtx->config->enable_bcast_probe_rsp; 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 bd2887595c18..95808df871c0 100644 --- a/core/sme/inc/csr_api.h +++ b/core/sme/inc/csr_api.h @@ -1310,6 +1310,7 @@ typedef struct tagCsrConfigParam { uint32_t tx_aggregation_size; uint32_t rx_aggregation_size; struct wmi_per_roam_config per_roam_config; + bool enable_bcast_probe_rsp; } tCsrConfigParam; /* Tush */ diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h index 44078b2f2d8e..bb766cf53757 100644 --- a/core/sme/inc/csr_internal.h +++ b/core/sme/inc/csr_internal.h @@ -639,6 +639,7 @@ typedef struct tagCsrConfig { uint32_t tx_aggregation_size; uint32_t rx_aggregation_size; struct wmi_per_roam_config per_roam_config; + bool enable_bcast_probe_rsp; } 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 fef5ebd5422c..f017f7bb5be6 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -2609,6 +2609,8 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac, pParam->tx_aggregation_size; pMac->roam.configParam.rx_aggregation_size = pParam->rx_aggregation_size; + pMac->roam.configParam.enable_bcast_probe_rsp = + pParam->enable_bcast_probe_rsp; } return status; @@ -2843,6 +2845,8 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam) pMac->roam.configParam.tx_aggregation_size; pParam->rx_aggregation_size = pMac->roam.configParam.rx_aggregation_size; + pParam->enable_bcast_probe_rsp = + pMac->roam.configParam.enable_bcast_probe_rsp; return QDF_STATUS_SUCCESS; } @@ -15317,6 +15321,8 @@ QDF_STATUS csr_issue_add_sta_for_session_req(tpAniSirGlobal pMac, pMac->roam.configParam.tx_aggregation_size; add_sta_self_req->rx_aggregation_size = pMac->roam.configParam.rx_aggregation_size; + add_sta_self_req->enable_bcast_probe_rsp = + pMac->roam.configParam.enable_bcast_probe_rsp; 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 f8066e1c96da..02f5a97b13cd 100644 --- a/core/wma/inc/wma_if.h +++ b/core/wma/inc/wma_if.h @@ -1143,6 +1143,9 @@ typedef struct sMaxTxPowerPerBandParams { * @nss_2g: vdev nss in 2.4G * @nss_5g: vdev nss in 5G * @status: response status code + * @tx_aggregation_size: Tx aggregation size + * @rx_aggregation_size: Rx aggregation size + * @enable_bcast_probe_rsp: enable broadcast probe response */ struct add_sta_self_params { tSirMacAddr self_mac_addr; @@ -1155,6 +1158,7 @@ struct add_sta_self_params { uint32_t status; uint32_t tx_aggregation_size; uint32_t rx_aggregation_size; + bool enable_bcast_probe_rsp; }; /** diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index 17c74af95ebb..4cb9317171ca 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -1802,6 +1802,16 @@ struct cdp_vdev *wma_vdev_attach(tp_wma_handle wma_handle, WMI_ROAM_BMISS_FINAL_SCAN_ENABLE_FLAG)); if (QDF_IS_STATUS_ERROR(ret)) WMA_LOGE("Failed to set WMI_VDEV_PARAM_ROAM_FW_OFFLOAD"); + + /* Pass down enable/disable bcast probe rsp to FW */ + ret = wma_vdev_set_param( + wma_handle->wmi_handle, + self_sta_req->session_id, + WMI_VDEV_PARAM_ENABLE_BCAST_PROBE_RESPONSE, + self_sta_req->enable_bcast_probe_rsp); + if (QDF_IS_STATUS_ERROR(ret)) + WMA_LOGE("Failed to set WMI_VDEV_PARAM_ENABLE_BCAST_PROBE_RESPONSE"); + } /* Initialize BMISS parameters */