summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajeev Kumar Sirasanagandla <rsirasan@qti.qualcomm.com>2016-05-02 20:04:13 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-05-10 17:59:18 +0530
commitee45e2bbc5e9d3a6a79323fb970d183257706763 (patch)
treeebd0f1bdcb5429e42491bdbf64cfcda4af46e170
parent30779c86af06d7864483167d08bacef360b99963 (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.h8
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c20
-rw-r--r--CORE/MAC/inc/wniCfgAp.h15
-rw-r--r--CORE/MAC/inc/wniCfgSta.h11
-rw-r--r--CORE/MAC/src/cfg/cfgProcMsg.c10
-rw-r--r--CORE/SERVICES/COMMON/wlan_tgt_def_config.h4
-rw-r--r--CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h5
-rw-r--r--CORE/SERVICES/WMA/wma.c21
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;