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; }