qcacld-3.0: Enable Tx beamformee in SAP mode
Currently Tx beamformee feature is enabled only in STA mode. Add knob to enable or disable the Tx beamformee feature in SAP mode Change-Id: I6ea218b3bff6c973688aad716a3f1a3c8acc469b CRs-Fixed: 963034
This commit is contained in:

committed by
Akash Patel

parent
945c02a9d6
commit
381c39f7c4
@@ -367,6 +367,9 @@ gEnableRXLDPC=1
|
||||
#Enable/Disable Tx beamforming
|
||||
gTxBFEnable=1
|
||||
|
||||
#Enable/Disable Tx beamformee in SAP mode
|
||||
gEnableTxBFeeSAP=1
|
||||
|
||||
# Enable Tx beamforming in VHT20MHz
|
||||
# Valid values are 0,1. If commented out, the default value is 0.
|
||||
# 0=disable, 1=enable
|
||||
|
@@ -1739,6 +1739,15 @@ typedef enum {
|
||||
#define CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MAX (WNI_CFG_VHT_SU_BEAMFORMEE_CAP_STAMAX)
|
||||
#define CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_DEFAULT (WNI_CFG_VHT_SU_BEAMFORMEE_CAP_STADEF)
|
||||
|
||||
/*
|
||||
* Enable / Disable Tx beamformee in SAP mode
|
||||
* Default: Disable
|
||||
*/
|
||||
#define CFG_VHT_ENABLE_TXBF_SAP_MODE "gEnableTxBFeeSAP"
|
||||
#define CFG_VHT_ENABLE_TXBF_SAP_MODE_MIN (0)
|
||||
#define CFG_VHT_ENABLE_TXBF_SAP_MODE_MAX (1)
|
||||
#define CFG_VHT_ENABLE_TXBF_SAP_MODE_DEFAULT (0)
|
||||
|
||||
#define CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED "gTxBFCsnValue"
|
||||
#define CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MIN (WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_STAMIN)
|
||||
#define CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MAX (WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_STAMAX - 1)
|
||||
@@ -3154,6 +3163,7 @@ struct hdd_config {
|
||||
uint8_t vhtRxMCS;
|
||||
uint8_t vhtTxMCS;
|
||||
bool enableTxBF;
|
||||
bool enable_txbf_sap_mode;
|
||||
uint8_t txBFCsnValue;
|
||||
bool enable_su_tx_bformer;
|
||||
uint8_t vhtRxMCS2x2;
|
||||
|
@@ -2427,6 +2427,13 @@ REG_TABLE_ENTRY g_registry_table[] = {
|
||||
CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MIN,
|
||||
CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MAX),
|
||||
|
||||
REG_VARIABLE(CFG_VHT_ENABLE_TXBF_SAP_MODE, WLAN_PARAM_Integer,
|
||||
struct hdd_config, enable_txbf_sap_mode,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_VHT_ENABLE_TXBF_SAP_MODE_DEFAULT,
|
||||
CFG_VHT_ENABLE_TXBF_SAP_MODE_MIN,
|
||||
CFG_VHT_ENABLE_TXBF_SAP_MODE_MAX),
|
||||
|
||||
REG_VARIABLE(CFG_VHT_ENABLE_TXBF_IN_20MHZ, WLAN_PARAM_Integer,
|
||||
struct hdd_config, enableTxBFin20MHz,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
@@ -6485,6 +6492,8 @@ CDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
|
||||
#ifdef WLAN_FEATURE_11AC
|
||||
smeConfig->csrConfig.nVhtChannelWidth = pConfig->vhtChannelWidth;
|
||||
smeConfig->csrConfig.enableTxBF = pConfig->enableTxBF;
|
||||
smeConfig->csrConfig.enable_txbf_sap_mode =
|
||||
pConfig->enable_txbf_sap_mode;
|
||||
smeConfig->csrConfig.txBFCsnValue = pConfig->txBFCsnValue;
|
||||
smeConfig->csrConfig.enable2x2 = pConfig->enable2x2;
|
||||
smeConfig->csrConfig.enableVhtFor24GHz = pConfig->enableVhtFor24GHzBand;
|
||||
|
@@ -610,6 +610,8 @@ typedef struct sSirSmeStartBssReq {
|
||||
uint8_t center_freq_seg0;
|
||||
uint8_t center_freq_seg1;
|
||||
uint8_t sec_ch_offset;
|
||||
bool txbf_ini_enabled;
|
||||
uint8_t txbf_csn_val;
|
||||
|
||||
uint8_t privacy;
|
||||
uint8_t apUapsdEnable;
|
||||
|
@@ -330,6 +330,7 @@ typedef struct sPESession /* Added to Support BT-AMP */
|
||||
phy_ch_width ch_width;
|
||||
uint8_t ch_center_freq_seg1;
|
||||
uint8_t txBFIniFeatureEnabled;
|
||||
uint8_t txbf_csn_value;
|
||||
uint8_t txMuBformee;
|
||||
uint8_t enableVhtpAid;
|
||||
uint8_t enableVhtGid;
|
||||
|
@@ -718,7 +718,6 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
||||
session->vhtCapability);
|
||||
session->txLdpcIniFeatureEnabled =
|
||||
sme_start_bss_req->txLdpcIniFeatureEnabled;
|
||||
|
||||
if (mac_ctx->roam.configParam.enable2x2)
|
||||
session->nss = 2;
|
||||
else
|
||||
@@ -741,6 +740,12 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
||||
case eSIR_INFRA_AP_MODE:
|
||||
lim_configure_ap_start_bss_session(mac_ctx, session,
|
||||
sme_start_bss_req);
|
||||
if (session->pePersona == CDF_SAP_MODE) {
|
||||
session->txBFIniFeatureEnabled =
|
||||
sme_start_bss_req->txbf_ini_enabled;
|
||||
session->txbf_csn_value =
|
||||
sme_start_bss_req->txbf_csn_val;
|
||||
}
|
||||
break;
|
||||
case eSIR_IBSS_MODE:
|
||||
session->limSystemRole = eLIM_STA_IN_IBSS_ROLE;
|
||||
@@ -1740,17 +1745,7 @@ __lim_process_sme_join_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
||||
CDF_TRACE(CDF_MODULE_ID_PE, CDF_TRACE_LEVEL_INFO_MED,
|
||||
"%s: txBFCsnValue=%d", __func__,
|
||||
sme_join_req->txBFCsnValue);
|
||||
if (cfg_set_int(mac_ctx,
|
||||
WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED,
|
||||
sme_join_req->txBFCsnValue) != eSIR_SUCCESS) {
|
||||
/*
|
||||
* Set Failed for CFG
|
||||
* CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED
|
||||
*/
|
||||
lim_log(mac_ctx, LOGP, FL("Set Fail CFG"));
|
||||
ret_code = eSIR_LOGP_EXCEPTION;
|
||||
goto end;
|
||||
}
|
||||
session->txbf_csn_value = sme_join_req->txBFCsnValue;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
@@ -1002,6 +1002,8 @@ populate_dot11f_vht_caps(tpAniSirGlobal pMac,
|
||||
CFG_GET_INT(nStatus, pMac,
|
||||
WNI_CFG_VHT_MU_BEAMFORMEE_CAP, nCfgValue);
|
||||
pDot11f->muBeamformeeCap = (nCfgValue & 0x0001);
|
||||
pDot11f->csnofBeamformerAntSup =
|
||||
psessionEntry->txbf_csn_value;
|
||||
} else {
|
||||
pDot11f->muBeamformeeCap = 0;
|
||||
}
|
||||
@@ -1037,11 +1039,13 @@ populate_dot11f_vht_caps(tpAniSirGlobal pMac,
|
||||
CFG_GET_INT(nStatus, pMac, WNI_CFG_VHT_SU_BEAMFORMER_CAP,
|
||||
nCfgValue);
|
||||
pDot11f->suBeamFormerCap = (nCfgValue & 0x0001);
|
||||
|
||||
nCfgValue = 0;
|
||||
CFG_GET_INT(nStatus, pMac,
|
||||
WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED,
|
||||
nCfgValue);
|
||||
pDot11f->csnofBeamformerAntSup = (nCfgValue & 0x0007);
|
||||
}
|
||||
nCfgValue = 0;
|
||||
CFG_GET_INT(nStatus, pMac, WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED,
|
||||
nCfgValue);
|
||||
pDot11f->csnofBeamformerAntSup = (nCfgValue & 0x0007);
|
||||
|
||||
nCfgValue = 0;
|
||||
CFG_GET_INT(nStatus, pMac, WNI_CFG_VHT_NUM_SOUNDING_DIMENSIONS,
|
||||
|
@@ -1166,6 +1166,7 @@ typedef struct tagCsrConfigParam {
|
||||
#ifdef WLAN_FEATURE_11AC
|
||||
uint32_t nVhtChannelWidth;
|
||||
uint8_t enableTxBF;
|
||||
uint8_t enable_txbf_sap_mode;
|
||||
uint8_t txBFCsnValue;
|
||||
uint8_t enable2x2;
|
||||
bool enableVhtFor24GHz;
|
||||
|
@@ -601,6 +601,7 @@ typedef struct tagCsrConfig {
|
||||
#ifdef WLAN_FEATURE_11AC
|
||||
uint32_t nVhtChannelWidth;
|
||||
uint8_t txBFEnable;
|
||||
uint8_t enable_txbf_sap_mode;
|
||||
uint8_t txBFCsnValue;
|
||||
uint8_t enable2x2;
|
||||
bool enableVhtFor24GHz;
|
||||
|
@@ -2026,6 +2026,8 @@ CDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
|
||||
pMac->roam.configParam.nVhtChannelWidth =
|
||||
pParam->nVhtChannelWidth;
|
||||
pMac->roam.configParam.txBFEnable = pParam->enableTxBF;
|
||||
pMac->roam.configParam.enable_txbf_sap_mode =
|
||||
pParam->enable_txbf_sap_mode;
|
||||
pMac->roam.configParam.txBFCsnValue = pParam->txBFCsnValue;
|
||||
pMac->roam.configParam.enable2x2 = pParam->enable2x2;
|
||||
pMac->roam.configParam.enableVhtFor24GHz =
|
||||
@@ -2189,6 +2191,8 @@ CDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
|
||||
#ifdef WLAN_FEATURE_11AC
|
||||
pParam->nVhtChannelWidth = cfg_params->nVhtChannelWidth;
|
||||
pParam->enableTxBF = cfg_params->txBFEnable;
|
||||
pParam->enable_txbf_sap_mode =
|
||||
cfg_params->enable_txbf_sap_mode;
|
||||
pParam->txBFCsnValue = cfg_params->txBFCsnValue;
|
||||
pParam->enableMuBformee = cfg_params->txMuBformee;
|
||||
pParam->enableVhtFor24GHz = cfg_params->enableVhtFor24GHz;
|
||||
@@ -14600,6 +14604,10 @@ CDF_STATUS csr_send_mb_start_bss_req_msg(tpAniSirGlobal pMac, uint32_t sessionId
|
||||
pMsg->isCoalesingInIBSSAllowed = pMac->isCoalesingInIBSSAllowed;
|
||||
pMsg->bssPersona = pParam->bssPersona;
|
||||
pMsg->txLdpcIniFeatureEnabled = pMac->roam.configParam.txLdpcEnable;
|
||||
pMsg->txbf_ini_enabled =
|
||||
(uint8_t)pMac->roam.configParam.txBFEnable &&
|
||||
(uint8_t)pMac->roam.configParam.enable_txbf_sap_mode;
|
||||
pMsg->txbf_csn_val = (uint8_t)pMac->roam.configParam.txBFCsnValue;
|
||||
#ifdef WLAN_FEATURE_11W
|
||||
pMsg->pmfCapable = pParam->mfpCapable;
|
||||
pMsg->pmfRequired = pParam->mfpRequired;
|
||||
|
Reference in New Issue
Block a user