3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2025-02-21 20:40:42 +01:00

wiphy: add driver quirk to disable SAE

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.
This commit is contained in:
James Prestwood 2025-02-11 11:58:54 -08:00 committed by Denis Kenzior
parent 40af18f96a
commit 5f4bf2a5e5

View File

@ -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
@ -1374,6 +1379,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);