From e7dd0bad099f3153456f1539c62615b03008a0a6 Mon Sep 17 00:00:00 2001 From: Carter Chen Date: Sun, 8 Sep 2024 21:54:27 -0500 Subject: [PATCH 289/292] non-upstream: fix set/del pmksa fail on kernel 6.6 Revert "wifi: brcmfmac: cfg80211: Add support for PMKID_V3 operations" This reverts commit a96202acaea47fa8377088e0952bb63bd02a3bab. Signed-off-by: Carter Chen diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index 8c7c6b2afe4a..db663cf41f42 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -4989,40 +4989,6 @@ static s32 brcmf_cfg80211_suspend(struct wiphy *wiphy, return 0; } -static s32 -brcmf_pmksa_v3_op(struct brcmf_if *ifp, struct cfg80211_pmksa *pmksa, - bool alive) -{ - struct brcmf_pmk_op_v3_le *pmk_op; - int length = offsetof(struct brcmf_pmk_op_v3_le, pmk); - int ret; - - pmk_op = kzalloc(sizeof(*pmk_op), GFP_KERNEL); - if (!pmk_op) - return -ENOMEM; - - pmk_op->version = cpu_to_le16(BRCMF_PMKSA_VER_3); - - if (!pmksa) { - /* Flush operation, operate on entire list */ - pmk_op->count = cpu_to_le16(0); - } else { - /* Single PMK operation */ - pmk_op->count = cpu_to_le16(1); - length += sizeof(struct brcmf_pmksa_v3); - memcpy(pmk_op->pmk[0].bssid, pmksa->bssid, ETH_ALEN); - memcpy(pmk_op->pmk[0].pmkid, pmksa->pmkid, WLAN_PMKID_LEN); - pmk_op->pmk[0].pmkid_len = WLAN_PMKID_LEN; - pmk_op->pmk[0].time_left = cpu_to_le32(alive ? BRCMF_PMKSA_NO_EXPIRY : 0); - } - - pmk_op->length = cpu_to_le16(length); - - ret = brcmf_fil_iovar_data_set(ifp, "pmkid_info", pmk_op, sizeof(*pmk_op)); - kfree(pmk_op); - return ret; -} - static __used s32 brcmf_update_pmklist(struct brcmf_cfg80211_info *cfg, struct brcmf_if *ifp) { @@ -5123,9 +5089,6 @@ brcmf_cfg80211_set_pmksa(struct wiphy *wiphy, struct net_device *ndev, brcmf_dbg(CONN, "set_pmksa - PMK bssid: %pM =\n", pmksa->bssid); brcmf_dbg(CONN, "%*ph\n", WLAN_PMKID_LEN, pmksa->pmkid); - if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_PMKID_V3)) - return brcmf_pmksa_v3_op(ifp, pmksa, true); - /* TODO: implement PMKID_V2 */ err = brcmf_update_pmksa(cfg, ifp, pmksa->bssid, pmksa->pmkid, PMKSA_SET); if (err < 0) { @@ -5167,9 +5130,6 @@ brcmf_cfg80211_del_pmksa(struct wiphy *wiphy, struct net_device *ndev, brcmf_dbg(CONN, "del_pmksa - PMK bssid = %pM\n", pmksa->bssid); - if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_PMKID_V3)) - return brcmf_pmksa_v3_op(ifp, pmksa, false); - /* TODO: implement PMKID_V2 */ err = brcmf_update_pmksa(cfg, ifp, pmksa->bssid, pmksa->pmkid, PMKSA_DELETE); if (err < 0) { @@ -5194,9 +5154,6 @@ brcmf_cfg80211_flush_pmksa(struct wiphy *wiphy, struct net_device *ndev) if (!check_vif_up(ifp->vif)) return -EIO; - if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_PMKID_V3)) - return brcmf_pmksa_v3_op(ifp, NULL, false); - /* TODO: implement PMKID_V2 */ memset(&cfg->pmk_list, 0, sizeof(cfg->pmk_list)); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h index 6fa149f4adaa..60fac0535843 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h @@ -198,10 +198,6 @@ enum { #define BRCMF_HE_CAP_MCS_MAP_NSS_MAX 8 -#define BRCMF_PMKSA_VER_2 2 -#define BRCMF_PMKSA_VER_3 3 -#define BRCMF_PMKSA_NO_EXPIRY 0xffffffff - #define BRCMF_EXTAUTH_START 1 #define BRCMF_EXTAUTH_ABORT 2 #define BRCMF_EXTAUTH_FAIL 3 @@ -440,12 +436,6 @@ struct brcmf_ssid_le { unsigned char SSID[IEEE80211_MAX_SSID_LEN]; }; -/* Alternate SSID structure used in some places... */ -struct brcmf_ssid8_le { - u8 SSID_len; - unsigned char SSID[IEEE80211_MAX_SSID_LEN]; -}; - struct brcmf_scan_params_le { struct brcmf_ssid_le ssid_le; /* default: {0, ""} */ u8 bssid[ETH_ALEN]; /* default: bcast */ @@ -1017,51 +1007,6 @@ struct brcmf_pmksa { u8 pmkid[WLAN_PMKID_LEN]; }; -/** - * struct brcmf_pmksa_v2 - PMK Security Association - * - * @length: Length of the structure. - * @bssid: The AP's BSSID. - * @pmkid: The PMK ID. - * @pmk: PMK material for FILS key derivation. - * @pmk_len: Length of PMK data. - * @ssid: The AP's SSID. - * @fils_cache_id: FILS cache identifier - */ -struct brcmf_pmksa_v2 { - __le16 length; - u8 bssid[ETH_ALEN]; - u8 pmkid[WLAN_PMKID_LEN]; - u8 pmk[WLAN_PMK_LEN_SUITE_B_192]; - __le16 pmk_len; - struct brcmf_ssid8_le ssid; - u16 fils_cache_id; -}; - -/** - * struct brcmf_pmksa_v3 - PMK Security Association - * - * @bssid: The AP's BSSID. - * @pmkid: The PMK ID. - * @pmkid_len: The length of the PMK ID. - * @pmk: PMK material for FILS key derivation. - * @pmk_len: Length of PMK data. - * @fils_cache_id: FILS cache identifier - * @ssid: The AP's SSID. - * @time_left: Remaining time until expiry. 0 = expired, ~0 = no expiry. - */ -struct brcmf_pmksa_v3 { - u8 bssid[ETH_ALEN]; - u8 pmkid[WLAN_PMKID_LEN]; - u8 pmkid_len; - u8 pmk[WLAN_PMK_LEN_SUITE_B_192]; - u8 pmk_len; - __le16 fils_cache_id; - u8 pad; - struct brcmf_ssid8_le ssid; - __le32 time_left; -}; - /** * struct brcmf_pmk_list_le - List of pmksa's. * @@ -1073,34 +1018,6 @@ struct brcmf_pmk_list_le { struct brcmf_pmksa pmk[BRCMF_MAXPMKID]; }; -/** - * struct brcmf_pmk_list_v2_le - List of pmksa's. - * - * @version: Request version. - * @length: Length of this structure. - * @pmk: PMK SA information. - */ -struct brcmf_pmk_list_v2_le { - __le16 version; - __le16 length; - struct brcmf_pmksa_v2 pmk[BRCMF_MAXPMKID]; -}; - -/** - * struct brcmf_pmk_op_v3_le - Operation on PMKSA list. - * - * @version: Request version. - * @length: Length of this structure. - * @pmk: PMK SA information. - */ -struct brcmf_pmk_op_v3_le { - __le16 version; - __le16 length; - __le16 count; - __le16 pad; - struct brcmf_pmksa_v3 pmk[BRCMF_MAXPMKID]; -}; - /** * struct brcmf_pno_param_le - PNO scan configuration parameters * -- 2.25.1