From 65a35d7ea0b625e1e7c05e4daeecac53b8cde70d Mon Sep 17 00:00:00 2001 From: Abhishek Ambure Date: Mon, 15 Feb 2021 11:05:02 +0530 Subject: [PATCH] qcacld-3.0: Reintroduce eCSR_ASSOC_STATE_TYPE_INFRA_DISCONNECTING This state ensures that host will not issue connect from scan for ssid completion. Thus if this fresh connect also issue scan for ssid, then host drops connect command assuming disconnect is in progress. If host gets disconnect request in between the scan for SSID of previous connect request, host aborts scan and host blocks next commands till the sme disconnect timeout. Change-Id: Ia42332dfef73e4b6ea8f348894427e5fe81eac1d CRs-Fixed: 2865047 --- core/sme/src/csr/csr_api_roam.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index febef6f24535..93ce46a5be11 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -8582,9 +8582,17 @@ QDF_STATUS csr_roam_disconnect(struct mac_context *mac_ctx, uint32_t session_id, if (csr_is_conn_state_connected(mac_ctx, session_id) || csr_is_roam_command_waiting_for_session(mac_ctx, session_id) - || CSR_IS_CONN_NDI(&session->connectedProfile)) + || CSR_IS_CONN_NDI(&session->connectedProfile)) { status = csr_roam_issue_disassociate_cmd(mac_ctx, session_id, reason, mac_reason); + } else if (session->scan_info.profile) { + mac_ctx->roam.roamSession[session_id].connectState = + eCSR_ASSOC_STATE_TYPE_INFRA_DISCONNECTING; + csr_scan_abort_mac_scan(mac_ctx, session_id, INVAL_SCAN_ID); + status = QDF_STATUS_CMD_NOT_QUEUED; + sme_debug("Disconnect cmd not queued, Roam command is not present return with status %d", + status); + } return status; }