From nobody Thu Aug 6 16:56:55 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 4hGD2v5z2qz6nLfZ for ; Thu, 06 Aug 2026 16:56:55 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hGD2v5SC8z3Yy9 for ; Thu, 06 Aug 2026 16:56:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786035415; 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=erEQDvYDg2J4JspjIEIeI/nOzUDkgKVmCvrGg2OSgcI=; b=bfLOgRfX5jrw59CXEbmqbK2u7+RGZ3L+qTQr+RV2JuS8TGupoJAdJ8XMZl5ChQl6epVe3O EwoItHSvLOYxgde5mBLI77kkkiErdnF+r0iScRCD5nMrtxrpShwct3Y3xA6h8jvuV0NSXj wwHsvoJTQUF+Da/SjrHV2E3JiO7Mki0DB72hlx8QZWIcDZrtyys9tdEaj9HUorDdN4iHnn DeJ+/634FeIA/km2hCVQOPPgwo7m81qr2nKpG/LKQtpYdes7Z0IjyHafuqdHHcoh6ndSNH 5wwlQF6UDqG3775kO7OB3G9dP56Z5GvYBYDP2SP9SB3Qn+FPO7gD3i+kaaSaKg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786035415; a=rsa-sha256; cv=none; b=qpjSJW1AKtxumiQWSKxTd3/QGi326q4CEUAvpuZq2ZP4bbTcHHRDpKB/Y4WuE6gCZY9or+ DrAPE7/UgM0yd1gHt229HEfJAYKDieNGidUTOU2ISWDaSlQ955kptiNf+rYEwHvlWsohLp 6fmQdEeqrsUOZS1JkuP5EniBzWDX267eAmsHwDYbJA0cPnKz2arIflsJcLSSdqFhrYIBFX zlvttK9XT+60jabP8bJ6fJCzmpzUrOiOH5plGi532Mi1oQwK8iQ5YBWTvPJsrS4SRGYYQe Gv4hf5McUuxCe2u1gtikG/dUTvK/iiXwwa+4Z3GwQ2/a2WVI6VLZJ+xFeI511w== 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=1786035415; 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=erEQDvYDg2J4JspjIEIeI/nOzUDkgKVmCvrGg2OSgcI=; b=P4a6k3RJrYdeCtWMTKH5dylcfG+s2m7xMhyZV6tEBKzY+rF+leVqcbsk+nF7rBvnvo5kSV 4RfHAp6vdvR1FmlwN1UpFgQtRoyhc3JVzKSxWBNUzQh/kjZI8r9JZtQqREDCptaxfcyux3 ocBKq7R3YhqukWoJHaamIHGg3FvGkYQxuqrTWjJEIgrDD7XHUiJK/T7ffyBGQFCZk4Czf5 D/JbFrZ8GXG2WYMGmO37MbTEO3xMUr/IPpVKiV6OHS3bPh16vo2TnY0pXQvMoVNe5Jzywp qi3Lo36xDBtsW5LujuprRaY/S3kRg77dTqT/KtKxvCjJW9iJZU4ZPwE/lsYlIQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hGD2v4NtNzDX0 for ; Thu, 06 Aug 2026 16:56:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 23e44 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 06 Aug 2026 16:56:55 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: 1b8d19dea462 - stable/14 - Revert "loopback: improve checksum offloading" List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: 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/14 X-Git-Reftype: branch X-Git-Commit: 1b8d19dea4624cba3c96fb4fdcf05f681562ee0b Auto-Submitted: auto-generated Date: Thu, 06 Aug 2026 16:56:55 +0000 Message-Id: <6a74bcd7.23e44.73fb694e@gitrepo.freebsd.org> The branch stable/14 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=1b8d19dea4624cba3c96fb4fdcf05f681562ee0b commit 1b8d19dea4624cba3c96fb4fdcf05f681562ee0b Author: Michael Tuexen AuthorDate: 2026-08-06 14:54:45 +0000 Commit: Michael Tuexen CommitDate: 2026-08-06 14:54:45 +0000 Revert "loopback: improve checksum offloading" This reverts commit d6c4cea7740d5c5c673a06ba37e4f1bdcddb2ece. It is done because this change interferes with the ipfilter NAT functionality. So Back it out until ipfilter has been fixed. --- share/man/man4/lo.4 | 23 +++++++++++++---------- sys/net/if_loop.c | 42 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 49 insertions(+), 16 deletions(-) diff --git a/share/man/man4/lo.4 b/share/man/man4/lo.4 index 5b808153559a..f1ac67c7d7db 100644 --- a/share/man/man4/lo.4 +++ b/share/man/man4/lo.4 @@ -29,7 +29,7 @@ .\" .\" @(#)lo.4 8.1 (Berkeley) 6/5/93 .\" -.Dd June 28, 2026 +.Dd June 23, 2024 .Dt LO 4 .Os .Sh NAME @@ -56,16 +56,19 @@ The loopback should be configured first unless no hardware interfaces exist. .Pp -If the transmit checksum offload capability is enabled on a loopback interface, -checksums will not be generated by IP, UDP, TCP, or SCTP for packets sent on the -interface. -By default, this capability is enabled to avoid the overhead of checksumming for -local communication where data corruption is unlikely. +If the transmit checksum offload capability flag is enabled on a loopback +interface, checksums will not be generated by IP, UDP, TCP, or SCTP for packets +sent on the interface. .Pp -If the receive checksum offload capability is disabled on a loopback interface, -the flags that indicate a valid checksum will be unset if set previously. -By default, this capability is enabled to avoid another checksum validation if -it has already been validated. +If the receive checksum offload capability flag is enabled on a loopback +interface, checksums will not be validated by IP, UDP, TCP, or SCTP for packets +received on the interface. +.Pp +By default, both receive and transmit checksum flags will be enabled, in +order to avoid the overhead of checksumming for local communication where +data corruption is unlikely. +If transmit checksum generation is disabled, then validation should also be +disabled in order to avoid packets being dropped due to invalid checksums. .Sh DIAGNOSTICS .Bl -diag .It lo%d: can't handle af%d. diff --git a/sys/net/if_loop.c b/sys/net/if_loop.c index 97a534e43212..92740bfb6cfb 100644 --- a/sys/net/if_loop.c +++ b/sys/net/if_loop.c @@ -230,22 +230,38 @@ looutput(struct ifnet *ifp, struct mbuf *m, const struct sockaddr *dst, else af = RO_GET_FAMILY(ro, dst); +#if 1 /* XXX */ switch (af) { case AF_INET: - if ((ifp->if_capenable & IFCAP_RXCSUM) == 0) { - m->m_pkthdr.csum_flags &= ~LO_CSUM_SET; + if (ifp->if_capenable & IFCAP_RXCSUM) { + m->m_pkthdr.csum_data = 0xffff; + m->m_pkthdr.csum_flags = LO_CSUM_SET; } + m->m_pkthdr.csum_flags &= ~LO_CSUM_FEATURES; break; case AF_INET6: - if ((ifp->if_capenable & IFCAP_RXCSUM_IPV6) == 0) { - m->m_pkthdr.csum_flags &= ~LO_CSUM_SET; +#if 0 + /* + * XXX-BZ for now always claim the checksum is good despite + * any interface flags. This is a workaround for 9.1-R and + * a proper solution ought to be sought later. + */ + if (ifp->if_capenable & IFCAP_RXCSUM_IPV6) { + m->m_pkthdr.csum_data = 0xffff; + m->m_pkthdr.csum_flags = LO_CSUM_SET; } +#else + m->m_pkthdr.csum_data = 0xffff; + m->m_pkthdr.csum_flags = LO_CSUM_SET; +#endif + m->m_pkthdr.csum_flags &= ~LO_CSUM_FEATURES6; break; default: printf("looutput: af=%d unexpected\n", af); m_freem(m); return (EAFNOSUPPORT); } +#endif return (if_simloop(ifp, m, af, 0)); } @@ -399,15 +415,29 @@ loioctl(struct ifnet *ifp, u_long cmd, caddr_t data) ifp->if_capenable ^= IFCAP_RXCSUM; if ((mask & IFCAP_TXCSUM) != 0) ifp->if_capenable ^= IFCAP_TXCSUM; - if ((mask & IFCAP_RXCSUM_IPV6) != 0) + if ((mask & IFCAP_RXCSUM_IPV6) != 0) { +#if 0 ifp->if_capenable ^= IFCAP_RXCSUM_IPV6; - if ((mask & IFCAP_TXCSUM_IPV6) != 0) +#else + error = EOPNOTSUPP; + break; +#endif + } + if ((mask & IFCAP_TXCSUM_IPV6) != 0) { +#if 0 ifp->if_capenable ^= IFCAP_TXCSUM_IPV6; +#else + error = EOPNOTSUPP; + break; +#endif + } ifp->if_hwassist = 0; if (ifp->if_capenable & IFCAP_TXCSUM) ifp->if_hwassist = LO_CSUM_FEATURES; +#if 0 if (ifp->if_capenable & IFCAP_TXCSUM_IPV6) ifp->if_hwassist |= LO_CSUM_FEATURES6; +#endif break; default: