diff options
| author | tinlin <tinlin@codeaurora.org> | 2018-05-29 19:38:25 +0800 |
|---|---|---|
| committer | tinlin <tinlin@codeaurora.org> | 2018-05-30 09:59:38 +0800 |
| commit | 7e30c67dfd97d100de0b13e9f6f15a9fbeb6b290 (patch) | |
| tree | 6c5c4dbbf35a10edbba28ae003c24207692c8523 | |
| parent | 87831f20da00c02417dc98e756ea2a8d55a2779b (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.c | 37 |
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", |
