mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 15:11:48 -04:00
qcacld-3.0: Introduce INI to disable high HT MCS for 2G STA
To resolve one of IOT issues, introduce INI called "disable_high_ht_mcs_2x2" which will disable high MCS indices for 2G STA case based on INI value. Change-Id: I60c5edd89a42f74c0f439fe6a9ab0c75373622b2 CRs-Fixed: 2087438
This commit is contained in:
parent
3fb61716e7
commit
158bfe6e18
6 changed files with 61 additions and 1 deletions
|
|
@ -4546,6 +4546,36 @@ enum hdd_link_speed_rpt_type {
|
|||
#define CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX (1)
|
||||
#define CFG_VHT_ENABLE_2x2_CAP_FEATURE_DEFAULT (0)
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* disable_high_ht_mcs_2x2 - disable high mcs index for 2nd stream in 2.4G
|
||||
* @Min: 0
|
||||
* @Max: 8
|
||||
* @Default: 0
|
||||
*
|
||||
* This ini is used to disable high HT MCS index for 2.4G STA connection.
|
||||
* It has been introduced to resolve IOT issue with one of the vendor.
|
||||
*
|
||||
* Note: This INI is not useful with 1x1 setting. If some platform supports
|
||||
* only 1x1 then this INI is not useful.
|
||||
*
|
||||
* 0 - It won't disable any HT MCS index (just like normal HT MCS)
|
||||
* 1 - It will disable 15th bit from HT RX MCS set (from 8-15 bits slot)
|
||||
* 2 - It will disable 14th & 15th bits from HT RX MCS set
|
||||
* 3 - It will disable 13th, 14th, & 15th bits from HT RX MCS set
|
||||
* and so on.
|
||||
*
|
||||
* Related: STA
|
||||
*
|
||||
* Supported Feature: 11n
|
||||
*
|
||||
* Usage: External
|
||||
*/
|
||||
#define CFG_DISABLE_HIGH_HT_RX_MCS_2x2 "disable_high_ht_mcs_2x2"
|
||||
#define CFG_DISABLE_HIGH_HT_RX_MCS_2x2_MIN (0)
|
||||
#define CFG_DISABLE_HIGH_HT_RX_MCS_2x2_MAX (8)
|
||||
#define CFG_DISABLE_HIGH_HT_RX_MCS_2x2_DEFAULT (0)
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* gStaPrefer80MHzOver160MHz - set Sta perferance to connect in 80HZ/160HZ
|
||||
|
|
@ -11419,6 +11449,7 @@ struct hdd_config {
|
|||
bool enable_su_tx_bformer;
|
||||
uint8_t vhtRxMCS2x2;
|
||||
uint8_t vhtTxMCS2x2;
|
||||
uint8_t disable_high_ht_mcs_2x2;
|
||||
bool enable2x2;
|
||||
uint32_t vdev_type_nss_2g;
|
||||
uint32_t vdev_type_nss_5g;
|
||||
|
|
|
|||
|
|
@ -2040,6 +2040,13 @@ struct reg_table_entry g_registry_table[] = {
|
|||
CFG_VHT_ENABLE_2x2_CAP_FEATURE_MIN,
|
||||
CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX),
|
||||
|
||||
REG_VARIABLE(CFG_DISABLE_HIGH_HT_RX_MCS_2x2, WLAN_PARAM_Integer,
|
||||
struct hdd_config, disable_high_ht_mcs_2x2,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_DISABLE_HIGH_HT_RX_MCS_2x2_DEFAULT,
|
||||
CFG_DISABLE_HIGH_HT_RX_MCS_2x2_MIN,
|
||||
CFG_DISABLE_HIGH_HT_RX_MCS_2x2_MAX),
|
||||
|
||||
REG_VARIABLE(CFG_VDEV_TYPE_NSS_2G, WLAN_PARAM_Integer,
|
||||
struct hdd_config, vdev_type_nss_2g,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
|
|
@ -7674,6 +7681,8 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
|
|||
|
||||
smeConfig->csrConfig.enable_tx_ldpc = pConfig->enable_tx_ldpc;
|
||||
smeConfig->csrConfig.enable_rx_ldpc = pConfig->enable_rx_ldpc;
|
||||
smeConfig->csrConfig.disable_high_ht_mcs_2x2 =
|
||||
pConfig->disable_high_ht_mcs_2x2;
|
||||
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
|
||||
smeConfig->csrConfig.cc_switch_mode = pConfig->WlanMccToSccSwitchMode;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -608,6 +608,7 @@ populate_dot11f_ht_caps(tpAniSirGlobal pMac,
|
|||
uint8_t nCfgValue8;
|
||||
tSirRetStatus nSirStatus;
|
||||
tSirMacHTParametersInfo *pHTParametersInfo;
|
||||
uint8_t disable_high_ht_mcs_2x2 = 0;
|
||||
union {
|
||||
uint16_t nCfgValue16;
|
||||
tSirMacHTCapabilityInfo htCapInfo;
|
||||
|
|
@ -676,6 +677,11 @@ populate_dot11f_ht_caps(tpAniSirGlobal pMac,
|
|||
SIZE_OF_SUPPORTED_MCS_SET);
|
||||
|
||||
if (psessionEntry) {
|
||||
disable_high_ht_mcs_2x2 =
|
||||
pMac->roam.configParam.disable_high_ht_mcs_2x2;
|
||||
pe_debug("disable HT high MCS INI param[%d]",
|
||||
disable_high_ht_mcs_2x2);
|
||||
|
||||
if (pMac->lteCoexAntShare
|
||||
&& (IS_24G_CH(psessionEntry->currentOperChannel))) {
|
||||
if (!(IS_2X2_CHAIN(psessionEntry->chainMask))) {
|
||||
|
|
@ -686,8 +692,17 @@ populate_dot11f_ht_caps(tpAniSirGlobal pMac,
|
|||
}
|
||||
}
|
||||
}
|
||||
if (psessionEntry->nss == NSS_1x1_MODE)
|
||||
if (psessionEntry->nss == NSS_1x1_MODE) {
|
||||
pDot11f->supportedMCSSet[1] = 0;
|
||||
} else if (IS_24G_CH(psessionEntry->currentOperChannel) &&
|
||||
disable_high_ht_mcs_2x2 &&
|
||||
(psessionEntry->pePersona == QDF_STA_MODE)) {
|
||||
pe_debug("Disabling high HT MCS [%d]",
|
||||
disable_high_ht_mcs_2x2);
|
||||
pDot11f->supportedMCSSet[1] =
|
||||
(pDot11f->supportedMCSSet[1] >>
|
||||
disable_high_ht_mcs_2x2);
|
||||
}
|
||||
}
|
||||
|
||||
/* If STA mode, session supported NSS > 1 and
|
||||
|
|
|
|||
|
|
@ -1246,6 +1246,7 @@ typedef struct tagCsrConfigParam {
|
|||
uint8_t scanCfgAgingTime;
|
||||
uint8_t enable_tx_ldpc;
|
||||
uint8_t enable_rx_ldpc;
|
||||
uint8_t disable_high_ht_mcs_2x2;
|
||||
uint8_t max_amsdu_num;
|
||||
uint8_t nSelect5GHzMargin;
|
||||
uint8_t isCoalesingInIBSSAllowed;
|
||||
|
|
|
|||
|
|
@ -565,6 +565,7 @@ typedef struct tagCsrConfig {
|
|||
bool send_smps_action;
|
||||
uint8_t tx_ldpc_enable;
|
||||
uint8_t rx_ldpc_enable;
|
||||
uint8_t disable_high_ht_mcs_2x2;
|
||||
/*
|
||||
* Enable/Disable heartbeat offload
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2689,6 +2689,8 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
|
|||
pParam->send_smps_action;
|
||||
pMac->roam.configParam.tx_ldpc_enable = pParam->enable_tx_ldpc;
|
||||
pMac->roam.configParam.rx_ldpc_enable = pParam->enable_rx_ldpc;
|
||||
pMac->roam.configParam.disable_high_ht_mcs_2x2 =
|
||||
pParam->disable_high_ht_mcs_2x2;
|
||||
pMac->roam.configParam.ignore_peer_erp_info =
|
||||
pParam->ignore_peer_erp_info;
|
||||
pMac->roam.configParam.max_amsdu_num =
|
||||
|
|
@ -2953,6 +2955,7 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
|
|||
#endif
|
||||
pParam->enable_tx_ldpc = cfg_params->tx_ldpc_enable;
|
||||
pParam->enable_rx_ldpc = cfg_params->rx_ldpc_enable;
|
||||
pParam->disable_high_ht_mcs_2x2 = cfg_params->disable_high_ht_mcs_2x2;
|
||||
pParam->max_amsdu_num = cfg_params->max_amsdu_num;
|
||||
pParam->nSelect5GHzMargin = cfg_params->nSelect5GHzMargin;
|
||||
pParam->isCoalesingInIBSSAllowed = cfg_params->isCoalesingInIBSSAllowed;
|
||||
|
|
|
|||
Loading…
Reference in a new issue