From nobody Tue Mar 04 15:57:13 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Z6gL20227z5qHcs; Tue, 04 Mar 2025 15:57:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Z6gL16XBHz3FZQ; Tue, 04 Mar 2025 15:57:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1741103833; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wK//iu4tV3nuWBNx71Bigigq0YiDElacAyoox2qKKnE=; b=wLSrHXiLhU41gaEk6Tp+tZrWXDGIGYxJOlW/KfuPJBwExTJKEtK1Zr8EgNKTZ3lY99a0zP FNe9HDEwbNevKFdBofbMridDIelCsYkHBxpOVfAabpDvRnDYzeY0zF776AcIqjyyZK3JSP OGHONROR6KpkTOhzlcXZunCIdv2dH0hjf496mULvRzQbIIEbHhBbRSlRdAG940hkcmxEHV R/noflrTz1obnldpTvqac4FnpKHsnZOWZMa85JKU4tyf+dxIXKGaD0IQW1/m9IRIXYqv7J vhcBc/h3XjRKOtnRFF0fBBMCeBhdSDEyz7Y9ahLttsu30ZKSwSSCDOWaiWrQRA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1741103833; a=rsa-sha256; cv=none; b=rXxh7yDtv9EtO9uZdfFwHknejG+IIaxn6RgDrFsLhUVSdnsZzaEjaHlraYnA04qCEJ/ogZ Qqosp95Pskd4KvccTmhn0t+Y8tMHfiA+oo9Zi7KsyBqtGhZ5FgB9X2Zio61bs00nkuW2Mv g3vRHamGPsBNx0Yzc31NLtISBlwC6T34bblP6NwsfRp4Ro6Fiz0zkIFe43pwQCZwaxn9sG e6KzbdcOpWLBw2jJ0eI6DiGVekXRxq1/E1lfPa0Zcg+CH7A6RPZCdJjRk3PtHsp5LJv+j0 o/1mMOhWR+cHneqtJe66RPmUxcvoa9pt8YEnDCg8Ikai5Me1MmU2qCboU0gwvg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1741103833; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=wK//iu4tV3nuWBNx71Bigigq0YiDElacAyoox2qKKnE=; b=x0U44mFiJW2RugEIPR6k0fIh7vLAwrM/+XEHmc/kfuVYq12UwYuVxyzaHDBfstVvmQzIAO xhufpwzgMjirFxqB2/hre9I0ZvJdXvvY0Nc8kOI6wA8+gu2/pmpRkhJXKi0SkuWNRE60t/ x8SEUa+RsiwvmOAm34ga0soGfrCcVOHs/MUPWzlBNo1yc0Qv8ZI4D3i0zkshLbe8jgwtJV txr8moIOxKU+LfPFxq3YVHxeqdhfMoXch/qVrZ+hmLRq4h8gl0Z3uXGddMdSQkPwNJ2VMV lx4VbfZKSoV4jq2xdfPL7CyDg8XsGHq19/JpWQRW11CoTiCN7uR87xUZXQalJA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Z6gL167ZRz8rs; Tue, 04 Mar 2025 15:57:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 524FvDnt069058; Tue, 4 Mar 2025 15:57:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 524FvDjv069055; Tue, 4 Mar 2025 15:57:13 GMT (envelope-from git) Date: Tue, 4 Mar 2025 15:57:13 GMT Message-Id: <202503041557.524FvDjv069055@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 394a9a5b1c2a - main - net80211: LinuxKPI 802.11: clean up MIC vs. MMIC rx flags List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 394a9a5b1c2ad7b679a00c3087c41378abfa74a1 Auto-Submitted: auto-generated The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=394a9a5b1c2ad7b679a00c3087c41378abfa74a1 commit 394a9a5b1c2ad7b679a00c3087c41378abfa74a1 Author: Bjoern A. Zeeb AuthorDate: 2025-03-03 11:43:00 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-03-04 15:56:49 +0000 net80211: LinuxKPI 802.11: clean up MIC vs. MMIC rx flags net80211 used MMIC flags for CCMP instead of only for TKIP. LinuxKPI 802.11 compat code (and later net80211) had a comment about this. Given LinuxKPI seems to be the only consumer for these flags currently outside of net80211 itself, clean them up before implementing TKIP in LinuxKPI after all and before GCMP comes into the tree. Sponsored by: The FreeBSD Foundation MFC after: 3 days Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D49219 --- sys/compat/linuxkpi/common/src/linux_80211.c | 10 ++++------ sys/net80211/_ieee80211.h | 5 +++-- sys/net80211/ieee80211_crypto.c | 7 ++++--- sys/net80211/ieee80211_crypto_ccmp.c | 11 +++-------- sys/net80211/ieee80211_crypto_tkip.c | 2 +- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index 33b33651b6ad..be0006769e33 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -6224,14 +6224,12 @@ lkpi_convert_rx_status(struct ieee80211_hw *hw, } if (rx_status->flag & RX_FLAG_MMIC_STRIPPED) rx_stats->c_pktflags |= IEEE80211_RX_F_MMIC_STRIP; - if (rx_status->flag & RX_FLAG_MIC_STRIPPED) { - /* net80211 re-uses M[ichael]MIC for MIC too. Confusing. */ - rx_stats->c_pktflags |= IEEE80211_RX_F_MMIC_STRIP; - } + if (rx_status->flag & RX_FLAG_MMIC_ERROR) + rx_stats->c_pktflags |= IEEE80211_RX_F_FAIL_MMIC; + if (rx_status->flag & RX_FLAG_MIC_STRIPPED) + rx_stats->c_pktflags |= IEEE80211_RX_F_MIC_STRIP; if (rx_status->flag & RX_FLAG_IV_STRIPPED) rx_stats->c_pktflags |= IEEE80211_RX_F_IV_STRIP; - if (rx_status->flag & RX_FLAG_MMIC_ERROR) - rx_stats->c_pktflags |= IEEE80211_RX_F_FAIL_MIC; if (rx_status->flag & RX_FLAG_FAILED_FCS_CRC) rx_stats->c_pktflags |= IEEE80211_RX_F_FAIL_FCSCRC; #endif diff --git a/sys/net80211/_ieee80211.h b/sys/net80211/_ieee80211.h index 8d5583a826e5..2db2fabac3a9 100644 --- a/sys/net80211/_ieee80211.h +++ b/sys/net80211/_ieee80211.h @@ -585,16 +585,17 @@ struct ieee80211_mimo_info { #define IEEE80211_RX_F_AMPDU 0x00000010 /* This is the start of an decap AMPDU list */ #define IEEE80211_RX_F_AMPDU_MORE 0x00000020 /* This is another decap AMPDU frame in the batch */ #define IEEE80211_RX_F_FAIL_FCSCRC 0x00000040 /* Failed CRC/FCS */ -#define IEEE80211_RX_F_FAIL_MIC 0x00000080 /* Failed MIC check */ +#define IEEE80211_RX_F_FAIL_MMIC 0x00000080 /* Failed Michael MIC (MMIC) check */ #define IEEE80211_RX_F_DECRYPTED 0x00000100 /* Hardware decrypted */ #define IEEE80211_RX_F_IV_STRIP 0x00000200 /* Decrypted; IV stripped */ -#define IEEE80211_RX_F_MMIC_STRIP 0x00000400 /* Decrypted; [Micheal] MIC ([M]MIC) stripped */ +#define IEEE80211_RX_F_MMIC_STRIP 0x00000400 /* Decrypted; Micheal MIC (MMIC) stripped */ #define IEEE80211_RX_F_SHORTGI 0x00000800 /* This is a short-GI frame */ #define IEEE80211_RX_F_CCK 0x00001000 #define IEEE80211_RX_F_OFDM 0x00002000 #define IEEE80211_RX_F_HT 0x00004000 #define IEEE80211_RX_F_VHT 0x00008000 #define IEEE80211_RX_F_PN_VALIDATED 0x00010000 /* Decrypted; PN validated */ +#define IEEE80211_RX_F_MIC_STRIP 0x00020000 /* Decrypted; MIC stripped */ /* Channel width */ #define IEEE80211_RX_FW_20MHZ 1 diff --git a/sys/net80211/ieee80211_crypto.c b/sys/net80211/ieee80211_crypto.c index e1fac3a624e8..daa2e0c1d6ec 100644 --- a/sys/net80211/ieee80211_crypto.c +++ b/sys/net80211/ieee80211_crypto.c @@ -791,9 +791,9 @@ ieee80211_crypto_demic(struct ieee80211vap *vap, struct ieee80211_key *k, * Handle demic / mic errors from hardware-decrypted offload devices. */ if ((rxs != NULL) && (rxs->c_pktflags & IEEE80211_RX_F_DECRYPTED)) { - if (rxs->c_pktflags & IEEE80211_RX_F_FAIL_MIC) { + if ((rxs->c_pktflags & IEEE80211_RX_F_FAIL_MMIC) != 0) { /* - * Hardware has said MIC failed. We don't care about + * Hardware has said MMIC failed. We don't care about * whether it was stripped or not. * * Eventually - teach the demic methods in crypto @@ -804,7 +804,8 @@ ieee80211_crypto_demic(struct ieee80211vap *vap, struct ieee80211_key *k, return (0); } - if (rxs->c_pktflags & IEEE80211_RX_F_MMIC_STRIP) { + if ((rxs->c_pktflags & + (IEEE80211_RX_F_MIC_STRIP|IEEE80211_RX_F_MMIC_STRIP)) != 0) { /* * Hardware has decrypted and not indicated a * MIC failure and has stripped the MIC. diff --git a/sys/net80211/ieee80211_crypto_ccmp.c b/sys/net80211/ieee80211_crypto_ccmp.c index 404996b1cbca..87730679c47f 100644 --- a/sys/net80211/ieee80211_crypto_ccmp.c +++ b/sys/net80211/ieee80211_crypto_ccmp.c @@ -295,11 +295,7 @@ finish: m_adj(m, ccmp.ic_header); } - /* - * XXX TODO: see if MMIC_STRIP also covers CCMP MIC trailer. - * Well no as it's a MIC not MMIC but we re-use the same flag for now. - */ - if ((rxs == NULL) || (rxs->c_pktflags & IEEE80211_RX_F_MMIC_STRIP) == 0) + if ((rxs == NULL) || (rxs->c_pktflags & IEEE80211_RX_F_MIC_STRIP) == 0) m_adj(m, -ccmp.ic_trailer); /* @@ -683,10 +679,9 @@ ccmp_decrypt(struct ieee80211_key *key, u_int64_t pn, struct mbuf *m, int hdrlen } /* - * If the MIC (we use MMIC despite not being Micheal) was stripped - * by HW/driver we are done. + * If the MIC was stripped by HW/driver we are done. */ - if ((rxs != NULL) && (rxs->c_pktflags & IEEE80211_RX_F_MMIC_STRIP) != 0) + if ((rxs != NULL) && (rxs->c_pktflags & IEEE80211_RX_F_MIC_STRIP) != 0) return (1); if (memcmp(mic, a, ccmp.ic_trailer) != 0) { diff --git a/sys/net80211/ieee80211_crypto_tkip.c b/sys/net80211/ieee80211_crypto_tkip.c index 4cfb7542f8ff..bba413f3eb28 100644 --- a/sys/net80211/ieee80211_crypto_tkip.c +++ b/sys/net80211/ieee80211_crypto_tkip.c @@ -394,7 +394,7 @@ tkip_demic(struct ieee80211_key *k, struct mbuf *m, int force) * directly notify as a michael failure to the upper * layers. */ - if ((rxs != NULL) && (rxs->c_pktflags & IEEE80211_RX_F_FAIL_MIC)) { + if ((rxs != NULL) && (rxs->c_pktflags & IEEE80211_RX_F_FAIL_MMIC)) { struct ieee80211vap *vap = ctx->tc_vap; ieee80211_notify_michael_failure(vap, wh, k->wk_rxkeyix != IEEE80211_KEYIX_NONE ?