From nobody Sun Apr 26 08:29:51 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 4g3Kcw0wC8z6bFyq for ; Sun, 26 Apr 2026 08:29:52 +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 4g3Kcv6n0cz4CHm for ; Sun, 26 Apr 2026 08:29:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777192192; 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=hawPJKem066DT3qYU6E8Om7yAklPrRo/PU0YDRYunaM=; b=mUgUfSkLEDgcf9BxNlC6JxL+ljvQraco+CHr06N8TxicdNgPmmcN01JXX05TMjy4ioJUx1 Fzs3A6jIH+2E1oEBljoohgnBQKbsA2YVwO/RSbpsfQzgqJkzL97C+cI1CrBVdFHkaYqvAf CrODjiPIlejn+nKM6LFjW4aqIuKex3+Mi2xNeXQ+I/Bkn/Kyk0w2USQAjLPC2eaFyw0pqz jSykcAheyQBlLANVChHN3CwBd+SAFc8Z5OrLNXZqacsdxxoleS7srhbr7RJj4TFWYXGuOk ppNIkDJ6eXmTRywm/hcmwau1pn7HVAaVRmUEVdzwQ+g5UGwgveUmYtc80RCOFA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777192191; a=rsa-sha256; cv=none; b=RWxPyOuLoV1lD8zuiCEVl1fSiU+WX2iK1SD/yh2e34shA0FE2Q7hVpfP4Am2rTO5ONzkQE jUwyHoqU4fUzU0ILQv+cNUGUbLbYvlvmVDfCUKUkxcvl90korMsPjnGOkDy2r4HDBbq13a jgt+R+p3ZvLiD872Pf4rr7obxAicPT8L7vtZPdWFzk6GCYrNGDATr3ADkjZ35T0nk9Kd0k G+s3P+mKfjQSRakiclcYfqCVhpeF6OOwTNyOjpaca3DvYMA1AxtLnR8ZjMp2CEJd+PDR6m xCLQS9+ciajU9wou55hY44hIEC5O7As66u5mXJHbdg4A8mimzrHsmM5dgTuRYA== 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=1777192191; 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=hawPJKem066DT3qYU6E8Om7yAklPrRo/PU0YDRYunaM=; b=MX335S3wkKh/Ci0MX/ZNtB16sT7DMbW3mvcQalyuruWvMRvHr8TjvLZUmpyAOmMyH3P57P 4zgFbFuC8piqpjIcRouITOYzTWxJwD6NJTbji7apDete1twAgSHvDzUBT2l/m1l2KrZGSz zOC5z7o82Yzop0S931zhGuhowCYWQk34xyEVdB1CDOWuJQEEmCFS1JFbZhUg+vy/FFSYlm Rrj7COOWTPdYtSCCk7vwbKlCYwKnr5cbATdUe+ICaFtwrqBWaTUoq3Fo54jlgn0M7SMIWw YV2LI235WH5fRxQ8ZU6FMnOi4Roj/sp1ZctKJUGrXjZTQzgS5Y8tCl16DTLgIg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g3Kcv4xgDz1BF4 for ; Sun, 26 Apr 2026 08:29:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 27d6d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 26 Apr 2026 08:29:51 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: 32067a7f49a3 - stable/14 - 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/14 X-Git-Reftype: branch X-Git-Commit: 32067a7f49a37a5b1507794df95799ceecc26ad9 Auto-Submitted: auto-generated Date: Sun, 26 Apr 2026 08:29:51 +0000 Message-Id: <69edccff.27d6d.4ebd82e4@gitrepo.freebsd.org> The branch stable/14 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=32067a7f49a37a5b1507794df95799ceecc26ad9 commit 32067a7f49a37a5b1507794df95799ceecc26ad9 Author: Michael Tuexen AuthorDate: 2026-02-08 20:11:18 +0000 Commit: Michael Tuexen CommitDate: 2026-04-26 06:28:16 +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 e6b101587421..3f399a6650a6 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 @@ -45,6 +47,10 @@ /* needed for checksum offload */ #include #include +#ifdef INET6 +#include +#include +#endif #include #include @@ -63,8 +69,6 @@ #include "miibus_if.h" -#include "opt_inet6.h" - #ifdef USB_DEBUG static int ure_debug = 0; @@ -2175,7 +2179,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; @@ -2210,10 +2213,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); @@ -2226,7 +2228,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);