diff options
| author | Rajeev Kumar Sirasanagandla <rsirasan@qti.qualcomm.com> | 2016-05-02 20:04:13 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-05-10 17:59:18 +0530 |
| commit | ee45e2bbc5e9d3a6a79323fb970d183257706763 (patch) | |
| tree | ebd0f1bdcb5429e42491bdbf64cfcda4af46e170 | |
| parent | 30779c86af06d7864483167d08bacef360b99963 (diff) | |
qcacld-2.0: Add cfg ini parameter tgt_gtx_usr_cfg
GTX use this parameter to drop TPC and in turn TPC drop is the cause
for mcs rate drop and may happen in higher percentage. This change,
provide a way to select the desired value and reduce mcs-8 usage to
2% from 8%.
Change-Id: I64f05c8b41cf3d360819122a08eca72f3a2c1aed
CRs-Fixed: 1010564
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg.h | 8 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 20 | ||||
| -rw-r--r-- | CORE/MAC/inc/wniCfgAp.h | 15 | ||||
| -rw-r--r-- | CORE/MAC/inc/wniCfgSta.h | 11 | ||||
| -rw-r--r-- | CORE/MAC/src/cfg/cfgProcMsg.c | 10 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wlan_tgt_def_config.h | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h | 5 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 21 |
8 files changed, 74 insertions, 20 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index d6e10383e9b3..9a76ddfde313 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -3816,6 +3816,11 @@ enum dot11p_mode { #define CFG_EDCA_BE_AIFS_VALUE_MAX (15) #define CFG_EDCA_BE_AIFS_VALUE_DEFAULT (3) +#define CFG_TGT_GTX_USR_CFG_NAME "tgt_gtx_usr_cfg" +#define CFG_TGT_GTX_USR_CFG_MIN (0) +#define CFG_TGT_GTX_USR_CFG_MAX (32) +#define CFG_TGT_GTX_USR_CFG_DEFAULT (32) + /*--------------------------------------------------------------------------- Type declarations -------------------------------------------------------------------------*/ @@ -4570,6 +4575,9 @@ struct hdd_config { uint32_t edca_bk_aifs; uint32_t edca_be_aifs; bool enable_dynamic_sta_chainmask; + + /* parameter to control GTX */ + uint32_t tgt_gtx_usr_cfg; }; typedef struct hdd_config hdd_config_t; diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c index 0f9d69f85b9d..710e9c3528b1 100644 --- a/CORE/HDD/src/wlan_hdd_cfg.c +++ b/CORE/HDD/src/wlan_hdd_cfg.c @@ -4561,6 +4561,13 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_EDCA_BE_AIFS_VALUE_DEFAULT, CFG_EDCA_BE_AIFS_VALUE_MIN, CFG_EDCA_BE_AIFS_VALUE_MAX), + + REG_VARIABLE(CFG_TGT_GTX_USR_CFG_NAME, WLAN_PARAM_Integer, + hdd_config_t, tgt_gtx_usr_cfg, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_TGT_GTX_USR_CFG_DEFAULT, + CFG_TGT_GTX_USR_CFG_MIN, + CFG_TGT_GTX_USR_CFG_MAX), }; @@ -5370,6 +5377,10 @@ void print_hdd_cfg(hdd_context_t *pHddCtx) CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK, pHddCtx->cfg_ini->enable_dynamic_sta_chainmask); + hddLog(LOG2, "Name = [%s] Value = [%u]", + CFG_TGT_GTX_USR_CFG_NAME, + pHddCtx->cfg_ini->tgt_gtx_usr_cfg); + hdd_ndp_print_ini_config(pHddCtx); } @@ -6925,6 +6936,15 @@ v_BOOL_t hdd_update_config_dat( hdd_context_t *pHddCtx ) fStatus = FALSE; hddLog(LOGE, "Could not pass on WNI_CFG_IBSS_ATIM_WIN_SIZE to CCM"); } + + if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TGT_GTX_USR_CFG, + pConfig->tgt_gtx_usr_cfg, NULL, + eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) + { + fStatus = FALSE; + hddLog(LOGE, "Could not pass on WNI_CFG_TGT_GTX_USR_CFG to CCM"); + } + return fStatus; } diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h index 268d7496066a..a99db6140104 100644 --- a/CORE/MAC/inc/wniCfgAp.h +++ b/CORE/MAC/inc/wniCfgAp.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -342,6 +342,7 @@ #define WNI_CFG_DFS_MASTER_ENABLED 295 #define WNI_CFG_VHT_ENABLE_TXBF_20MHZ 296 #define WNI_CFG_TDLS_WMM_MODE_ENABLED 297 +#define WNI_CFG_TGT_GTX_USR_CFG 298 /* * String parameter lengths @@ -2507,10 +2508,18 @@ #define WNI_CFG_TDLS_WMM_MODE_ENABLED_APMAX 1 #define WNI_CFG_TDLS_WMM_MODE_ENABLED_APDEF 0 -#define CFG_PARAM_MAX_NUM 298 +#define WNI_CFG_TGT_GTX_USR_CFG_STAMIN 0 +#define WNI_CFG_TGT_GTX_USR_CFG_STAMAX 32 +#define WNI_CFG_TGT_GTX_USR_CFG_STADEF 32 + +#define WNI_CFG_TGT_GTX_USR_CFG_APMIN 0 +#define WNI_CFG_TGT_GTX_USR_CFG_APMAX 32 +#define WNI_CFG_TGT_GTX_USR_CFG_APDEF 32 + +#define CFG_PARAM_MAX_NUM 299 #define CFG_AP_IBUF_MAX_SIZE 246 #define CFG_AP_SBUF_MAX_SIZE 3233 -#define CFG_STA_IBUF_MAX_SIZE 241 +#define CFG_STA_IBUF_MAX_SIZE 242 #define CFG_STA_SBUF_MAX_SIZE 3199 #define CFG_SEM_MAX_NUM 19 diff --git a/CORE/MAC/inc/wniCfgSta.h b/CORE/MAC/inc/wniCfgSta.h index d0ff9c25de60..cfeafbc91051 100644 --- a/CORE/MAC/inc/wniCfgSta.h +++ b/CORE/MAC/inc/wniCfgSta.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -336,6 +336,7 @@ #define WNI_CFG_DFS_MASTER_ENABLED 295 #define WNI_CFG_VHT_ENABLE_TXBF_20MHZ 296 #define WNI_CFG_TDLS_WMM_MODE_ENABLED 297 +#define WNI_CFG_TGT_GTX_USR_CFG 298 /* * String parameter lengths @@ -1604,8 +1605,12 @@ #define WNI_CFG_TDLS_WMM_MODE_ENABLED_STAMAX 1 #define WNI_CFG_TDLS_WMM_MODE_ENABLED_STADEF 0 -#define CFG_PARAM_MAX_NUM 298 -#define CFG_STA_IBUF_MAX_SIZE 241 +#define WNI_CFG_TGT_GTX_USR_CFG_STAMIN 0 +#define WNI_CFG_TGT_GTX_USR_CFG_STAMAX 32 +#define WNI_CFG_TGT_GTX_USR_CFG_STADEF 32 + +#define CFG_PARAM_MAX_NUM 299 +#define CFG_STA_IBUF_MAX_SIZE 242 #define CFG_STA_SBUF_MAX_SIZE 3199 #define CFG_SEM_MAX_NUM 19 diff --git a/CORE/MAC/src/cfg/cfgProcMsg.c b/CORE/MAC/src/cfg/cfgProcMsg.c index 43ecf7b3b825..f81af89754ca 100644 --- a/CORE/MAC/src/cfg/cfgProcMsg.c +++ b/CORE/MAC/src/cfg/cfgProcMsg.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1899,7 +1899,13 @@ struct cgstatic cfg_static[CFG_PARAM_MAX_NUM] = { CFG_CTL_NTF_LIM, WNI_CFG_TDLS_WMM_MODE_ENABLED_STAMIN, WNI_CFG_TDLS_WMM_MODE_ENABLED_STAMAX, - WNI_CFG_TDLS_WMM_MODE_ENABLED_STADEF} + WNI_CFG_TDLS_WMM_MODE_ENABLED_STADEF}, + + {WNI_CFG_TGT_GTX_USR_CFG, + CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, + WNI_CFG_TGT_GTX_USR_CFG_STAMIN, + WNI_CFG_TGT_GTX_USR_CFG_STAMAX, + WNI_CFG_TGT_GTX_USR_CFG_STADEF} }; struct cfgstatic_string cfg_static_string[CFG_MAX_STATIC_STRING] = { diff --git a/CORE/SERVICES/COMMON/wlan_tgt_def_config.h b/CORE/SERVICES/COMMON/wlan_tgt_def_config.h index eff2611613a0..f34ec615ad91 100644 --- a/CORE/SERVICES/COMMON/wlan_tgt_def_config.h +++ b/CORE/SERVICES/COMMON/wlan_tgt_def_config.h @@ -219,10 +219,6 @@ */ #define CFG_TGT_DEFAULT_GTX_VHT_MASK 0x80200 /* - * resv for furture use, bit 30 is used for fix tpc, bit0-3 for Power save balance - */ -#define CFG_TGT_DEFAULT_GTX_USR_CFG 0xa -/* * threshold to enable GTX */ #define CFG_TGT_DEFAULT_GTX_PER_THRESHOLD 3 diff --git a/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h b/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h index a7e1c29259e1..620dbbd0be58 100644 --- a/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h +++ b/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h @@ -257,11 +257,6 @@ */ #define CFG_TGT_DEFAULT_GTX_VHT_MASK 0x80200 /* - * resv for furture use, bit 30 is used for fix tpc, bit0-3 for Power save - * balance - */ -#define CFG_TGT_DEFAULT_GTX_USR_CFG 0xa -/* * threshold to enable GTX */ #define CFG_TGT_DEFAULT_GTX_PER_THRESHOLD 3 diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 4934a1c08cb0..0b0a97f8efb0 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -12086,8 +12086,15 @@ VOS_STATUS wma_switch_channel(tp_wma_handle wma, struct wma_vdev_start_req *req) CFG_TGT_DEFAULT_GTX_HT_MASK; intr[req->vdev_id].config.gtx_info.gtxRTMask[1] = CFG_TGT_DEFAULT_GTX_VHT_MASK; - intr[req->vdev_id].config.gtx_info.gtxUsrcfg = - CFG_TGT_DEFAULT_GTX_USR_CFG; + + if (wlan_cfgGetInt(pmac, WNI_CFG_TGT_GTX_USR_CFG, + &intr[req->vdev_id].config.gtx_info.gtxUsrcfg) + != eSIR_SUCCESS) { + WMA_LOGE("Failed to read target gtx user config"); + intr[req->vdev_id].config.gtx_info.gtxUsrcfg = + WNI_CFG_TGT_GTX_USR_CFG_STADEF; + } + intr[req->vdev_id].config.gtx_info.gtxPERThreshold = CFG_TGT_DEFAULT_GTX_PER_THRESHOLD; intr[req->vdev_id].config.gtx_info.gtxPERMargin = @@ -12205,7 +12212,15 @@ VOS_STATUS wma_vdev_start(tp_wma_handle wma, intr[cmd->vdev_id].vht_capable = req->vht_capable; intr[cmd->vdev_id].config.gtx_info.gtxRTMask[0] = CFG_TGT_DEFAULT_GTX_HT_MASK; intr[cmd->vdev_id].config.gtx_info.gtxRTMask[1] = CFG_TGT_DEFAULT_GTX_VHT_MASK; - intr[cmd->vdev_id].config.gtx_info.gtxUsrcfg = CFG_TGT_DEFAULT_GTX_USR_CFG; + + if (wlan_cfgGetInt(pmac, WNI_CFG_TGT_GTX_USR_CFG, + &intr[cmd->vdev_id].config.gtx_info.gtxUsrcfg) + != eSIR_SUCCESS) { + WMA_LOGE("Failed to read target gtx user config"); + intr[cmd->vdev_id].config.gtx_info.gtxUsrcfg = + WNI_CFG_TGT_GTX_USR_CFG_STADEF; + } + intr[cmd->vdev_id].config.gtx_info.gtxPERThreshold = CFG_TGT_DEFAULT_GTX_PER_THRESHOLD; intr[cmd->vdev_id].config.gtx_info.gtxPERMargin = CFG_TGT_DEFAULT_GTX_PER_MARGIN; intr[cmd->vdev_id].config.gtx_info.gtxTPCstep = CFG_TGT_DEFAULT_GTX_TPC_STEP; |
