From nobody Sun Apr 26 07:50:34 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 4g3JlZ6MRHz6bBlF for ; Sun, 26 Apr 2026 07:50:34 +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 "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g3JlZ5RC6z41cM for ; Sun, 26 Apr 2026 07:50:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777189834; 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=pxU4EbfBNBiVmCDB0v9BRl9CqiAU6pGuh9DoEeLR02c=; b=d84Kg2+xmRHo7/oYVfNEcK5FVZ1uQXMexadDVFqjXwYdCI7C8V4wR+3tKdc8p9AohEpw3X VtOvWZie3BEqlJVBSMHl7RtrbA9eu9B10Hjd2u3F/leEPqCrFQnlbQ7GTqelKupuxZzSA2 CKfVFZyX2aeMvgPY3CSgZcmBZS/IkqJyKXxNsdDoGBpLQuw7YaCvpuW7dBpkB2fnjYnBb6 5bDVSWEFAyys7ROiWCtOvtC5YUIGMXimJcrw5epLSk4ri+cYq03MyulLqbT6vrouKVRdgh JrS+ir/qhKEHW/b9X2S1tRqZ4aUMGXLEC5vtEfhtz1HE/gk6p2nCk2rGRYVvAQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777189834; a=rsa-sha256; cv=none; b=mdMSuppo+rzVBwQPftn3j+FGDfBoCijdWWLJ3pqntswcqmJ4Ro2MVitgLcCVG6+Qa1Pkqy BYYYSFuWe8vGTPejuGoxH3AaSZsvhDZVLAH74FU4eHMqCer6kZcIoScoWjxyh+5/9ZDANs 1BDU3kZ7bA4QdW0PxODlkHomb3U22yFW2NcytzGFJ1bgvQ8UnKPKotJuJR4myBadIFNrkG Q0o0i4CrdQ6cDHTbvXwvsjvEcwVE8cl2QFPJIIRgbgBYo734AVnZ3Lc2hOZx8BeqFmfkMd laUFnR/hBl5J8R93WLkjACboyZrA+LbkrEAVOTtDDOR46jmC4wJEofQDBEqxfg== 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=1777189834; 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=pxU4EbfBNBiVmCDB0v9BRl9CqiAU6pGuh9DoEeLR02c=; b=LxT7XY3pfe4wqpvrys+b+ovzYU24pDxQ6G3HAOtsU/RkJ4adEBKaW+oB8W37DtdQgcwPrx EP66mF8TH5O1DJG08hFjuk6TO892u39RRb3krPIFeXFAhLT7wRrZAVPtPHf6ii/BRKREJ6 AESs+h2dv8WBCWzSWn+HJzTURcgice/0QIAXeEqATIwxeW1qs5z9sc5RbNowKtlhFJ4Glw eonziEx/zyy2f2PwOiBQnMTEdTutmuUPYBIsLC6b9nWxkvIwPoQHSacQVbLVe15EOgcuFC 6N03JZM2Rgazk2T8OCRquDq82adAJ2bY8f1szKfMsh4t3SdUDb36ThaXxG9rgg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g3JlZ3jVkz19T9 for ; Sun, 26 Apr 2026 07:50:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 25765 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 26 Apr 2026 07:50:34 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: a095924c7d4c - stable/15 - ure: improve transmit 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 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: a095924c7d4cdfabedfdf17f9c4d8fbae4a75dfe Auto-Submitted: auto-generated Date: Sun, 26 Apr 2026 07:50:34 +0000 Message-Id: <69edc3ca.25765.66304662@gitrepo.freebsd.org> The branch stable/15 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=a095924c7d4cdfabedfdf17f9c4d8fbae4a75dfe commit a095924c7d4cdfabedfdf17f9c4d8fbae4a75dfe Author: Michael Tuexen AuthorDate: 2026-02-08 20:11:18 +0000 Commit: Michael Tuexen CommitDate: 2026-04-26 07:49:03 +0000 ure: improve transmit checksum offloading Apparently, the name of the variable l4off was correct. Providing the offset to the TCP or UDP header allows the transmit checksum offload to work for TCP/IPv4, TCP/IPv6, UDP/IPv4, and UDP/IPv6. Reported by: vishwin Reviewed by: vishwin Differential Revision: https://reviews.freebsd.org/D55187 Event: Wiesbaden Hackathon 2026 (cherry picked from commit 7266121ce985a1a895441357c20b0e9d56b4e5f5) --- sys/dev/usb/net/if_ure.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/sys/dev/usb/net/if_ure.c b/sys/dev/usb/net/if_ure.c index 3dea88eb10f1..92160fe9b1d2 100644 --- a/sys/dev/usb/net/if_ure.c +++ b/sys/dev/usb/net/if_ure.c @@ -24,6 +24,8 @@ * SUCH DAMAGE. */ +#include "opt_inet6.h" + #include #include #include @@ -44,6 +46,10 @@ /* needed for checksum offload */ #include #include +#ifdef INET6 +#include +#include +#endif #include #include @@ -62,8 +68,6 @@ #include "miibus_if.h" -#include "opt_inet6.h" - #ifdef USB_DEBUG static int ure_debug = 0; @@ -2179,7 +2183,6 @@ ure_txcsum(struct mbuf *m, int caps, uint32_t *regout) struct ip ip; struct ether_header *eh; int flags; - uint32_t data; uint32_t reg; int l3off, l4off; uint16_t type; @@ -2214,10 +2217,9 @@ ure_txcsum(struct mbuf *m, int caps, uint32_t *regout) if (flags & CSUM_IP) reg |= URE_TXPKT_IPV4_CS; - data = m->m_pkthdr.csum_data; if (flags & (CSUM_IP_TCP | CSUM_IP_UDP)) { m_copydata(m, l3off, sizeof ip, (caddr_t)&ip); - l4off = l3off + (ip.ip_hl << 2) + data; + l4off = l3off + (ip.ip_hl << 2); if (__predict_false(l4off > URE_L4_OFFSET_MAX)) return (1); @@ -2230,7 +2232,9 @@ ure_txcsum(struct mbuf *m, int caps, uint32_t *regout) } #ifdef INET6 else if (flags & (CSUM_IP6_TCP | CSUM_IP6_UDP)) { - l4off = l3off + data; + l4off = ip6_lasthdr(m, l3off, IPPROTO_IPV6, NULL); + if (__predict_false(l4off < 0)) + return (1); if (__predict_false(l4off > URE_L4_OFFSET_MAX)) return (1);