summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortinlin <tinlin@codeaurora.org>2018-05-29 19:38:25 +0800
committertinlin <tinlin@codeaurora.org>2018-05-30 09:59:38 +0800
commit7e30c67dfd97d100de0b13e9f6f15a9fbeb6b290 (patch)
tree6c5c4dbbf35a10edbba28ae003c24207692c8523
parent87831f20da00c02417dc98e756ea2a8d55a2779b (diff)
qcacld-2.0: Improve empty beacon fix in 802.11k
While connected AP requires DUT to do radio measurement for itself in passive scan mode, DUT sends empty beacon report. In passive scan, sta only listens beacons. Connected AP beacon is offloaded to firmware, and Firmware discards it except that special IE exists in the beacon. Connected AP beacon will not be sent to host. Hence, timer of connected BSS is not updated in scan result lists and cannot meet "scan timer > RRM_scan_timer". Fix the issue by adding connected BSS judging condition. Change-Id: I8ac1fe87b6a8fa452b17018de744794cf8053afb CRs-Fixed: 2242170
-rw-r--r--CORE/SME/src/rrm/sme_rrm.c37
1 files changed, 21 insertions, 16 deletions
diff --git a/CORE/SME/src/rrm/sme_rrm.c b/CORE/SME/src/rrm/sme_rrm.c
index 6f090be694d1..cec781bd13e4 100644
--- a/CORE/SME/src/rrm/sme_rrm.c
+++ b/CORE/SME/src/rrm/sme_rrm.c
@@ -474,6 +474,7 @@ static eHalStatus sme_RrmSendScanResult( tpAniSirGlobal pMac,
tpRrmSMEContext pSmeRrmContext = &pMac->rrm.rrmSmeContext;
tANI_U32 sessionId;
tCsrRoamInfo *roam_info;
+ tSirScanType scan_type;
#if defined WLAN_VOWIFI_DEBUG
smsLog( pMac, LOGE, "Send scan result to PE ");
@@ -591,31 +592,35 @@ static eHalStatus sme_RrmSendScanResult( tpAniSirGlobal pMac,
#endif /*FEATURE_WLAN_ESE_UPLOAD*/
status = sme_RrmSendBeaconReportXmitInd( pMac, NULL, measurementDone, 0 );
}
+ if (eRRM_MSG_SOURCE_ESE_UPLOAD == pSmeRrmContext->msgSource ||
+ eRRM_MSG_SOURCE_LEGACY_ESE == pSmeRrmContext->msgSource)
+ scan_type = pSmeRrmContext->measMode[pSmeRrmContext->currentIndex];
+ else
+ scan_type = pSmeRrmContext->measMode[0];
counter=0;
while (pScanResult)
{
/*
- * If scan results containing connected BSS, "pScanResult->timer >= RRM_scan_timer"
- * is not suitable for the scan timer of connected BSS is unchangable.
+ * In passive scan, sta listens beacon. Connected AP beacon
+ * is offloaded to firmware. Firmware will discard
+ * connected AP beacon except that special IE exists.
+ * Connected AP beacon will not be sent to host. Hence, timer
+ * of connected AP in scan results is not updated and can
+ * not meet "pScanResult->timer >= RRM_scan_timer".
*/
- uint8_t i;
tCsrRoamSession *session;
uint8_t is_conn_bss_found = false;
- for (i = 0; i < CSR_ROAM_SESSION_MAX; i++)
- {
- if (CSR_IS_SESSION_VALID(pMac, i))
- {
- session = CSR_GET_SESSION(pMac, i);
- if (csrIsConnStateConnectedInfra(pMac, i) && (NULL != session->pConnectBssDesc) &&
- (csrIsDuplicateBssDescription(pMac, &pScanResult->BssDescriptor,
- session->pConnectBssDesc, NULL, FALSE)))
- {
- is_conn_bss_found = true;
- break;
- }
- }
+ if (scan_type == eSIR_PASSIVE_SCAN) {
+ session = CSR_GET_SESSION(pMac, sessionId);
+ if (csrIsConnStateConnectedInfra(pMac, sessionId) &&
+ (NULL != session->pConnectBssDesc) &&
+ (csrIsDuplicateBssDescription(pMac, &pScanResult->BssDescriptor,
+ session->pConnectBssDesc, NULL, FALSE))) {
+ is_conn_bss_found = true;
+ smsLog(pMac, LOG1, "Connected BSS in scan results");
+ }
}
pNextResult = sme_ScanResultGetNext(pMac, pResult);
smsLog(pMac, LOG1, "Scan res timer:%lu, rrm scan timer:%lu",