From ff58fd853b467810e4f3c1e759f6901610722a36 Mon Sep 17 00:00:00 2001 From: Srinivas Dasari Date: Mon, 7 Jun 2021 18:28:41 +0530 Subject: [PATCH] qcacld-3.0: Wait for key install in SAE/OWE as well EAPOL handshake is done by wpa_supplicant in initial connection and WPA3 roaming as well. Driver is supposed to wait for EAPOL handshake/key complete timeout after getting roam sync indication from firmware. But this wait is skipped with the change change-id : Ie4f06cfcb066ae245de024b62da586aade783aec. Add the same check again. Change-Id: I437c6be15d7c1a3775a177c2da6c581d417c2533 CRs-Fixed: 2963548 --- .../umac/mlme/connection_mgr/core/src/wlan_cm_roam_fw_sync.c | 5 +++-- core/hdd/src/wlan_hdd_cm_connect.c | 4 +--- core/sme/src/csr/csr_api_roam.c | 4 +++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_fw_sync.c b/components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_fw_sync.c index 1c5b6c9f1b..191312ade5 100644 --- a/components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_fw_sync.c +++ b/components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_fw_sync.c @@ -655,10 +655,11 @@ static QDF_STATUS cm_process_roam_keys(struct wlan_objmgr_vdev *vdev, } qdf_mem_zero(pmkid_cache, sizeof(*pmkid_cache)); qdf_mem_free(pmkid_cache); - } else { + } + + if (roaming_info->auth_status != ROAM_AUTH_STATUS_AUTHENTICATED) cm_update_wait_for_key_timer(vdev, vdev_id, WAIT_FOR_KEY_TIMEOUT_PERIOD); - } end: return status; } diff --git a/core/hdd/src/wlan_hdd_cm_connect.c b/core/hdd/src/wlan_hdd_cm_connect.c index 8a1d51fd5e..0c5c648239 100644 --- a/core/hdd/src/wlan_hdd_cm_connect.c +++ b/core/hdd/src/wlan_hdd_cm_connect.c @@ -985,9 +985,7 @@ static bool hdd_cm_is_roam_auth_required(struct hdd_station_ctx *sta_ctx, if (!rsp->roaming_info) return false; - if (rsp->roaming_info->auth_status == ROAM_AUTH_STATUS_AUTHENTICATED || - sta_ctx->conn_info.auth_type == eCSR_AUTH_TYPE_SAE || - sta_ctx->conn_info.auth_type == eCSR_AUTH_TYPE_OWE) + if (rsp->roaming_info->auth_status == ROAM_AUTH_STATUS_AUTHENTICATED) return false; return true; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 4c3a33f4d0..5c8867fb0e 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -16945,7 +16945,9 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx, } qdf_mem_zero(pmkid_cache, sizeof(*pmkid_cache)); qdf_mem_free(pmkid_cache); - } else { + } + + if (roam_synch_data->auth_status != ROAM_AUTH_STATUS_AUTHENTICATED) { roam_info->fAuthRequired = true; cm_update_wait_for_key_timer(vdev, session_id, WAIT_FOR_KEY_TIMEOUT_PERIOD);