summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPadma, Santhosh Kumar <skpadma@qti.qualcomm.com>2016-05-17 19:13:01 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-06-28 19:55:20 +0530
commit4c8865e1c3a786e63fd75d487c3d546722986f86 (patch)
treebcc4b6b8fffaff70a40dd22a6428bc55985e0b4e
parent109d72768271f806ab3bcb5f4c0e7a0c07c000d9 (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.c10
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c2
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