diff options
| author | Padma, Santhosh Kumar <skpadma@qti.qualcomm.com> | 2016-05-17 19:13:01 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-06-28 19:55:20 +0530 |
| commit | 4c8865e1c3a786e63fd75d487c3d546722986f86 (patch) | |
| tree | bcc4b6b8fffaff70a40dd22a6428bc55985e0b4e | |
| parent | 109d72768271f806ab3bcb5f4c0e7a0c07c000d9 (diff) | |
qcacld-2.0: Fix RSSI issue during 11R roaming
prima to qcacld-2.0 propagation
Currently, variable hdd_ReassocScenario is not reset during
11r roaming. This causes rssi value to be stale during 11r roaming
as rssi doesn't gets updated when hdd_ReassocScenario is set
in wlan_hdd_get_roam_rssi/wlan_hdd_get_rssi. Check for
11r association using pRoamInfo->is11rAssoc as well before resetting
hdd_ReassocScenario. This check for 11R association allows
rssi to be updated during 11r roaming.
Also, add a check for 11r association to allow other functionality
during key complete for 11r roaming.
Change-Id: Ie1b4b205618d6744a15cd27e2b8f1391f76564c9
CRs-Fixed: 978677
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_assoc.c | 10 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 2 |
2 files changed, 8 insertions, 4 deletions
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c index d71149c89541..92af328f73ef 100644 --- a/CORE/HDD/src/wlan_hdd_assoc.c +++ b/CORE/HDD/src/wlan_hdd_assoc.c @@ -4003,8 +4003,8 @@ hdd_smeRoamCallback(void *pContext, tCsrRoamInfo *pRoamInfo, tANI_U32 roamId, if((pHddCtx) && (VOS_TRUE == pHddStaCtx->hdd_ReassocScenario) && (TRUE == pHddCtx->hdd_wlan_suspended) && - (eCSR_ROAM_RESULT_NONE == roamResult)) - { + ((eCSR_ROAM_RESULT_NONE == roamResult)|| + (pRoamInfo && pRoamInfo->is11rAssoc))) { /* Send DTIM period to the FW; only if the wlan is already in suspend. This is the case with roaming (reassoc), DELETE_BSS_REQ zeroes out Modulated/Dynamic DTIM sent in @@ -4029,7 +4029,8 @@ hdd_smeRoamCallback(void *pContext, tCsrRoamInfo *pRoamInfo, tANI_U32 roamId, if ((pHddCtx) && (FULL_POWER == pmcGetPmcState(pHddCtx->hHal)) && (VOS_TRUE == pHddStaCtx->hdd_ReassocScenario) && - (eCSR_ROAM_RESULT_NONE == roamResult)) { + ((eCSR_ROAM_RESULT_NONE == roamResult) || + (pRoamInfo && pRoamInfo->is11rAssoc))) { hddLog(LOG1, FL("Device in full power, Stop and start traffic timer for roaming")); pmcStopTrafficTimer(pHddCtx->hHal); @@ -4039,7 +4040,8 @@ hdd_smeRoamCallback(void *pContext, tCsrRoamInfo *pRoamInfo, tANI_U32 roamId, hddLog(LOGP, FL("Cannot start traffic timer")); } halStatus = hdd_RoamSetKeyCompleteHandler( pAdapter, pRoamInfo, roamId, roamStatus, roamResult ); - if (eCSR_ROAM_RESULT_NONE == roamResult) { + if ((eCSR_ROAM_RESULT_NONE == roamResult) || + (pRoamInfo && pRoamInfo->is11rAssoc)) { pHddStaCtx->hdd_ReassocScenario = VOS_FALSE; hddLog(LOG1, FL("hdd_ReassocScenario set to: %d, set key complete, session: %d"), diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c index 89761bf56a00..cee45d62034e 100644 --- a/CORE/SME/src/csr/csrApiRoam.c +++ b/CORE/SME/src/csr/csrApiRoam.c @@ -11101,6 +11101,8 @@ void csrRoamCheckForLinkStatusChange( tpAniSirGlobal pMac, tSirSmeRsp *pSirMsg ) "command failed(%d) PeerMac "MAC_ADDRESS_STR, pRsp->statusCode, MAC_ADDR_ARRAY(pRsp->peerMacAddr)); } + roamInfo.is11rAssoc = csrRoamIs11rAssoc(pMac, + sessionId); csrRoamCallCallback(pMac, sessionId, &roamInfo, pCommand->u.setKeyCmd.roamId, eCSR_ROAM_SET_KEY_COMPLETE, result); // Indicate SME_QOS that the SET_KEY is completed, so that SME_QOS |
