From: Felix Fietkau Date: Wed, 21 Aug 2019 11:11:13 +0000 (+0200) Subject: mac80211: backport support for the IEEE80211_KEY_FLAG_GENERATE_MMIE flag X-Git-Tag: v19.07.0-rc1~324 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=7c32f8eff074fd5e27d03ac5383966b8dfcbf584;p=oweals%2Fopenwrt.git mac80211: backport support for the IEEE80211_KEY_FLAG_GENERATE_MMIE flag Required for an upcoming mt76 update Signed-off-by: Felix Fietkau (cherry-picked from commit 0441edfb7fe0e927f51b291c2d996da68ac78dd2) --- diff --git a/package/kernel/mac80211/patches/subsys/361-mac80211-add-IEEE80211_KEY_FLAG_GENERATE_MMIE-to-iee.patch b/package/kernel/mac80211/patches/subsys/361-mac80211-add-IEEE80211_KEY_FLAG_GENERATE_MMIE-to-iee.patch new file mode 100644 index 0000000000..f7e022ca0c --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/361-mac80211-add-IEEE80211_KEY_FLAG_GENERATE_MMIE-to-iee.patch @@ -0,0 +1,58 @@ +From: Lorenzo Bianconi +Date: Tue, 16 Jul 2019 00:09:19 +0200 +Subject: [PATCH] mac80211: add IEEE80211_KEY_FLAG_GENERATE_MMIE to + ieee80211_key_flags + +Add IEEE80211_KEY_FLAG_GENERATE_MMIE flag to ieee80211_key_flags in order +to allow the driver to notify mac80211 to generate MMIE and that it +requires sequence number generation only. +This is a preliminary patch to add BIP_CMAC_128 hw support to mt7615 +driver + +Signed-off-by: Lorenzo Bianconi +Link: https://lore.kernel.org/r/dfe275f9aa0f1cc6b33085f9efd5d8447f68ad13.1563228405.git.lorenzo@kernel.org +Signed-off-by: Johannes Berg +--- + +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -1616,6 +1616,9 @@ struct wireless_dev *ieee80211_vif_to_wd + * @IEEE80211_KEY_FLAG_PUT_MIC_SPACE: This flag should be set by the driver for + * a TKIP key if it only requires MIC space. Do not set together with + * @IEEE80211_KEY_FLAG_GENERATE_MMIC on the same key. ++ * @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 + */ + enum ieee80211_key_flags { + IEEE80211_KEY_FLAG_GENERATE_IV_MGMT = BIT(0), +@@ -1627,6 +1630,7 @@ enum ieee80211_key_flags { + IEEE80211_KEY_FLAG_RX_MGMT = BIT(6), + IEEE80211_KEY_FLAG_RESERVE_TAILROOM = BIT(7), + IEEE80211_KEY_FLAG_PUT_MIC_SPACE = BIT(8), ++ IEEE80211_KEY_FLAG_GENERATE_MMIE = BIT(10), + }; + + /** +--- a/net/mac80211/wpa.c ++++ b/net/mac80211/wpa.c +@@ -947,7 +947,8 @@ ieee80211_crypto_aes_cmac_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))) +@@ -963,6 +964,9 @@ ieee80211_crypto_aes_cmac_encrypt(struct + + bip_ipn_set64(mmie->sequence_number, pn64); + ++ if (info->control.hw_key) ++ return TX_CONTINUE; ++ + bip_aad(skb, aad); + + /*