Re: [PATCH 1/2] wiphy: add driver quirk to disable SAE
James Prestwood <[email protected]>
| Newsgroups | dev.linux.lists.iwd |
|---|---|
| Message-ID | <[email protected]> |
All, On 2/11/25 11:58 AM, James Prestwood wrote: > SAE/WPA3 is completely broken on brcmfmac, at least without a custom > kernel patch which isn't included in many OS distributions. In order > to help with this add a driver quirk so devices with brcmfmac can > utilize WPA2 instead of WPA3 and at least connect to networks at > this capacity until the fix is more widely distributed. Both for my own reference and so others don't have to go digging through threads. The kernel patch that fixes SAE/WPA3 on brcmfmac can be found here: https://lore.kernel.org/linux-wireless/[email protected]/ > --- > src/wiphy.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/src/wiphy.c b/src/wiphy.c > index c7df648a..46f7a6d9 100644 > --- a/src/wiphy.c > +++ b/src/wiphy.c > @@ -74,6 +74,7 @@ enum driver_flag { > POWER_SAVE_DISABLE = 0x4, > OWE_DISABLE = 0x8, > MULTICAST_RX_DISABLE = 0x10, > + SAE_DISABLE = 0x20, > }; > > struct driver_flag_name { > @@ -106,7 +107,8 @@ static const struct driver_flag_name driver_flag_names[] = { > { "ForcePae", FORCE_PAE }, > { "PowerSaveDisable", POWER_SAVE_DISABLE }, > { "OweDisable", OWE_DISABLE }, > - { "MulticastRxDisable", MULTICAST_RX_DISABLE } > + { "MulticastRxDisable", MULTICAST_RX_DISABLE }, > + { "SaeDisable", SAE_DISABLE }, > }; > > struct wiphy { > @@ -202,6 +204,9 @@ uint16_t wiphy_get_supported_ciphers(struct wiphy *wiphy, uint16_t mask) > > static bool wiphy_can_connect_sae(struct wiphy *wiphy) > { > + if (wiphy->driver_flags & SAE_DISABLE) > + return false; > + > /* > * WPA3 Specification version 3, Section 2.2: > * A STA shall not enable WEP and TKIP > @@ -1368,6 +1373,9 @@ static void wiphy_print_basic_info(struct wiphy *wiphy) > if (wiphy->driver_flags & MULTICAST_RX_DISABLE) > flags = l_strv_append(flags, "MulticastRxDisable"); > > + if (wiphy->driver_flags & SAE_DISABLE) > + flags = l_strv_append(flags, "SaeDisable"); > + > joined = l_strjoinv(flags, ' '); > > l_info("\tDriver Flags: %s", joined);