From 962dd750a5199691c2bddcaae4159bf120c983a2 Mon Sep 17 00:00:00 2001 From: avishad verma Date: Tue, 9 Jul 2024 08:05:10 -0500 Subject: [PATCH 283/296] brcmfmac: Add Support for OWE offload Added support for OWE offload based on FW capability. Signed-off-by: avishad verma --- .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 13 +++++++++++++ .../wireless/broadcom/brcm80211/brcmfmac/feature.c | 1 + .../wireless/broadcom/brcm80211/brcmfmac/feature.h | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index 7d8c6b7c90bb..a58576d0a4c2 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -2997,6 +2997,16 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, } if (err) goto done; + + if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_OWE) && + sme->crypto.akm_suites[0] == WLAN_AKM_SUITE_OWE) { + /* clean up user-space RSNE */ + if (brcmf_fil_iovar_data_set(ifp, "wpaie", NULL, 0)) { + bphy_err(drvr, "failed to clean up user-space RSNE\n"); + goto done; + } + } + } /* Join with specific BSSID and cached SSID * If SSID is zero join based on BSSID only @@ -9879,6 +9889,9 @@ static int brcmf_setup_wiphy(struct wiphy *wiphy, struct brcmf_if *ifp) NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK); wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X); + if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_OWE)) + wiphy_ext_feature_set(wiphy, + NL80211_EXT_FEATURE_OWE_OFFLOAD); if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_SAE)) wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_SAE_OFFLOAD); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c index 7bf3f8f05eb6..43f7fe325878 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c @@ -51,6 +51,7 @@ static const struct brcmf_feat_fwcap brcmf_fwcap_map[] = { { BRCMF_FEAT_OFFLOADS, "offloads" }, { BRCMF_FEAT_ULP, "ulp" }, { BRCMF_FEAT_PROPTXSTATUS, "proptxstatus" }, + { BRCMF_FEAT_OWE, "owe" }, }; #ifdef DEBUG diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h index 112e035f9258..1bc5c5b87660 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h @@ -75,7 +75,8 @@ BRCMF_FEAT_DEF(TWT) \ BRCMF_FEAT_DEF(OFFLOADS) \ BRCMF_FEAT_DEF(ULP) \ - BRCMF_FEAT_DEF(PROPTXSTATUS) + BRCMF_FEAT_DEF(PROPTXSTATUS) \ + BRCMF_FEAT_DEF(OWE) /* * Quirks: -- 2.25.1