summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHong Shi <hongsh@codeaurora.org>2017-02-19 21:54:02 +0800
committerqcabuildsw <qcabuildsw@localhost>2017-02-28 23:40:58 -0800
commitcb32fd17caec67c07a5649ba9ac369c7cad76f7b (patch)
treed0b8bb44ffa40396ad3ce7234ceaae3cd5aa1c3f
parentd653c2a995d8a4827d772a7084c8cdeee5535777 (diff)
qcacld-3.0: Add ini to disable abg rate for tx data
qcacld-2.0 to qcacld-3.0 propagation Add ini config option to disable abg rate for tx data. Change-Id: Ideb1fd6471c6fbdade99b4c7c533cb1bf3bf206c CRs-Fixed: 1111787
-rw-r--r--core/hdd/inc/wlan_hdd_cfg.h22
-rw-r--r--core/hdd/src/wlan_hdd_cfg.c15
-rw-r--r--core/mac/inc/wni_cfg.h5
-rw-r--r--core/mac/src/cfg/cfg_param_name.c1
-rw-r--r--core/mac/src/cfg/cfg_proc_msg.c7
-rw-r--r--core/wma/src/wma_mgmt.c38
6 files changed, 72 insertions, 16 deletions
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index 19af0a33ede6..32a9fbecc8e0 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -5690,6 +5690,27 @@ typedef enum {
/*
* <ini>
+ * gDisableABGRateForTxData - disable abg rate for tx data
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to disable abg rate for tx data.
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_DISABLE_ABG_RATE_FOR_TX_DATA "gDisableABGRateForTxData"
+#define CFG_DISABLE_ABG_RATE_FOR_TX_DATA_MIN \
+ (WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMIN)
+#define CFG_DISABLE_ABG_RATE_FOR_TX_DATA_MAX \
+ (WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMAX)
+#define CFG_DISABLE_ABG_RATE_FOR_TX_DATA_DEFAULT \
+ (WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STADEF)
+
+/*
+ * <ini>
* gTDLSTxPacketThreshold - Tx/Rx Packet threshold for initiating TDLS.
* @Min: 0
* @Max: 4294967295
@@ -10095,6 +10116,7 @@ struct hdd_config {
bool gEnableOverLapCh;
bool fRegChangeDefCountry;
uint16_t max_ht_mcs_txdata;
+ bool disable_abg_rate_txdata;
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
uint32_t TxFlowLowWaterMark;
uint32_t TxFlowHighWaterMarkOffset;
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index e9caba5537fa..45df03ed3553 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -2179,6 +2179,13 @@ REG_TABLE_ENTRY g_registry_table[] = {
CFG_MAX_HT_MCS_FOR_TX_DATA_MIN,
CFG_MAX_HT_MCS_FOR_TX_DATA_MAX),
+ REG_VARIABLE(CFG_DISABLE_ABG_RATE_FOR_TX_DATA, WLAN_PARAM_Integer,
+ struct hdd_config, disable_abg_rate_txdata,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_DISABLE_ABG_RATE_FOR_TX_DATA_DEFAULT,
+ CFG_DISABLE_ABG_RATE_FOR_TX_DATA_MIN,
+ CFG_DISABLE_ABG_RATE_FOR_TX_DATA_MAX),
+
REG_VARIABLE(CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer,
struct hdd_config, enableFirstScan2GOnly,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -6910,6 +6917,14 @@ bool hdd_update_config_cfg(hdd_context_t *hdd_ctx)
status = false;
hdd_err("Couldn't pass on WNI_CFG_MAX_HT_MCS_TX_DATA to CCM");
}
+
+ if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA,
+ config->disable_abg_rate_txdata) ==
+ QDF_STATUS_E_FAILURE) {
+ status = false;
+ hdd_err("Couldn't pass on WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA to CCM");
+ }
+
return status;
}
#ifdef FEATURE_WLAN_SCAN_PNO
diff --git a/core/mac/inc/wni_cfg.h b/core/mac/inc/wni_cfg.h
index c2c5785e71cb..3cca6c6dbacd 100644
--- a/core/mac/inc/wni_cfg.h
+++ b/core/mac/inc/wni_cfg.h
@@ -252,6 +252,7 @@ enum {
WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD,
WNI_CFG_TGT_GTX_USR_CFG,
WNI_CFG_MAX_HT_MCS_TX_DATA,
+ WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA,
/* Any new items to be added should be above this strictly */
CFG_PARAM_MAX_NUM
};
@@ -1265,6 +1266,10 @@ enum {
#define WNI_CFG_MAX_HT_MCS_TX_DATA_STAMAX 0x17f
#define WNI_CFG_MAX_HT_MCS_TX_DATA_STADEF 0x0
+#define WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMIN 0
+#define WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMAX 1
+#define WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STADEF 0
+
#define CFG_STA_MAGIC_DWORD 0xbeefbeef
#endif
diff --git a/core/mac/src/cfg/cfg_param_name.c b/core/mac/src/cfg/cfg_param_name.c
index 2ad7c69e0be2..3e4cf7efcc78 100644
--- a/core/mac/src/cfg/cfg_param_name.c
+++ b/core/mac/src/cfg/cfg_param_name.c
@@ -324,4 +324,5 @@ unsigned char *g_cfg_param_name[] = {
(unsigned char *)"OBSS_HT40_SCAN_ACTIVITY_THRESHOLD",
(unsigned char *)"TGT_GTX_USR_CFG",
(unsigned char *)"MAX_HT_MCS_TX_DATA",
+ (unsigned char *)"DISABLE_ABG_RATE_TX_DATA",
};
diff --git a/core/mac/src/cfg/cfg_proc_msg.c b/core/mac/src/cfg/cfg_proc_msg.c
index ff60742fad4b..4fd502524952 100644
--- a/core/mac/src/cfg/cfg_proc_msg.c
+++ b/core/mac/src/cfg/cfg_proc_msg.c
@@ -1183,7 +1183,12 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
WNI_CFG_MAX_HT_MCS_TX_DATA_STAMIN,
WNI_CFG_MAX_HT_MCS_TX_DATA_STAMAX,
- WNI_CFG_MAX_HT_MCS_TX_DATA_STADEF}
+ WNI_CFG_MAX_HT_MCS_TX_DATA_STADEF},
+ {WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA,
+ CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
+ WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMIN,
+ WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMAX,
+ WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STADEF}
};
diff --git a/core/wma/src/wma_mgmt.c b/core/wma/src/wma_mgmt.c
index 373f4450feda..a99b930e66a1 100644
--- a/core/wma/src/wma_mgmt.c
+++ b/core/wma/src/wma_mgmt.c
@@ -895,6 +895,7 @@ QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
uint32_t num_peer_11a_rates = 0;
uint32_t phymode;
uint32_t peer_nss = 1;
+ uint32_t disable_abg_rate;
struct wma_txrx_node *intr = NULL;
QDF_STATUS status;
@@ -925,21 +926,28 @@ QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
params->ch_width,
params->vhtCapable);
- /* Legacy Rateset */
- rate_pos = (uint8_t *) peer_legacy_rates.rates;
- for (i = 0; i < SIR_NUM_11B_RATES; i++) {
- if (!params->supportedRates.llbRates[i])
- continue;
- rate_pos[peer_legacy_rates.num_rates++] =
- params->supportedRates.llbRates[i];
- num_peer_11b_rates++;
- }
- for (i = 0; i < SIR_NUM_11A_RATES; i++) {
- if (!params->supportedRates.llaRates[i])
- continue;
- rate_pos[peer_legacy_rates.num_rates++] =
- params->supportedRates.llaRates[i];
- num_peer_11a_rates++;
+ if (wlan_cfg_get_int(wma->mac_context,
+ WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA,
+ &disable_abg_rate) != eSIR_SUCCESS)
+ disable_abg_rate = WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STADEF;
+
+ if (!disable_abg_rate) {
+ /* Legacy Rateset */
+ rate_pos = (uint8_t *) peer_legacy_rates.rates;
+ for (i = 0; i < SIR_NUM_11B_RATES; i++) {
+ if (!params->supportedRates.llbRates[i])
+ continue;
+ rate_pos[peer_legacy_rates.num_rates++] =
+ params->supportedRates.llbRates[i];
+ num_peer_11b_rates++;
+ }
+ for (i = 0; i < SIR_NUM_11A_RATES; i++) {
+ if (!params->supportedRates.llaRates[i])
+ continue;
+ rate_pos[peer_legacy_rates.num_rates++] =
+ params->supportedRates.llaRates[i];
+ num_peer_11a_rates++;
+ }
}
if ((phymode == MODE_11A && num_peer_11a_rates == 0) ||