From f2e2dc1523a0d5c35c6c4062f34cd4da6d59d135 Mon Sep 17 00:00:00 2001 From: nakul kachhwaha Date: Mon, 1 Jul 2019 12:24:52 +0530 Subject: [PATCH] qcacld-3.0: Issue LFR2.0 connect only in proper CSR state In DBS, LFR 2.0 takes more time to complete the roaming sequence due to DBS config changes through policy manager. If roaming is in progress and cfg80211 issues disconnect, disconnect handler is supposed to wait for 4 sec before processing. In some DBS scenarios, 4 sec wait timer can expire and disconnect proceed for clean up before the roaming sequence can complete, results in race condition. Thus adding CSR state check before proceeding with LFR issue connect. Change-Id: I794c6bf3f749bba9c339fd18b5202d50091b73a7 CRs-Fixed: 2481706 --- core/sme/src/csr/csr_api_roam.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 6540216c48e31..0bf8f9973e3b1 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -9482,6 +9482,13 @@ QDF_STATUS csr_continue_lfr2_connect(struct mac_context *mac, if (!scan_handle_roam_ap) goto POST_ROAM_FAILURE; + if ((mac->roam.roamSession[session_id].connectState == + eCSR_ASSOC_STATE_TYPE_NOT_CONNECTED) || + (mac->roam.roamSession[session_id].connectState == + eCSR_ASSOC_STATE_TYPE_INFRA_DISCONNECTING)) { + goto purge_scan_result; + } + status = csr_roam_lfr2_issue_connect(mac, session_id, scan_handle_roam_ap, roam_id); @@ -9489,6 +9496,8 @@ QDF_STATUS csr_continue_lfr2_connect(struct mac_context *mac, qdf_mem_free(roam_info); return status; } + +purge_scan_result: csr_scan_result_purge(mac, scan_handle_roam_ap); POST_ROAM_FAILURE: