diff options
| author | Mushtaq A Mujale <mmujale@qca.qualcomm.com> | 2013-09-24 20:13:53 -0700 |
|---|---|---|
| committer | Madan Mohan Koyyalamudi <mkoyyala@qca.qualcomm.com> | 2013-10-23 20:04:18 -0700 |
| commit | 4ce88dc8047c60eca3fcef7bb6a9a4439f59ec45 (patch) | |
| tree | 97f377b299c7d9f3805d051de5bed38139926997 | |
| parent | 57d9a46647e6938f18437a7cd247fab05d7c803f (diff) | |
cld: Multiuser Transmit Beamforming Host changes
Bringing in the MU TxBformee host related changes, there is an
ini(gEnableMuBformee) configuration knob to control the feature,
which is not yet exposed to ini file as the fw support is yet to come
in.
CRs-Fixed: 553355
Change-Id: I03ade42f88e8e18b114e95086a19f3ac718668f6
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg.h | 6 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 26 | ||||
| -rw-r--r-- | CORE/MAC/inc/sirApi.h | 1 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/include/limSession.h | 1 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limAssocUtils.c | 13 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c | 1 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c | 1 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limSerDesUtils.c | 5 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/inc/legacy/halMsgApi.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 20 | ||||
| -rw-r--r-- | CORE/SME/inc/csrApi.h | 1 | ||||
| -rw-r--r-- | CORE/SME/inc/csrInternal.h | 1 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 7 | ||||
| -rw-r--r-- | CORE/WDA/inc/legacy/halMsgApi.h | 1 |
14 files changed, 82 insertions, 3 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index 52352a13358c..7eb062ee29f6 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -1297,6 +1297,11 @@ typedef enum #define CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX ( 1 ) #define CFG_VHT_ENABLE_2x2_CAP_FEATURE_DEFAULT ( 0 ) +#define CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE "gEnableMuBformee" +#define CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MIN ( 0 ) +#define CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MAX ( 1 ) +#define CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_DEFAULT ( 0 ) + #endif #define CFG_REPORT_MAX_LINK_SPEED "gReportMaxLinkSpeed" @@ -2123,6 +2128,7 @@ typedef struct v_U8_t vhtTxMCS2x2; v_BOOL_t enable2x2; v_BOOL_t enableVhtFor24GHzBand; + v_BOOL_t enableMuBformee; #endif v_U8_t enableModulatedDTIM; v_U32_t fEnableMCAddrList; diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c index a553effd2776..44f9f4ca192e 100644 --- a/CORE/HDD/src/wlan_hdd_cfg.c +++ b/CORE/HDD/src/wlan_hdd_cfg.c @@ -1996,6 +1996,12 @@ REG_VARIABLE( CFG_ENABLE_VHT_FOR_24GHZ_NAME, WLAN_PARAM_Integer, CFG_ENABLE_VHT_FOR_24GHZ_DEFAULT, CFG_ENABLE_VHT_FOR_24GHZ_MIN, CFG_ENABLE_VHT_FOR_24GHZ_MAX), +REG_VARIABLE( CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE, WLAN_PARAM_Integer, + hdd_config_t, enableMuBformee, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_DEFAULT, + CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MIN, + CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MAX ), #endif REG_VARIABLE( CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer, @@ -3769,6 +3775,25 @@ v_BOOL_t hdd_update_config_dat( hdd_context_t *pHddCtx ) hddLog(LOGE, "Could not pass on WNI_CFG_VHT_AMPDU_LEN_EXPONENT to CCM\n"); } + /* Change MU Bformee only when TxBF is enabled */ + if (pConfig->enableTxBF) + { + ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_VHT_MU_BEAMFORMEE_CAP, + &temp); + + if(temp != pConfig->enableMuBformee) + { + if(ccmCfgSetInt(pHddCtx->hHal, + WNI_CFG_VHT_MU_BEAMFORMEE_CAP, + pConfig->enableMuBformee, NULL, + eANI_BOOLEAN_FALSE) ==eHAL_STATUS_FAILURE) + { + fStatus = FALSE; + hddLog(LOGE, "Could not pass on\ + WNI_CFG_VHT_MU_BEAMFORMEE_CAP to CCM\n"); + } + } + } } } #endif @@ -3957,6 +3982,7 @@ VOS_STATUS hdd_set_sme_config( hdd_context_t *pHddCtx ) smeConfig.csrConfig.txBFCsnValue = pConfig->txBFCsnValue; smeConfig.csrConfig.enable2x2 = pConfig->enable2x2; smeConfig.csrConfig.enableVhtFor24GHz = pConfig->enableVhtFor24GHzBand; + smeConfig.csrConfig.enableMuBformee = pConfig->enableMuBformee; #endif smeConfig.csrConfig.AdHocChannel5G = pConfig->AdHocChannel5G; smeConfig.csrConfig.AdHocChannel24 = pConfig->AdHocChannel24G; diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h index 53359683494a..62f2635c7e04 100644 --- a/CORE/MAC/inc/sirApi.h +++ b/CORE/MAC/inc/sirApi.h @@ -1049,6 +1049,7 @@ typedef struct sSirSmeJoinReq #ifdef WLAN_FEATURE_11AC tANI_U8 txBFIniFeatureEnabled; tANI_U8 txBFCsnValue; + tANI_U8 txMuBformee; #endif tAniTitanCBNeighborInfo cbNeighbors; diff --git a/CORE/MAC/src/pe/include/limSession.h b/CORE/MAC/src/pe/include/limSession.h index 91a3f60800f2..2de3fc477f9b 100644 --- a/CORE/MAC/src/pe/include/limSession.h +++ b/CORE/MAC/src/pe/include/limSession.h @@ -327,6 +327,7 @@ typedef struct sPESession // Added to Support BT-AMP tANI_U8 apCenterChan; tANI_U8 apChanWidth; tANI_U8 txBFIniFeatureEnabled; + tANI_U8 txMuBformee; #endif tANI_U8 spectrumMgtEnabled; /* *********************11H related*****************************/ diff --git a/CORE/MAC/src/pe/lim/limAssocUtils.c b/CORE/MAC/src/pe/lim/limAssocUtils.c index 4ee62c778ee9..5a09675ecce7 100644 --- a/CORE/MAC/src/pe/lim/limAssocUtils.c +++ b/CORE/MAC/src/pe/lim/limAssocUtils.c @@ -2671,6 +2671,7 @@ limAddStaSelf(tpAniSirGlobal pMac,tANI_U16 staIdx, tANI_U8 updateSta, tpPESessio } pAddStaParams->maxAmpduSize = (tANI_U8)ampduLenExponent; } + pAddStaParams->vhtTxMUBformeeCapable = psessionEntry->txMuBformee; #endif /* For Self STA get the LDPC capability from session i.e config.ini*/ @@ -3347,6 +3348,12 @@ tSirRetStatus limStaSendAddBss( tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp, { pAddBssParams->staContext.vhtTxBFCapable = 1; } + + if (pAssocRsp->VHTCaps.muBeamformerCap && + psessionEntry->txMuBformee ) + { + pAddBssParams->staContext.vhtTxMUBformeeCapable = 1; + } } #endif @@ -3657,6 +3664,12 @@ tSirRetStatus limStaSendAddBssPreAssoc( tpAniSirGlobal pMac, tANI_U8 updateEntry { pAddBssParams->staContext.vhtTxBFCapable = 1; } + + if ( pBeaconStruct->VHTCaps.muBeamformerCap && + psessionEntry->txMuBformee ) + { + pAddBssParams->staContext.vhtTxMUBformeeCapable = 1; + } } #endif if( (pBeaconStruct->HTCaps.supportedChannelWidthSet) && diff --git a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c index 39e7728d5678..2fc252b6a1d9 100644 --- a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c +++ b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c @@ -1437,6 +1437,7 @@ mlm_add_sta( { pSta->vhtCapable = VOS_TRUE; pSta->vhtTxBFCapable = psessionEntry->txBFIniFeatureEnabled; + pSta->vhtTxMUBformeeCapable = psessionEntry->txMuBformee; } // Since this is Self-STA, need to populate Self MAX_AMPDU_SIZE capabilities diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c index ce724fc27f0b..80e8a0280714 100644 --- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c +++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c @@ -1699,6 +1699,7 @@ __limProcessSmeJoinReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) if (psessionEntry->vhtCapability ) { psessionEntry->txBFIniFeatureEnabled = pSmeJoinReq->txBFIniFeatureEnabled; + psessionEntry->txMuBformee = pSmeJoinReq->txMuBformee; VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO_MED, "***__limProcessSmeJoinReq: txBFIniFeatureEnabled=%d****", diff --git a/CORE/MAC/src/pe/lim/limSerDesUtils.c b/CORE/MAC/src/pe/lim/limSerDesUtils.c index 512b38baf6a9..51d925a48234 100644 --- a/CORE/MAC/src/pe/lim/limSerDesUtils.c +++ b/CORE/MAC/src/pe/lim/limSerDesUtils.c @@ -1157,6 +1157,11 @@ limJoinReqSerDes(tpAniSirGlobal pMac, tpSirSmeJoinReq pJoinReq, tANI_U8 *pBuf) if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE) return eSIR_FAILURE; + //MuBformee + pJoinReq->txMuBformee= *pBuf++; + len--; + if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE) + return eSIR_FAILURE; // Extract Titan CB Neighbor BSS info pJoinReq->cbNeighbors.cbBssFoundPri = *pBuf; diff --git a/CORE/SERVICES/WMA/inc/legacy/halMsgApi.h b/CORE/SERVICES/WMA/inc/legacy/halMsgApi.h index bde725abc54e..da5c5126017e 100644 --- a/CORE/SERVICES/WMA/inc/legacy/halMsgApi.h +++ b/CORE/SERVICES/WMA/inc/legacy/halMsgApi.h @@ -284,6 +284,7 @@ typedef struct tANI_U8 vhtCapable; tANI_U8 vhtTxChannelWidthSet; tANI_U8 vhtTxBFCapable; + tANI_U8 vhtTxMUBformeeCapable; #endif tANI_U8 htLdpcCapable; diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 95dde9ec0fa7..1e59e18791a4 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -3634,11 +3634,18 @@ static void wma_add_bss_sta_mode(tp_wma_handle wma, tpAddBssParams params) } /* This is set when Other partner is Bformer and we are capable bformee(enabled both in ini and fw) */ - txbf_en.sutxbfee = params->staContext.vhtTxBFCapable; - txbf_en.mutxbfee = 0; + txbf_en.sutxbfee = params->staContext.vhtTxBFCapable; + txbf_en.mutxbfee = params->staContext.vhtTxMUBformeeCapable; txbf_en.sutxbfer = 0; txbf_en.mutxbfer = 0; + /* When MU TxBfee is set, SU TxBfee must be set by default */ + if (txbf_en.mutxbfee) + txbf_en.sutxbfee = txbf_en.mutxbfee; + + WMA_LOGD("txbf_en.sutxbfee %d txbf_en.mutxbfee %d\n", + txbf_en.sutxbfee, txbf_en.mutxbfee); + wmi_unified_vdev_set_param_send(wma->wmi_handle, params->staContext.smesessionId, WMI_VDEV_PARAM_TXBF, *((A_UINT8 *)&txbf_en)); @@ -3872,10 +3879,17 @@ static void wma_add_sta_req_ap_mode(tp_wma_handle wma, tpAddStaParams add_sta) /* This is set when Other partner is Bformer and we are capable bformee(enabled both in ini and fw) */ txbf_en.sutxbfee = add_sta->vhtTxBFCapable; - txbf_en.mutxbfee = 0; + txbf_en.mutxbfee = add_sta->vhtTxMUBformeeCapable; txbf_en.sutxbfer = 0; txbf_en.mutxbfer = 0; + /* When MU TxBfee is set, SU TxBfee must be set by default */ + if (txbf_en.mutxbfee) + txbf_en.sutxbfee = txbf_en.mutxbfee; + + WMA_LOGD("txbf_en.sutxbfee %d txbf_en.mutxbfee %d\n", + txbf_en.sutxbfee, txbf_en.mutxbfee); + wmi_unified_vdev_set_param_send(wma->wmi_handle, add_sta->smesessionId, WMI_VDEV_PARAM_TXBF, *((A_UINT8 *)&txbf_en)); diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h index 4595c027fe97..88eea1083e04 100644 --- a/CORE/SME/inc/csrApi.h +++ b/CORE/SME/inc/csrApi.h @@ -1069,6 +1069,7 @@ typedef struct tagCsrConfigParam tANI_U8 txBFCsnValue; tANI_U8 enable2x2; tANI_BOOLEAN enableVhtFor24GHz; + tANI_U8 enableMuBformee; #endif /* diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h index 390b866d1fda..a3f5861f4e7e 100644 --- a/CORE/SME/inc/csrInternal.h +++ b/CORE/SME/inc/csrInternal.h @@ -629,6 +629,7 @@ typedef struct tagCsrConfig tANI_U8 txBFCsnValue; tANI_U8 enable2x2; tANI_BOOLEAN enableVhtFor24GHz; + tANI_U8 txMuBformee; #endif tANI_U8 txLdpcEnable; diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c index ec8053eb971a..398592dc8d8b 100644 --- a/CORE/SME/src/csr/csrApiRoam.c +++ b/CORE/SME/src/csr/csrApiRoam.c @@ -1701,6 +1701,7 @@ eHalStatus csrChangeDefaultConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pPa pMac->roam.configParam.txBFCsnValue = pParam->txBFCsnValue; pMac->roam.configParam.enable2x2= pParam->enable2x2; pMac->roam.configParam.enableVhtFor24GHz = pParam->enableVhtFor24GHz; + pMac->roam.configParam.txMuBformee= pParam->enableMuBformee; #endif pMac->roam.configParam.txLdpcEnable = pParam->enableTxLdpc; } @@ -1782,6 +1783,7 @@ eHalStatus csrGetConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pParam) pParam->nVhtChannelWidth = pMac->roam.configParam.nVhtChannelWidth; pParam->enableTxBF = pMac->roam.configParam.txBFEnable; pParam->txBFCsnValue = pMac->roam.configParam.txBFCsnValue; + pParam->enableMuBformee = pMac->roam.configParam.txMuBformee; #endif pParam->enableTxLdpc = pMac->roam.configParam.txLdpcEnable; csrSetChannels(pMac, pParam); @@ -12301,6 +12303,11 @@ eHalStatus csrSendJoinReqMsg( tpAniSirGlobal pMac, tANI_U32 sessionId, tSirBssDe // txBFCsnValue *pBuf = (tANI_U8)pMac->roam.configParam.txBFCsnValue; pBuf++; + + // txMuBformee + *pBuf = (tANI_U8)pMac->roam.configParam.txMuBformee; + pBuf++; + #endif //BssDesc csrPrepareJoinReassocReqBuffer( pMac, pBssDescription, pBuf, diff --git a/CORE/WDA/inc/legacy/halMsgApi.h b/CORE/WDA/inc/legacy/halMsgApi.h index f8ebfb95c864..762fff53ca34 100644 --- a/CORE/WDA/inc/legacy/halMsgApi.h +++ b/CORE/WDA/inc/legacy/halMsgApi.h @@ -282,6 +282,7 @@ typedef struct tANI_U8 vhtCapable; tANI_U8 vhtTxChannelWidthSet; tANI_U8 vhtTxBFCapable; + tANI_U8 vhtTxMUBformeeCapable; #endif tANI_U8 htLdpcCapable; |
