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
This commit is contained in:
Abhishek Ambure 2021-02-15 11:05:02 +05:30 • committed by snandini
commit 65a35d7ea0

View file

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