]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mac80211, cfg80211: Export michael_mic() and move it to cfg80211
authorEric Biggers <ebiggers@kernel.org>
Wed, 8 Apr 2026 03:06:47 +0000 (20:06 -0700)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 8 Apr 2026 06:55:15 +0000 (08:55 +0200)
Export michael_mic() so that the ath11k and ath12k drivers can call it.
In addition, move it from mac80211 to cfg80211 so that the ipw2x00
drivers, which depend on cfg80211 but not mac80211, can also call it.

Currently these drivers have their own local implementations of
michael_mic() based on crypto_shash, which is redundant and inefficient.
By consolidating all the Michael MIC code into cfg80211, we'll be able
to remove the duplicate Michael MIC code in the crypto/ directory.

Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Link: https://patch.msgid.link/20260408030651.80336-3-ebiggers@kernel.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/linux/ieee80211.h
net/mac80211/Makefile
net/mac80211/michael.h [deleted file]
net/mac80211/wpa.c
net/wireless/Makefile
net/wireless/michael-mic.c [moved from net/mac80211/michael.c with 96% similarity]

index ffa8f9f77efe44b9a3559f16219a9f941799df26..23f9df9be83728cb866be9254488dc197252196f 100644 (file)
@@ -1921,6 +1921,11 @@ enum ieee80211_radio_measurement_actioncode {
 #define PMK_MAX_LEN                    64
 #define SAE_PASSWORD_MAX_LEN           128
 
+#define MICHAEL_MIC_LEN                        8
+
+void michael_mic(const u8 *key, struct ieee80211_hdr *hdr,
+                const u8 *data, size_t data_len, u8 *mic);
+
 /* Public action codes (IEEE Std 802.11-2016, 9.6.8.1, Table 9-307) */
 enum ieee80211_pub_actioncode {
        WLAN_PUB_ACTION_20_40_BSS_COEX = 0,
index abf46c95129935ceedd8edce5ff417a24ff39793..20c3135b73ea6e89496b3cc3f8ec26dc279240be 100644 (file)
@@ -18,7 +18,6 @@ mac80211-y := \
        iface.o \
        link.o \
        rate.o \
-       michael.o \
        tkip.o \
        aes_cmac.o \
        aes_gmac.o \
diff --git a/net/mac80211/michael.h b/net/mac80211/michael.h
deleted file mode 100644 (file)
index a7fdb8e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Michael MIC implementation - optimized for TKIP MIC operations
- * Copyright 2002-2003, Instant802 Networks, Inc.
- */
-
-#ifndef MICHAEL_H
-#define MICHAEL_H
-
-#include <linux/types.h>
-#include <linux/ieee80211.h>
-
-#define MICHAEL_MIC_LEN 8
-
-struct michael_mic_ctx {
-       u32 l, r;
-};
-
-void michael_mic(const u8 *key, struct ieee80211_hdr *hdr,
-                const u8 *data, size_t data_len, u8 *mic);
-
-#endif /* MICHAEL_H */
index 64a57475ce506416d47067baa775640d30721358..724ec831a88571ccf075aaaa4b6b61d1c4e395b8 100644 (file)
@@ -18,7 +18,6 @@
 #include <crypto/utils.h>
 
 #include "ieee80211_i.h"
-#include "michael.h"
 #include "tkip.h"
 #include "aes_ccm.h"
 #include "aes_cmac.h"
index 62a83faf0e07d089e64674c8c530de49f8e08dea..a77fd5ba63686cf02cfc33fc70b8953c38d78f34 100644 (file)
@@ -8,7 +8,7 @@ obj-$(CONFIG_WEXT_PRIV) += wext-priv.o
 
 cfg80211-y += core.o sysfs.o radiotap.o util.o reg.o scan.o nl80211.o
 cfg80211-y += mlme.o ibss.o sme.o chan.o ethtool.o mesh.o ap.o trace.o ocb.o
-cfg80211-y += pmsr.o
+cfg80211-y += michael-mic.o pmsr.o
 cfg80211-$(CONFIG_OF) += of.o
 cfg80211-$(CONFIG_CFG80211_DEBUGFS) += debugfs.o
 cfg80211-$(CONFIG_CFG80211_WEXT) += wext-compat.o wext-sme.o
similarity index 96%
rename from net/mac80211/michael.c
rename to net/wireless/michael-mic.c
index 8a1afc93e7499ec91cdc0c07ad90a70356b13638..50cdb67f0503d6c5d3a9b6459c91955ba2e96468 100644 (file)
@@ -8,7 +8,9 @@
 #include <linux/ieee80211.h>
 #include <linux/unaligned.h>
 
-#include "michael.h"
+struct michael_mic_ctx {
+       u32 l, r;
+};
 
 static void michael_block(struct michael_mic_ctx *mctx, u32 val)
 {
@@ -81,3 +83,4 @@ void michael_mic(const u8 *key, struct ieee80211_hdr *hdr,
        put_unaligned_le32(mctx.l, mic);
        put_unaligned_le32(mctx.r, mic + 4);
 }
+EXPORT_SYMBOL_GPL(michael_mic);