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
|
#Enable/Disable Tx beamforming
|
||||||
gTxBFEnable=1
|
gTxBFEnable=1
|
||||||
|
|
||||||
|
#Enable/Disable Tx beamformee in SAP mode
|
||||||
|
gEnableTxBFeeSAP=1
|
||||||
|
|
||||||
# Enable Tx beamforming in VHT20MHz
|
# Enable Tx beamforming in VHT20MHz
|
||||||
# Valid values are 0,1. If commented out, the default value is 0.
|
# Valid values are 0,1. If commented out, the default value is 0.
|
||||||
# 0=disable, 1=enable
|
# 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_MAX (WNI_CFG_VHT_SU_BEAMFORMEE_CAP_STAMAX)
|
||||||
#define CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_DEFAULT (WNI_CFG_VHT_SU_BEAMFORMEE_CAP_STADEF)
|
#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 "gTxBFCsnValue"
|
||||||
#define CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MIN (WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_STAMIN)
|
#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)
|
#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 vhtRxMCS;
|
||||||
uint8_t vhtTxMCS;
|
uint8_t vhtTxMCS;
|
||||||
bool enableTxBF;
|
bool enableTxBF;
|
||||||
|
bool enable_txbf_sap_mode;
|
||||||
uint8_t txBFCsnValue;
|
uint8_t txBFCsnValue;
|
||||||
bool enable_su_tx_bformer;
|
bool enable_su_tx_bformer;
|
||||||
uint8_t vhtRxMCS2x2;
|
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_MIN,
|
||||||
CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MAX),
|
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,
|
REG_VARIABLE(CFG_VHT_ENABLE_TXBF_IN_20MHZ, WLAN_PARAM_Integer,
|
||||||
struct hdd_config, enableTxBFin20MHz,
|
struct hdd_config, enableTxBFin20MHz,
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
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
|
#ifdef WLAN_FEATURE_11AC
|
||||||
smeConfig->csrConfig.nVhtChannelWidth = pConfig->vhtChannelWidth;
|
smeConfig->csrConfig.nVhtChannelWidth = pConfig->vhtChannelWidth;
|
||||||
smeConfig->csrConfig.enableTxBF = pConfig->enableTxBF;
|
smeConfig->csrConfig.enableTxBF = pConfig->enableTxBF;
|
||||||
|
smeConfig->csrConfig.enable_txbf_sap_mode =
|
||||||
|
pConfig->enable_txbf_sap_mode;
|
||||||
smeConfig->csrConfig.txBFCsnValue = pConfig->txBFCsnValue;
|
smeConfig->csrConfig.txBFCsnValue = pConfig->txBFCsnValue;
|
||||||
smeConfig->csrConfig.enable2x2 = pConfig->enable2x2;
|
smeConfig->csrConfig.enable2x2 = pConfig->enable2x2;
|
||||||
smeConfig->csrConfig.enableVhtFor24GHz = pConfig->enableVhtFor24GHzBand;
|
smeConfig->csrConfig.enableVhtFor24GHz = pConfig->enableVhtFor24GHzBand;
|
||||||
|
@@ -610,6 +610,8 @@ typedef struct sSirSmeStartBssReq {
|
|||||||
uint8_t center_freq_seg0;
|
uint8_t center_freq_seg0;
|
||||||
uint8_t center_freq_seg1;
|
uint8_t center_freq_seg1;
|
||||||
uint8_t sec_ch_offset;
|
uint8_t sec_ch_offset;
|
||||||
|
bool txbf_ini_enabled;
|
||||||
|
uint8_t txbf_csn_val;
|
||||||
|
|
||||||
uint8_t privacy;
|
uint8_t privacy;
|
||||||
uint8_t apUapsdEnable;
|
uint8_t apUapsdEnable;
|
||||||
|
@@ -330,6 +330,7 @@ typedef struct sPESession /* Added to Support BT-AMP */
|
|||||||
phy_ch_width ch_width;
|
phy_ch_width ch_width;
|
||||||
uint8_t ch_center_freq_seg1;
|
uint8_t ch_center_freq_seg1;
|
||||||
uint8_t txBFIniFeatureEnabled;
|
uint8_t txBFIniFeatureEnabled;
|
||||||
|
uint8_t txbf_csn_value;
|
||||||
uint8_t txMuBformee;
|
uint8_t txMuBformee;
|
||||||
uint8_t enableVhtpAid;
|
uint8_t enableVhtpAid;
|
||||||
uint8_t enableVhtGid;
|
uint8_t enableVhtGid;
|
||||||
|
@@ -718,7 +718,6 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
|||||||
session->vhtCapability);
|
session->vhtCapability);
|
||||||
session->txLdpcIniFeatureEnabled =
|
session->txLdpcIniFeatureEnabled =
|
||||||
sme_start_bss_req->txLdpcIniFeatureEnabled;
|
sme_start_bss_req->txLdpcIniFeatureEnabled;
|
||||||
|
|
||||||
if (mac_ctx->roam.configParam.enable2x2)
|
if (mac_ctx->roam.configParam.enable2x2)
|
||||||
session->nss = 2;
|
session->nss = 2;
|
||||||
else
|
else
|
||||||
@@ -741,6 +740,12 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
|||||||
case eSIR_INFRA_AP_MODE:
|
case eSIR_INFRA_AP_MODE:
|
||||||
lim_configure_ap_start_bss_session(mac_ctx, session,
|
lim_configure_ap_start_bss_session(mac_ctx, session,
|
||||||
sme_start_bss_req);
|
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;
|
break;
|
||||||
case eSIR_IBSS_MODE:
|
case eSIR_IBSS_MODE:
|
||||||
session->limSystemRole = eLIM_STA_IN_IBSS_ROLE;
|
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,
|
CDF_TRACE(CDF_MODULE_ID_PE, CDF_TRACE_LEVEL_INFO_MED,
|
||||||
"%s: txBFCsnValue=%d", __func__,
|
"%s: txBFCsnValue=%d", __func__,
|
||||||
sme_join_req->txBFCsnValue);
|
sme_join_req->txBFCsnValue);
|
||||||
if (cfg_set_int(mac_ctx,
|
session->txbf_csn_value = sme_join_req->txBFCsnValue;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#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.
|
* 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,
|
CFG_GET_INT(nStatus, pMac,
|
||||||
WNI_CFG_VHT_MU_BEAMFORMEE_CAP, nCfgValue);
|
WNI_CFG_VHT_MU_BEAMFORMEE_CAP, nCfgValue);
|
||||||
pDot11f->muBeamformeeCap = (nCfgValue & 0x0001);
|
pDot11f->muBeamformeeCap = (nCfgValue & 0x0001);
|
||||||
|
pDot11f->csnofBeamformerAntSup =
|
||||||
|
psessionEntry->txbf_csn_value;
|
||||||
} else {
|
} else {
|
||||||
pDot11f->muBeamformeeCap = 0;
|
pDot11f->muBeamformeeCap = 0;
|
||||||
}
|
}
|
||||||
@@ -1037,11 +1039,13 @@ populate_dot11f_vht_caps(tpAniSirGlobal pMac,
|
|||||||
CFG_GET_INT(nStatus, pMac, WNI_CFG_VHT_SU_BEAMFORMER_CAP,
|
CFG_GET_INT(nStatus, pMac, WNI_CFG_VHT_SU_BEAMFORMER_CAP,
|
||||||
nCfgValue);
|
nCfgValue);
|
||||||
pDot11f->suBeamFormerCap = (nCfgValue & 0x0001);
|
pDot11f->suBeamFormerCap = (nCfgValue & 0x0001);
|
||||||
}
|
|
||||||
nCfgValue = 0;
|
nCfgValue = 0;
|
||||||
CFG_GET_INT(nStatus, pMac, WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED,
|
CFG_GET_INT(nStatus, pMac,
|
||||||
|
WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED,
|
||||||
nCfgValue);
|
nCfgValue);
|
||||||
pDot11f->csnofBeamformerAntSup = (nCfgValue & 0x0007);
|
pDot11f->csnofBeamformerAntSup = (nCfgValue & 0x0007);
|
||||||
|
}
|
||||||
|
|
||||||
nCfgValue = 0;
|
nCfgValue = 0;
|
||||||
CFG_GET_INT(nStatus, pMac, WNI_CFG_VHT_NUM_SOUNDING_DIMENSIONS,
|
CFG_GET_INT(nStatus, pMac, WNI_CFG_VHT_NUM_SOUNDING_DIMENSIONS,
|
||||||
|
@@ -1166,6 +1166,7 @@ typedef struct tagCsrConfigParam {
|
|||||||
#ifdef WLAN_FEATURE_11AC
|
#ifdef WLAN_FEATURE_11AC
|
||||||
uint32_t nVhtChannelWidth;
|
uint32_t nVhtChannelWidth;
|
||||||
uint8_t enableTxBF;
|
uint8_t enableTxBF;
|
||||||
|
uint8_t enable_txbf_sap_mode;
|
||||||
uint8_t txBFCsnValue;
|
uint8_t txBFCsnValue;
|
||||||
uint8_t enable2x2;
|
uint8_t enable2x2;
|
||||||
bool enableVhtFor24GHz;
|
bool enableVhtFor24GHz;
|
||||||
|
@@ -601,6 +601,7 @@ typedef struct tagCsrConfig {
|
|||||||
#ifdef WLAN_FEATURE_11AC
|
#ifdef WLAN_FEATURE_11AC
|
||||||
uint32_t nVhtChannelWidth;
|
uint32_t nVhtChannelWidth;
|
||||||
uint8_t txBFEnable;
|
uint8_t txBFEnable;
|
||||||
|
uint8_t enable_txbf_sap_mode;
|
||||||
uint8_t txBFCsnValue;
|
uint8_t txBFCsnValue;
|
||||||
uint8_t enable2x2;
|
uint8_t enable2x2;
|
||||||
bool enableVhtFor24GHz;
|
bool enableVhtFor24GHz;
|
||||||
|
@@ -2026,6 +2026,8 @@ CDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
|
|||||||
pMac->roam.configParam.nVhtChannelWidth =
|
pMac->roam.configParam.nVhtChannelWidth =
|
||||||
pParam->nVhtChannelWidth;
|
pParam->nVhtChannelWidth;
|
||||||
pMac->roam.configParam.txBFEnable = pParam->enableTxBF;
|
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.txBFCsnValue = pParam->txBFCsnValue;
|
||||||
pMac->roam.configParam.enable2x2 = pParam->enable2x2;
|
pMac->roam.configParam.enable2x2 = pParam->enable2x2;
|
||||||
pMac->roam.configParam.enableVhtFor24GHz =
|
pMac->roam.configParam.enableVhtFor24GHz =
|
||||||
@@ -2189,6 +2191,8 @@ CDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
|
|||||||
#ifdef WLAN_FEATURE_11AC
|
#ifdef WLAN_FEATURE_11AC
|
||||||
pParam->nVhtChannelWidth = cfg_params->nVhtChannelWidth;
|
pParam->nVhtChannelWidth = cfg_params->nVhtChannelWidth;
|
||||||
pParam->enableTxBF = cfg_params->txBFEnable;
|
pParam->enableTxBF = cfg_params->txBFEnable;
|
||||||
|
pParam->enable_txbf_sap_mode =
|
||||||
|
cfg_params->enable_txbf_sap_mode;
|
||||||
pParam->txBFCsnValue = cfg_params->txBFCsnValue;
|
pParam->txBFCsnValue = cfg_params->txBFCsnValue;
|
||||||
pParam->enableMuBformee = cfg_params->txMuBformee;
|
pParam->enableMuBformee = cfg_params->txMuBformee;
|
||||||
pParam->enableVhtFor24GHz = cfg_params->enableVhtFor24GHz;
|
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->isCoalesingInIBSSAllowed = pMac->isCoalesingInIBSSAllowed;
|
||||||
pMsg->bssPersona = pParam->bssPersona;
|
pMsg->bssPersona = pParam->bssPersona;
|
||||||
pMsg->txLdpcIniFeatureEnabled = pMac->roam.configParam.txLdpcEnable;
|
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
|
#ifdef WLAN_FEATURE_11W
|
||||||
pMsg->pmfCapable = pParam->mfpCapable;
|
pMsg->pmfCapable = pParam->mfpCapable;
|
||||||
pMsg->pmfRequired = pParam->mfpRequired;
|
pMsg->pmfRequired = pParam->mfpRequired;
|
||||||
|
Reference in New Issue
Block a user