mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 08:36:12 -04:00
qcacld-3.0: add ini to configure HT max mcs
qcacld-2.0 to qcacld-3.0 propagation Add support for configure host init HT rate upper bound. CRs-Fixed: 1105357 Change-Id: Ic69a2d19ad1b3b835c83c7d666fb7821e42e8442
This commit is contained in:
parent
66e4ff2fe1
commit
417824fc25
6 changed files with 114 additions and 3 deletions
|
|
@ -4963,6 +4963,28 @@ typedef enum {
|
|||
#define CFG_TDLS_TX_STATS_PERIOD_MAX (4294967295UL)
|
||||
#define CFG_TDLS_TX_STATS_PERIOD_DEFAULT (2000)
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* gMaxHTMCSForTxData - max HT mcs for TX
|
||||
* @Min: 0
|
||||
* @Max: 383
|
||||
* @Default: 0
|
||||
*
|
||||
* This ini is used to configure the max HT mcs
|
||||
* for tx data.
|
||||
*
|
||||
* Usage: External
|
||||
*
|
||||
* bits 0-15: max HT mcs
|
||||
* bits 16-31: zero to disable, otherwise enable.
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_MAX_HT_MCS_FOR_TX_DATA "gMaxHTMCSForTxData"
|
||||
#define CFG_MAX_HT_MCS_FOR_TX_DATA_MIN (WNI_CFG_MAX_HT_MCS_TX_DATA_STAMIN)
|
||||
#define CFG_MAX_HT_MCS_FOR_TX_DATA_MAX (WNI_CFG_MAX_HT_MCS_TX_DATA_STAMAX)
|
||||
#define CFG_MAX_HT_MCS_FOR_TX_DATA_DEFAULT (WNI_CFG_MAX_HT_MCS_TX_DATA_STADEF)
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* gTDLSTxPacketThreshold - Tx/Rx Packet threshold for initiating TDLS.
|
||||
|
|
@ -9120,6 +9142,7 @@ struct hdd_config {
|
|||
uint8_t gDisableDfsJapanW53;
|
||||
bool gEnableOverLapCh;
|
||||
bool fRegChangeDefCountry;
|
||||
uint16_t max_ht_mcs_txdata;
|
||||
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
|
||||
uint32_t TxFlowLowWaterMark;
|
||||
uint32_t TxFlowHighWaterMarkOffset;
|
||||
|
|
|
|||
|
|
@ -2124,6 +2124,14 @@ REG_TABLE_ENTRY g_registry_table[] = {
|
|||
CFG_DISABLE_DFS_JAPAN_W53_MIN,
|
||||
CFG_DISABLE_DFS_JAPAN_W53_MAX,
|
||||
ch_notify_set_g_disable_dfs_japan_w53, 0),
|
||||
|
||||
REG_VARIABLE(CFG_MAX_HT_MCS_FOR_TX_DATA, WLAN_PARAM_HexInteger,
|
||||
struct hdd_config, max_ht_mcs_txdata,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_MAX_HT_MCS_FOR_TX_DATA_DEFAULT,
|
||||
CFG_MAX_HT_MCS_FOR_TX_DATA_MIN,
|
||||
CFG_MAX_HT_MCS_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,
|
||||
|
|
@ -6676,6 +6684,13 @@ bool hdd_update_config_cfg(hdd_context_t *hdd_ctx)
|
|||
status = false;
|
||||
hdd_err("Couldn't pass on WNI_CFG_TGT_GTX_USR_CFG to CCM");
|
||||
}
|
||||
|
||||
if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_MAX_HT_MCS_TX_DATA,
|
||||
config->max_ht_mcs_txdata) ==
|
||||
QDF_STATUS_E_FAILURE) {
|
||||
status = false;
|
||||
hdd_err("Couldn't pass on WNI_CFG_MAX_HT_MCS_TX_DATA to CCM");
|
||||
}
|
||||
return status;
|
||||
}
|
||||
#ifdef FEATURE_WLAN_SCAN_PNO
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
|
|
@ -251,6 +251,7 @@ enum {
|
|||
WNI_CFG_OBSS_HT40_WIDTH_CH_TRANSITION_DELAY,
|
||||
WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD,
|
||||
WNI_CFG_TGT_GTX_USR_CFG,
|
||||
WNI_CFG_MAX_HT_MCS_TX_DATA,
|
||||
/* Any new items to be added should be above this strictly */
|
||||
CFG_PARAM_MAX_NUM
|
||||
};
|
||||
|
|
@ -1260,6 +1261,10 @@ enum {
|
|||
#define WNI_CFG_TGT_GTX_USR_CFG_STAMAX 32
|
||||
#define WNI_CFG_TGT_GTX_USR_CFG_STADEF 32
|
||||
|
||||
#define WNI_CFG_MAX_HT_MCS_TX_DATA_STAMIN 0x0
|
||||
#define WNI_CFG_MAX_HT_MCS_TX_DATA_STAMAX 0x17f
|
||||
#define WNI_CFG_MAX_HT_MCS_TX_DATA_STADEF 0x0
|
||||
|
||||
#define CFG_STA_MAGIC_DWORD 0xbeefbeef
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
|
|
@ -315,4 +315,13 @@ unsigned char *g_cfg_param_name[] = {
|
|||
(unsigned char *)"DFS_MASTER_ENABLED",
|
||||
(unsigned char *)"VHT_ENABLE_TXBF_20MHZ",
|
||||
(unsigned char *)"TDLS_WMM_MODE_ENABLED",
|
||||
(unsigned char *)"OBSS_HT40_SCAN_PASSIVE_DWELL_TIME",
|
||||
(unsigned char *)"OBSS_HT40_SCAN_ACTIVE_DWELL_TIME",
|
||||
(unsigned char *)"OBSS_HT40_SCAN_WIDTH_TRIGGER_INTERVAL",
|
||||
(unsigned char *)"OBSS_HT40_SCAN_PASSIVE_TOTAL_PER_CHANNEL",
|
||||
(unsigned char *)"OBSS_HT40_SCAN_ACTIVE_TOTAL_PER_CHANNEL",
|
||||
(unsigned char *)"OBSS_HT40_WIDTH_CH_TRANSITION_DELAY",
|
||||
(unsigned char *)"OBSS_HT40_SCAN_ACTIVITY_THRESHOLD",
|
||||
(unsigned char *)"TGT_GTX_USR_CFG",
|
||||
(unsigned char *)"MAX_HT_MCS_TX_DATA",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1178,7 +1178,12 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
|
|||
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}
|
||||
WNI_CFG_TGT_GTX_USR_CFG_STADEF},
|
||||
{WNI_CFG_MAX_HT_MCS_TX_DATA,
|
||||
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}
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -810,6 +810,58 @@ wma_unified_peer_state_update(
|
|||
}
|
||||
#endif
|
||||
|
||||
#define CFG_CTRL_MASK 0xFF00
|
||||
#define CFG_DATA_MASK 0x00FF
|
||||
|
||||
/**
|
||||
* wma_mask_tx_ht_rate() - mask tx ht rate based on config
|
||||
* @wma: wma handle
|
||||
* @mcs_set mcs set buffer
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void wma_mask_tx_ht_rate(tp_wma_handle wma, uint8_t *mcs_set)
|
||||
{
|
||||
uint32_t mcs_limit, i, j;
|
||||
uint8_t *rate_pos = mcs_set;
|
||||
|
||||
/*
|
||||
* Get MCS limit from ini configure, and map it to rate parameters
|
||||
* This will limit HT rate upper bound. CFG_CTRL_MASK is used to
|
||||
* check whether ini config is enabled and CFG_DATA_MASK to get the
|
||||
* MCS value.
|
||||
*/
|
||||
if (wlan_cfg_get_int(wma->mac_context, WNI_CFG_MAX_HT_MCS_TX_DATA,
|
||||
&mcs_limit) != eSIR_SUCCESS) {
|
||||
mcs_limit = WNI_CFG_MAX_HT_MCS_TX_DATA_STADEF;
|
||||
}
|
||||
|
||||
if (mcs_limit & CFG_CTRL_MASK) {
|
||||
WMA_LOGD("%s: set mcs_limit %x", __func__, mcs_limit);
|
||||
|
||||
mcs_limit &= CFG_DATA_MASK;
|
||||
for (i = 0, j = 0; i < MAX_SUPPORTED_RATES;) {
|
||||
if (j < mcs_limit / 8) {
|
||||
rate_pos[j] = 0xff;
|
||||
j++;
|
||||
i += 8;
|
||||
} else if (j < mcs_limit / 8 + 1) {
|
||||
if (i <= mcs_limit)
|
||||
rate_pos[i / 8] |= 1 << (i % 8);
|
||||
else
|
||||
rate_pos[i / 8] &= ~(1 << (i % 8));
|
||||
i++;
|
||||
|
||||
if (i >= (j + 1) * 8)
|
||||
j++;
|
||||
} else {
|
||||
rate_pos[j++] = 0;
|
||||
i += 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* wmi_unified_send_peer_assoc() - send peer assoc command to fw
|
||||
* @wma: wma handle
|
||||
|
|
@ -854,6 +906,8 @@ QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
|
|||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
wma_mask_tx_ht_rate(wma, params->supportedRates.supportedMCSSet);
|
||||
|
||||
qdf_mem_zero(&peer_legacy_rates, sizeof(wmi_rate_set));
|
||||
qdf_mem_zero(&peer_ht_rates, sizeof(wmi_rate_set));
|
||||
qdf_mem_zero(cmd, sizeof(struct peer_assoc_params));
|
||||
|
|
|
|||
Loading…
Reference in a new issue