diff options
| author | Hong Shi <hongsh@codeaurora.org> | 2017-02-19 21:54:02 +0800 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2017-02-28 23:40:58 -0800 |
| commit | cb32fd17caec67c07a5649ba9ac369c7cad76f7b (patch) | |
| tree | d0b8bb44ffa40396ad3ce7234ceaae3cd5aa1c3f | |
| parent | d653c2a995d8a4827d772a7084c8cdeee5535777 (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.h | 22 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_cfg.c | 15 | ||||
| -rw-r--r-- | core/mac/inc/wni_cfg.h | 5 | ||||
| -rw-r--r-- | core/mac/src/cfg/cfg_param_name.c | 1 | ||||
| -rw-r--r-- | core/mac/src/cfg/cfg_proc_msg.c | 7 | ||||
| -rw-r--r-- | core/wma/src/wma_mgmt.c | 38 |
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) || |
