From e7201ee607f8e89b49891b5ce65c7b317676ee88 Mon Sep 17 00:00:00 2001 From: Shaofu Date: Fri, 7 Nov 2025 17:24:38 +0000 Subject: [PATCH] fix driver get Association fail with FT-SAE WLAN_AKM_SUITE_FT_OVER_SAE(0x000FAC09) is not processed in rtw_cfg80211_set_key_mgt, which makes rtw_ft_validate_akm_type not set RTW_FT_PEER_EN to ft_flags, and thus MDIE is not built in rtw_ft_build_assoc_req_ies Fix: - Add WLAN_AKM_SUITE_FT_OVER_SAE into rtw_cfg80211_set_key_mgt check condition - Add 9 into rtw_ft_valid_akm check condition - Update driver version number to 277-9-6 Bug 5580277 Change-Id: I7cc987a9141dc65577dc20e804e92def10e9412e Signed-off-by: Shaofu Signed-off-by: Narayana Reddy P Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3485741 GVS: buildbot_gerritrpt Reviewed-by: Ashutosh Jha Reviewed-by: Shobek Attupurath --- .../realtek/rtl8852ce/include/rtw_ft.h | 2 +- .../realtek/rtl8852ce/include/rtw_version.h | 2 +- .../rtl8852ce/os_dep/linux/ioctl_cfg80211.c | 22 ++++++++++++++++--- .../realtek/rtl8852ce/phl/phl_git_info.h | 4 ++-- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/realtek/rtl8852ce/include/rtw_ft.h b/drivers/net/wireless/realtek/rtl8852ce/include/rtw_ft.h index 80402d16..63ff1155 100644 --- a/drivers/net/wireless/realtek/rtl8852ce/include/rtw_ft.h +++ b/drivers/net/wireless/realtek/rtl8852ce/include/rtw_ft.h @@ -96,7 +96,7 @@ enum rtw_ft_capability { #define rtw_ft_valid_akm(a, t) \ ((rtw_ft_chk_flags(a, RTW_FT_EN)) && \ - (((t) == 3) || ((t) == 4))) + (((t) == 3) || ((t) == 4) || ((t) == 9))) /* allow OTD while driver disconnect with current AP */ #define rtw_ft_otd_roam_en(a) \ diff --git a/drivers/net/wireless/realtek/rtl8852ce/include/rtw_version.h b/drivers/net/wireless/realtek/rtl8852ce/include/rtw_version.h index 6843a042..bd067f29 100644 --- a/drivers/net/wireless/realtek/rtl8852ce/include/rtw_version.h +++ b/drivers/net/wireless/realtek/rtl8852ce/include/rtw_version.h @@ -1 +1 @@ -#define DRIVERVERSION "v1.19.16_nv-277-9-5-gffa42c96d.20251029_Certified_Module" +#define DRIVERVERSION "v1.19.16_nv-277-9-6-ga45134aae.20251107_Certified_Module" diff --git a/drivers/net/wireless/realtek/rtl8852ce/os_dep/linux/ioctl_cfg80211.c b/drivers/net/wireless/realtek/rtl8852ce/os_dep/linux/ioctl_cfg80211.c index 7892b92d..497a61a2 100644 --- a/drivers/net/wireless/realtek/rtl8852ce/os_dep/linux/ioctl_cfg80211.c +++ b/drivers/net/wireless/realtek/rtl8852ce/os_dep/linux/ioctl_cfg80211.c @@ -81,7 +81,9 @@ #if (LINUX_VERSION_CODE <= KERNEL_VERSION(4, 11, 12)) #ifdef CONFIG_RTW_80211R #define WLAN_AKM_SUITE_FT_8021X 0x000FAC03 -#define WLAN_AKM_SUITE_FT_PSK 0x000FAC04 +#define WLAN_AKM_SUITE_FT_PSK 0x000FAC04 +#define WLAN_AKM_SUITE_FT_OVER_SAE 0x000FAC09 +#define WLAN_AKM_SUITE_FT_FILS_SHA256 0x000FAC16 #endif #endif @@ -3865,6 +3867,12 @@ static int rtw_cfg80211_set_key_mgt(struct security_priv *psecuritypriv, u32 key } else if (key_mgt == WLAN_AKM_SUITE_FT_PSK) { psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_8021X; psecuritypriv->rsn_akm_suite_type = 4; + } else if ((key_mgt == WLAN_AKM_SUITE_FT_OVER_SAE) + || (key_mgt == WLAN_AKM_SUITE_FT_FILS_SHA256) + ) { + RTW_INFO("FT-SAE key mgt: 0x%x\n", key_mgt); + if (key_mgt == WLAN_AKM_SUITE_FT_OVER_SAE) + psecuritypriv->rsn_akm_suite_type = 9; } #endif else { @@ -4301,6 +4309,9 @@ static bool rtw_check_connect_sae_compat(struct cfg80211_connect_params *sme) struct rtw_ieee802_11_elems elems; struct rsne_info info; u8 AKM_SUITE_SAE[] = {0x00, 0x0f, 0xac, 8}; +#ifdef CONFIG_RTW_80211R + u8 AKM_SUITE_FTSAE[] = { 0x00, 0x0f, 0xac, 9 }; +#endif int i; if (sme->auth_type != (int)MLME_AUTHTYPE_SHARED_KEY) @@ -4316,9 +4327,14 @@ static bool rtw_check_connect_sae_compat(struct cfg80211_connect_params *sme) if (rtw_rsne_info_parse(elems.rsn_ie - 2, elems.rsn_ie_len + 2, &info) == _FAIL) return false; - for (i = 0; i < info.akm_cnt; i++) - if (_rtw_memcmp(info.akm_list + i * RSN_SELECTOR_LEN, + for (i = 0; i < info.akm_cnt; i++) { + if ((_rtw_memcmp(info.akm_list + i * RSN_SELECTOR_LEN, AKM_SUITE_SAE, RSN_SELECTOR_LEN) == _TRUE) +#ifdef CONFIG_RTW_80211R + || (_rtw_memcmp(info.akm_list + i * RSN_SELECTOR_LEN, + AKM_SUITE_FTSAE, RSN_SELECTOR_LEN) == 0) +#endif + ) return true; return false; diff --git a/drivers/net/wireless/realtek/rtl8852ce/phl/phl_git_info.h b/drivers/net/wireless/realtek/rtl8852ce/phl/phl_git_info.h index 4f90dad1..f00d823f 100644 --- a/drivers/net/wireless/realtek/rtl8852ce/phl/phl_git_info.h +++ b/drivers/net/wireless/realtek/rtl8852ce/phl/phl_git_info.h @@ -26,14 +26,14 @@ #define __PHL_GIT_INFO_H__ /*@--------------------------[Define] ---------------------------------------*/ -#define RTK_CORE_SHA1 "ffa42c96d0976a0c1acca4323d8c2d20b490ecc3" +#define RTK_CORE_SHA1 "a45134aae5536af874f77cd8f1d7ef514b0cf2d3" #define RTK_PHL_SHA1 "6048a181360ad851e05d6eacb227ace5b0adc5b2" #define RTK_HALMAC_SHA1 "a8003e258e7ceec767c2e329732e7e3b63934473" #define RTK_HALBB_SHA1 "92a03ddae85d8138c9705a9552dee1b9e31c0c64" #define RTK_HALRF_SHA1 "bb8bf83e65f756e2ae3ccd9ec0dc41ee50948b2b" #define RTK_BTC_SHA1 "33bcdb9f10f24aa8b92ee86a7076f89faf6ccbed" -#define RTK_CORE_TAGINFO "v1.19.16_nv-277-9-5-gffa42c96d" +#define RTK_CORE_TAGINFO "v1.19.16_nv-277-9-6-ga45134aae" #define RTK_PHL_TAGINFO "PHL_1_19_111_0100-109-g6048a1813" #define RTK_HALMAC_TAGINFO "HALMAC_0_29_95_0-1-ga8003e258e" #define RTK_HALBB_TAGINFO "HALBB_029_167_15-8-g92a03ddae"