From f338634bcc1a169fb0e0485e788a0a8b8ec980c4 Mon Sep 17 00:00:00 2001 From: "Padma, Santhosh Kumar" Date: Thu, 23 Jun 2016 16:33:08 +0530 Subject: [PATCH] qcacld-2.0: Fix Beamforming during roaming Currently, capabilities suBeamformeeCap and muBeamformeeCap are set during association request but not in re-association request. This can lead to failure in beamforming after roaming. Fix this by updating them during roaming as well. Change-Id: I28e86b93a5114f3b76733effe4428a92cf94b441 CRs-Fixed: 1033328 --- .../MAC/src/pe/lim/limProcessSmeReqMessages.c | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/drivers/net/wireless/qcacld-2.0/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/drivers/net/wireless/qcacld-2.0/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c index d5357dcfb84d..ccabab00d9db 100644 --- a/drivers/net/wireless/qcacld-2.0/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c +++ b/drivers/net/wireless/qcacld-2.0/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c @@ -2462,6 +2462,45 @@ __limProcessSmeReassocReq(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) psessionEntry->dot11mode = pReassocReq->dot11mode; psessionEntry->vhtCapability = IS_DOT11_MODE_VHT(pReassocReq->dot11mode); +#ifdef WLAN_FEATURE_11AC + if (psessionEntry->vhtCapability) { + if (psessionEntry->pePersona == VOS_STA_MODE) + psessionEntry->txBFIniFeatureEnabled = + pReassocReq->txBFIniFeatureEnabled; + else + psessionEntry->txBFIniFeatureEnabled = 0; + + psessionEntry->txMuBformee = pReassocReq->txMuBformee; + psessionEntry->enableVhtpAid = pReassocReq->enableVhtpAid; + psessionEntry->enableVhtGid = pReassocReq->enableVhtGid; + if (psessionEntry->txBFIniFeatureEnabled) { + if (cfgSetInt(pMac, WNI_CFG_VHT_SU_BEAMFORMEE_CAP, + psessionEntry->txBFIniFeatureEnabled) + != eSIR_SUCCESS) { + limLog(pMac, LOGE, FL("could not set " + "WNI_CFG_VHT_SU_BEAMFORMEE_CAP at CFG")); + retCode = eSIR_LOGP_EXCEPTION; + goto end; + } + if (cfgSetInt(pMac, WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED, + pReassocReq->txBFCsnValue) + != eSIR_SUCCESS) { + limLog(pMac, LOGE, FL("could not set " + "WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED at CFG")); + retCode = eSIR_LOGP_EXCEPTION; + goto end; + } + } + } + limLog(pMac, LOG1, + FL("vhtCapability: %d txBFIniFeatureEnabled: %d" + "txBFCsnValue: %d txMuBformee: %d"), + psessionEntry->vhtCapability, + psessionEntry->txBFIniFeatureEnabled, + pReassocReq->txBFCsnValue, + psessionEntry->txMuBformee); +#endif + psessionEntry->enableHtSmps = pReassocReq->enableHtSmps; psessionEntry->htSmpsvalue = pReassocReq->htSmps; limLog(pMac, LOG1, FL("enableHtSmps: %d htSmps: %d supported nss 1x1: %d"),