From c7f4442125ae4932c6430c9a18d4627fd78d5eac Mon Sep 17 00:00:00 2001 From: Mike Cui Date: Mon, 19 Feb 2024 17:11:49 -0800 Subject: [PATCH 1/2] brcmfmac: Fix 802.1x Commit 7d239fbf9d4 broke 802.1X authentication by setting profile->use_fwsup = NONE whenever PSK is not used. However 802.1X does not use PSK and requires profile->use_fwsup set to 1X, or brcmf_cfg80211_set_pmk() fails. Fix this by also checking for if 802.1X is wanted. Fixes: 7d239fbf9d4 (brcmfmac: Fix interoperating DPP and other encryption network access Fixes: https://github.com/raspberrypi/linux/issues/5964 --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index 5b13544fac7ac3..da7b5b8e99d252 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -2493,7 +2493,7 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, brcmf_dbg(INFO, "using PSK offload\n"); profile->use_fwsup = BRCMF_PROFILE_FWSUP_PSK; } - } else { + } else if (!sme->want_1x) { profile->use_fwsup = BRCMF_PROFILE_FWSUP_NONE; } From 31191a10e0a5dc8eb5be456f41a3bb43186c4c6d Mon Sep 17 00:00:00 2001 From: iucoen <68678186+iucoen@users.noreply.github.com> Date: Tue, 20 Feb 2024 08:40:48 -0800 Subject: [PATCH 2/2] Update cfg80211.c --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index da7b5b8e99d252..2c81b5d9fb0968 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -2493,7 +2493,7 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, brcmf_dbg(INFO, "using PSK offload\n"); profile->use_fwsup = BRCMF_PROFILE_FWSUP_PSK; } - } else if (!sme->want_1x) { + } else if (profile->use_fwsup != BRCMF_PROFILE_FWSUP_1X) { profile->use_fwsup = BRCMF_PROFILE_FWSUP_NONE; }