From b8630abe6d073e8e3ca7a794bf375eba3e2398be Mon Sep 17 00:00:00 2001 From: Ashish Kumar Dhanotiya Date: Fri, 21 Jul 2017 14:18:14 +0530 Subject: [PATCH] qcacld-3.0: Configuration to enable/disable LPRx Add host support to enable/disable LPRx from ini. Change-Id: I7a5acd34331cdd1f06a2d08317efcf04c6f608a7 CRs-Fixed: 2080316 --- core/hdd/inc/wlan_hdd_cfg.h | 20 ++++++++++++++++++++ core/hdd/src/wlan_hdd_cfg.c | 10 ++++++++++ core/hdd/src/wlan_hdd_main.c | 8 ++++++++ 3 files changed, 38 insertions(+) diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index c6c7da1e29b2..9252da92a2b2 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -11004,6 +11004,25 @@ enum hdd_external_acs_freq_band { #define CFG_ROAM_NUM_DISALLOWED_APS_MAX (8) #define CFG_ROAM_NUM_DISALLOWED_APS_DEFAULT (3) +/* + * + * gEnableLPRx - Enable/Disable LPRx + * @Min: 0 + * @Max: 1 + * @Default: 1 + * + * This ini Enables or disables the LPRx in FW + * + * Usage: External + * + * + */ + +#define CFG_LPRx_NAME "gEnableLPRx" +#define CFG_LPRx_MIN (0) +#define CFG_LPRx_MAX (1) +#define CFG_LPRx_DEFAULT (1) + /* * Type declarations */ @@ -11766,6 +11785,7 @@ struct hdd_config { int8_t rssi_penalize_threshold_5g; uint8_t rssi_penalize_factor_5g; uint8_t max_rssi_penalize_5g; + bool enable_lprx; }; #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 1257bb19efa1..ee6754fac5a4 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -4583,6 +4583,13 @@ struct reg_table_entry g_registry_table[] = { CFG_5G_MAX_RSSI_PENALIZE_DEFAULT, CFG_5G_MAX_RSSI_PENALIZE_MIN, CFG_5G_MAX_RSSI_PENALIZE_MAX), + + REG_VARIABLE(CFG_LPRx_NAME, WLAN_PARAM_Integer, + struct hdd_config, enable_lprx, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_LPRx_DEFAULT, + CFG_LPRx_MIN, + CFG_LPRx_MAX), }; @@ -6135,6 +6142,9 @@ void hdd_cfg_print(hdd_context_t *pHddCtx) hdd_debug("Name = [%s] Value = [%u]", CFG_ROAM_NUM_DISALLOWED_APS_NAME, pHddCtx->config->num_disallowed_aps); + hdd_debug("Name = [%s] value = [%u]", + CFG_LPRx_NAME, + pHddCtx->config->enable_lprx); } diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 90d70ad7df23..fccb4a64ab8d 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -3633,6 +3633,14 @@ int hdd_set_fw_params(hdd_adapter_t *adapter) return 0; } + ret = sme_cli_set_command(adapter->sessionId, + WMI_PDEV_PARAM_DTIM_SYNTH, + hdd_ctx->config->enable_lprx, PDEV_CMD); + if (ret) { + hdd_err("Failed to set LPRx"); + goto error; + } + if (hdd_ctx->config->enable2x2) { hdd_debug("configuring 2x2 mode fw params");