From 8e8d300e2c108911a1d9246a41e00a6054163125 Mon Sep 17 00:00:00 2001 From: Will Huang Date: Fri, 11 May 2018 10:48:03 +0800 Subject: [PATCH] qcacld-3.0: Purge scan result inside csr_roam_issue_connect always Currently in function csr_roam_issue_connect, if queue sme command fail, the scan result will be purged by csr_release_command_roam(), but some caller will also purge it again if don't return success status, like csr_roam_connect(). Make csr_roam_issue_connect() to consume hBSSList always, and remove double purging code in the callers. Change-Id: If226ff300771ccbf1dcbfb2a82fb02498c334cdc CRs-Fixed: 2237948 --- core/sme/src/csr/csr_api_roam.c | 7 +++++-- core/sme/src/csr/csr_api_scan.c | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index fdef15b82662..19bd043974aa 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -8537,6 +8537,7 @@ QDF_STATUS csr_roam_issue_connect(tpAniSirGlobal pMac, uint32_t sessionId, pCommand = csr_get_command_buffer(pMac); if (NULL == pCommand) { + csr_scan_result_purge(pMac, hBSSList); sme_err(" fail to get command buffer"); status = QDF_STATUS_E_RESOURCES; } else { @@ -8900,7 +8901,6 @@ QDF_STATUS csr_roam_connect(tpAniSirGlobal pMac, uint32_t sessionId, if (!QDF_IS_STATUS_SUCCESS(status)) { sme_err("CSR failed to issue connect cmd with status: 0x%08X", status); - csr_scan_result_purge(pMac, hBSSList); fCallCallback = true; } } else if (NULL != pProfile) { @@ -9080,7 +9080,6 @@ static QDF_STATUS csr_roam_join_last_profile(tpAniSirGlobal pMac, pProfile, hBSSList, eCsrHddIssued, roamId, false, false); if (!QDF_IS_STATUS_SUCCESS(status)) { - csr_scan_result_purge(pMac, hBSSList); goto end; } } else { @@ -21027,6 +21026,10 @@ QDF_STATUS csr_issue_stored_joinreq(tpAniSirGlobal mac_ctx, new_roam_id, sta_session->stored_roam_profile.imediate_flag, sta_session->stored_roam_profile.clear_flag); + + sta_session->stored_roam_profile.bsslist_handle = + CSR_INVALID_SCANRESULT_HANDLE; + if (QDF_STATUS_SUCCESS != status) { QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR, FL diff --git a/core/sme/src/csr/csr_api_scan.c b/core/sme/src/csr/csr_api_scan.c index 69680d4a8952..a3c20f1e897e 100644 --- a/core/sme/src/csr/csr_api_scan.c +++ b/core/sme/src/csr/csr_api_scan.c @@ -963,6 +963,7 @@ QDF_STATUS csr_scan_handle_search_for_ssid(tpAniSirGlobal mac_ctx, hBSSList, eCsrHddIssued, session->scan_info.roam_id, true, true); + hBSSList = CSR_INVALID_SCANRESULT_HANDLE; } while (0); if (!QDF_IS_STATUS_SUCCESS(status)) {