From nobody Fri Oct 23 17:13:58 2026 X-Original-To: dev-commits-src-branches@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 4jB8kh2StZz6xJqt for ; Fri, 23 Oct 2026 17:14:04 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jB8kh1qqyz5157 for ; Fri, 23 Oct 2026 17:14:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792775644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Q/XHCHtxY3nowMxwnMbTKqjv4UU/mIecymfwg3pUjAQ=; b=qCbGXl5m7yXe1VxaC624XVGdKD4UBlF/UzsdgkU3ZGrO9SWjb+XhzE8U/mRXhBtA7sEkHs LVDxEX3SY7kpmVWj779AQ490M5k+aTFwvcCJuP/ZU2HPOcLD2ebtzRdilpTJj+MiUfVY6m 98fVS+ngZvFsOU112Q8/9iYG/k7t0mN+orvn76C8JHmPBbsAt5hQisYdhiYXDPOnkns6k9 MzQQnzX99b1Hp/Z27LjXjpso3UbhK8wqq8Pk90eC5g1MhGt1FzKNUz6UDzftJVXdvjBkVn W1l2lMoCssS151tmg9RNIEGe90hPymaQrq8+m7H18L97sFcXvpioyLb+Jbkajw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1792775644; b=a+51mrS4xG10BeNfKUkPQsF8zSzAe8hP2n/xqPSsLJE4RRVyaXURGwQVKNhB5qBSg8ukhI FqHIKGFIpj61I5h0XKaNpCGhshsaLyEsMUp/Hh++jOezLW2+tqBBlEUf472UIaFschz4Jn kGhN9PQ2myMJZMcEKk4TQUjZIycQWwRVMivd1ve+TX2ERHElzuPJPwzCFM1xdGwVPHRl1Q raVXNkvOk1hZbXkn6KOsX693YThf5gubQZqzQ+fkwlA1DHppCZSp/+bhDnHqMHRwLWuNVl CLf9YiuX+DmTfWARLr1BpnpEF2YH3jEnkpfB8I/hO+NjSioQVjLDuwuVLlo4dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792775644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Q/XHCHtxY3nowMxwnMbTKqjv4UU/mIecymfwg3pUjAQ=; b=lBcWMbKbRadjFwa/SuZYpBPAxxOkupuWYzuYWHZUMUoFX1Vg1a0D4u68YDZWlKFzvmOanC RVlG8Bg5lphBSUwk6SBlGVtqRRlCZ7ba3oMjE77Wp7Ht9f9Z7aCDfBimy9YvBM0bljB0qG IWKkqO1RZsNHQhnOr4wLxM7TyNApjMC8JpaWweTf2epcYGui+ATEzqeZT+Mjb5kulFIka4 lsSsZX3Nk/DteNUlY/Lygjbw6HZtDJ6SizuSzD4jfEh9EnpRs8yP9lnO3+vG6nxB3Xi+Ii IUpndCmX4KciyWB7F/XE58CByJu9KFi7yZfwzf1+3A8cZFgn0BwlkhkzX7XjJA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4jB8kh1TwCzfdT for ; Fri, 23 Oct 2026 17:14:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3cdd6 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 23 Oct 2026 17:13:58 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Timo =?utf-8?Q?V=C3=B6lker?= From: Michael Tuexen Subject: git: a492f3101668 - stable/15 - epair: allow disabling receive checksum offloading List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: Commits to the stable branches of the FreeBSD src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: a492f3101668227d43370f54cbb7fefa4b390911 Auto-Submitted: auto-generated Date: Fri, 23 Oct 2026 17:13:58 +0000 Message-Id: <6adb95d6.3cdd6.58e37b97@gitrepo.freebsd.org> The branch stable/15 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=a492f3101668227d43370f54cbb7fefa4b390911 commit a492f3101668227d43370f54cbb7fefa4b390911 Author: Timo Völker AuthorDate: 2026-08-16 18:31:33 +0000 Commit: Michael Tuexen CommitDate: 2026-10-23 17:12:33 +0000 epair: allow disabling receive checksum offloading Allow disabling RXCSUM and RXCSUM6 on an epair interface. If disabled, epair unsets the mbuf flags that indicate a valid checksum when transferring a packet from one epair end to the other. This gives a user in a jail the power to control whether the user wants to use the result of a previous validation (by a physical interface) or not. Reviewed by: kp, tuexen Differential Revision: https://reviews.freebsd.org/D58786 (cherry picked from commit f343f036c780cfd8e7f243b7708d96b006a257d7) --- share/man/man4/epair.4 | 10 +++++++--- sys/net/if_epair.c | 24 ++++++++++++++++-------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/share/man/man4/epair.4 b/share/man/man4/epair.4 index ba42106d45f8..f28f68bdfc19 100644 --- a/share/man/man4/epair.4 +++ b/share/man/man4/epair.4 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 30, 2026 +.Dd August 16, 2026 .Dt EPAIR 4 .Os .Sh NAME @@ -111,8 +111,12 @@ configured on top of it. .Pp The .Nm -has RXCSUM and RXCSUM6 enabled because it may receive a packet where the -checksum has already been validated by a physical interface. +supports RXCSUM and RXCSUM6 but does not validate a checksum. +In case an interface previously validated the checksum, +.Nm +leaves the flags set that indicate a valid checksum if RXCSUM and RXCSUM6 are +enabled or unsets these flags if RXCSUM and RXCSUM6 are disabled. +Note that RXCSUM and RXCSUM6 can only be enabled or disabled as a pair. .Pp The .Nm diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c index 22a6b985ead7..969fbe66d5ba 100644 --- a/sys/net/if_epair.c +++ b/sys/net/if_epair.c @@ -242,6 +242,9 @@ epair_prepare_mbuf(struct mbuf *m, struct ifnet *src_ifp) epair_clear_mbuf(m); if_setrcvif(m, src_ifp); M_SETFIB(m, src_ifp->if_fib); + if ((if_getcapenable(src_ifp) & IFCAP_RXCSUM) == 0) + m->m_pkthdr.csum_flags &= ~(CSUM_L3_CALC | CSUM_L3_VALID | + CSUM_L4_CALC | CSUM_L4_VALID); MPASS(m->m_nextpkt == NULL); MPASS((m->m_pkthdr.csum_flags & CSUM_SND_TAG) == 0); @@ -451,7 +454,7 @@ epair_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { struct epair_softc *sc; struct ifreq *ifr; - int error; + int error, cap; ifr = (struct ifreq *)data; switch (cmd) { @@ -480,14 +483,19 @@ epair_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; case SIOCSIFCAP: /* - * Enable/disable capabilities as requested, besides - * IFCAP_RXCSUM(_IPV6), which always remain enabled. - * Incoming packets may have the mbuf flag CSUM_DATA_VALID set. - * Without IFCAP_RXCSUM(_IPV6), this flag would have to be - * removed, which does not seem helpful. + * Enable/disable capabilities as requested, but treat + * IFCAP_RXCSUM and IFCAP_RXCSUM_IPV6 special as they can only + * be set or unset as pair. */ - ifp->if_capenable = ifr->ifr_reqcap | IFCAP_RXCSUM | - IFCAP_RXCSUM_IPV6; + cap = ifr->ifr_reqcap; + if (((cap & IFCAP_RXCSUM) == 0) != + ((cap & IFCAP_RXCSUM_IPV6) == 0)) { + if ((ifp->if_capenable & IFCAP_RXCSUM) == 0) + cap |= (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6); + else + cap &= ~(IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6); + } + ifp->if_capenable = cap; epair_caps_changed(ifp); VLAN_CAPABILITIES(ifp); /*