From b9650de249c83685254973c9349fba3d48f3253c Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 7 Jun 2024 06:02:05 +0200 Subject: [PATCH] mac80211: backport an upstream patch needed by mt76 for AES_GMAC key support Signed-off-by: Felix Fietkau --- ...tend-IEEE80211_KEY_FLAG_GENERATE_MMI.patch | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 package/kernel/mac80211/patches/subsys/333-wifi-mac80211-extend-IEEE80211_KEY_FLAG_GENERATE_MMI.patch diff --git a/package/kernel/mac80211/patches/subsys/333-wifi-mac80211-extend-IEEE80211_KEY_FLAG_GENERATE_MMI.patch b/package/kernel/mac80211/patches/subsys/333-wifi-mac80211-extend-IEEE80211_KEY_FLAG_GENERATE_MMI.patch new file mode 100644 index 00000000000..6504f6ca332 --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/333-wifi-mac80211-extend-IEEE80211_KEY_FLAG_GENERATE_MMI.patch @@ -0,0 +1,70 @@ +From: Michael-CY Lee +Date: Tue, 26 Mar 2024 08:30:36 +0800 +Subject: [PATCH] wifi: mac80211: extend IEEE80211_KEY_FLAG_GENERATE_MMIE to + other ciphers + +Extend the flag IEEE80211_KEY_FLAG_GENERATE_MMIE to BIP-CMAC-256, +BIP-GMAC-128 and BIP-GMAC-256 for the same reason and in the same +way that the flag was added originally in commit a0b4496a4368 +("mac80211: add IEEE80211_KEY_FLAG_GENERATE_MMIE to ieee80211_key_flags"). + +Signed-off-by: Michael-CY Lee +Link: https://msgid.link/20240326003036.15215-1-michael-cy.lee@mediatek.com +Signed-off-by: Johannes Berg +--- + +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -2032,8 +2032,8 @@ static inline bool lockdep_vif_mutex_hel + * @IEEE80211_KEY_FLAG_GENERATE_MMIC on the same key. + * @IEEE80211_KEY_FLAG_NO_AUTO_TX: Key needs explicit Tx activation. + * @IEEE80211_KEY_FLAG_GENERATE_MMIE: This flag should be set by the driver +- * for a AES_CMAC key to indicate that it requires sequence number +- * generation only ++ * for a AES_CMAC or a AES_GMAC key to indicate that it requires sequence ++ * number generation only + */ + enum ieee80211_key_flags { + IEEE80211_KEY_FLAG_GENERATE_IV_MGMT = BIT(0), +--- a/net/mac80211/wpa.c ++++ b/net/mac80211/wpa.c +@@ -882,7 +882,8 @@ ieee80211_crypto_aes_cmac_256_encrypt(st + + info = IEEE80211_SKB_CB(skb); + +- if (info->control.hw_key) ++ if (info->control.hw_key && ++ !(key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_MMIE)) + return TX_CONTINUE; + + if (WARN_ON(skb_tailroom(skb) < sizeof(*mmie))) +@@ -898,6 +899,9 @@ ieee80211_crypto_aes_cmac_256_encrypt(st + + bip_ipn_set64(mmie->sequence_number, pn64); + ++ if (info->control.hw_key) ++ return TX_CONTINUE; ++ + bip_aad(skb, aad); + + /* MIC = AES-256-CMAC(IGTK, AAD || Management Frame Body || MMIE, 128) +@@ -1027,7 +1031,8 @@ ieee80211_crypto_aes_gmac_encrypt(struct + + info = IEEE80211_SKB_CB(skb); + +- if (info->control.hw_key) ++ if (info->control.hw_key && ++ !(key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_MMIE)) + return TX_CONTINUE; + + if (WARN_ON(skb_tailroom(skb) < sizeof(*mmie))) +@@ -1043,6 +1048,9 @@ ieee80211_crypto_aes_gmac_encrypt(struct + + bip_ipn_set64(mmie->sequence_number, pn64); + ++ if (info->control.hw_key) ++ return TX_CONTINUE; ++ + bip_aad(skb, aad); + + hdr = (struct ieee80211_hdr *)skb->data;