Browse Source

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
Will Huang 7 years ago
parent
commit
8e8d300e2c
2 changed files with 6 additions and 2 deletions
  1. 5 2
      core/sme/src/csr/csr_api_roam.c
  2. 1 0
      core/sme/src/csr/csr_api_scan.c

+ 5 - 2
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

+ 1 - 0
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)) {