From 1b4312e37be5a7afa5a2ebdee7c18a9b78ae182f Mon Sep 17 00:00:00 2001 From: Shaofu Date: Fri, 7 Nov 2025 07:11:59 +0000 Subject: [PATCH] Fixed redundant association requests when WPA3 SAE H2E authentication fails Bug 5578305 Change-Id: I495c2311bc79b84df1a367fa9c7b89c90888ec45 Signed-off-by: Shaofu Signed-off-by: Narayana Reddy P Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3485390 GVS: buildbot_gerritrpt Reviewed-by: Shobek Attupurath Reviewed-by: Ashutosh Jha --- .../net/wireless/realtek/rtl8852ce/core/rtw_mlme.c | 8 -------- .../wireless/realtek/rtl8852ce/core/rtw_mlme_ext.c | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/realtek/rtl8852ce/core/rtw_mlme.c b/drivers/net/wireless/realtek/rtl8852ce/core/rtw_mlme.c index 50c95cc7..fb6d924d 100644 --- a/drivers/net/wireless/realtek/rtl8852ce/core/rtw_mlme.c +++ b/drivers/net/wireless/realtek/rtl8852ce/core/rtw_mlme.c @@ -3134,14 +3134,6 @@ void rtw_join_timeout_handler(void *ctx) if (RTW_CANNOT_RUN(adapter_to_dvobj(adapter))) return; - /* SAE auth timeout, send association request to force trigger disconnected by AP */ - if ((check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) && - (pmlmeinfo->state & WIFI_FW_AUTH_STATE) && - rtw_sec_chk_auth_type(adapter, MLME_AUTHTYPE_SAE)) { - RTW_INFO("%s: issue_assocreq due to SAE auth timeout.\n", __FUNCTION__); - issue_assocreq(adapter); - } - _rtw_spinlock_bh(&pmlmepriv->lock); #ifdef CONFIG_STA_CMD_DISPR if (check_fwstate(pmlmepriv, WIFI_UNDER_LINKING) == _TRUE) diff --git a/drivers/net/wireless/realtek/rtl8852ce/core/rtw_mlme_ext.c b/drivers/net/wireless/realtek/rtl8852ce/core/rtw_mlme_ext.c index 81a83caa..6fde1508 100644 --- a/drivers/net/wireless/realtek/rtl8852ce/core/rtw_mlme_ext.c +++ b/drivers/net/wireless/realtek/rtl8852ce/core/rtw_mlme_ext.c @@ -11358,10 +11358,24 @@ void link_timer_hdl(void *ctx) if (rtw_sec_chk_auth_type(padapter, MLME_AUTHTYPE_SAE)) { RTW_INFO("link_timer_hdl: SAE auth timeout.\n"); if (pmlmeinfo->auth_status) { + if (pmlmeinfo->auth_status == WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY) { + /* Receive status 30, send association request to force trigger disconnected by AP */ + RTW_INFO("%s: issue_assocreq due to receive auth frame with" + "status 30.\n", __FUNCTION__); + issue_assocreq(padapter); + #ifdef CONFIG_RTW_ANDROID + pmlmeinfo->auth_status = WLAN_STATUS_AUTH_TIMEOUT; + RTW_INFO("%s SAE WKRD auth reject, change status code: %d\n", + __func__, pmlmeinfo->auth_status); + #endif /*CONFIG_RTW_ANDROID*/ + } report_join_res(padapter, -1, pmlmeinfo->auth_status); pmlmeinfo->auth_status = 0; /* reset */ } else { report_join_res(padapter, -1, WLAN_STATUS_AUTH_TIMEOUT); + /* SAE auth timeout, send association request to force trigger disconnected by AP */ + RTW_INFO("%s: issue_assocreq due to SAE auth timeout.\n", __FUNCTION__); + issue_assocreq(padapter); } return; }