From 191d164636bd3a004c0dc3df33ac7bd84eb09146 Mon Sep 17 00:00:00 2001 From: Ashish Kumar Dhanotiya Date: Thu, 8 Feb 2018 17:43:09 +0530 Subject: [PATCH] qcacld-3.0: Add ini parameter for chain selection optimization Add ini support to Enable/Disable chain selection optimization for one chain dtim. Change-Id: I95999a4204f2d978abc9951688332400b9670f0e CRs-Fixed: 2189150 --- core/hdd/inc/wlan_hdd_cfg.h | 19 +++++++++++++++++++ core/hdd/src/wlan_hdd_cfg.c | 11 +++++++++++ core/hdd/src/wlan_hdd_main.c | 11 +++++++++++ 3 files changed, 41 insertions(+) diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index b1d29c8f95..712911ff10 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -14341,6 +14341,24 @@ enum hdd_external_acs_freq_band { #define CFG_WMI_WQ_WATCHDOG_MIN (0) #define CFG_WMI_WQ_WATCHDOG_MAX (30) /* 30s */ #define CFG_WMI_WQ_WATCHDOG_DEFAULT (20) /* 20s */ + +/* + * + * gEnableDTIMSelectionDiversity - Enable/Disable chain + * selection optimization for one chain dtim + * @Min: 0 + * @Max: 30 + * @Default: 5 + * + * Usage: External + * + * + */ +#define CFG_DTIM_SELECTION_DIVERSITY_NAME "gEnableDTIMSelectionDiversity" +#define CFG_DTIM_SELECTION_DIVERSITY_MIN (0) +#define CFG_DTIM_SELECTION_DIVERSITY_MAX (30) +#define CFG_DTIM_SELECTION_DIVERSITY_DEFAULT (5) + /* * Type declarations */ @@ -15251,6 +15269,7 @@ struct hdd_config { uint32_t neighbor_report_offload_cache_timeout; uint32_t neighbor_report_offload_max_req_cap; uint16_t wmi_wq_watchdog_timeout; + bool enable_dtim_selection_diversity; }; #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 c4eee3f90d..4f7402e20c 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -5526,6 +5526,14 @@ struct reg_table_entry g_registry_table[] = { CFG_WMI_WQ_WATCHDOG_DEFAULT, CFG_WMI_WQ_WATCHDOG_MIN, CFG_WMI_WQ_WATCHDOG_MAX), + + REG_VARIABLE(CFG_DTIM_SELECTION_DIVERSITY_NAME, + WLAN_PARAM_Integer, + struct hdd_config, enable_dtim_selection_diversity, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_DTIM_SELECTION_DIVERSITY_DEFAULT, + CFG_DTIM_SELECTION_DIVERSITY_MIN, + CFG_DTIM_SELECTION_DIVERSITY_MAX), }; @@ -7416,6 +7424,9 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx) hdd_debug("Name = [%s] value = [%d]", CFG_ENABLE_GCMP_NAME, hdd_ctx->config->gcmp_enabled); + hdd_debug("Name = [%s] value = [%d]", + CFG_DTIM_SELECTION_DIVERSITY_NAME, + hdd_ctx->config->enable_dtim_selection_diversity); hdd_cfg_print_11k_offload_params(hdd_ctx); } diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 0a6070c453..ba90034698 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -4256,6 +4256,17 @@ int hdd_set_fw_params(struct hdd_adapter *adapter) goto error; } + + ret = sme_cli_set_command( + adapter->session_id, + WMI_PDEV_PARAM_1CH_DTIM_OPTIMIZED_CHAIN_SELECTION, + hdd_ctx->config->enable_dtim_selection_diversity, + PDEV_CMD); + if (ret) { + hdd_err("Failed to set DTIM_OPTIMIZED_CHAIN_SELECTION"); + goto error; + } + if (adapter->device_mode == QDF_STA_MODE) { sme_set_smps_cfg(adapter->session_id, HDD_STA_SMPS_PARAM_UPPER_BRSSI_THRESH,