Date: Mon, 9 Feb 2026 18:13:28 +0100 From: Michael Tuexen <tuexen@FreeBSD.org> To: Ronald Klop <ronald-lists@klop.ws> Cc: "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org> Subject: Re: git: 7266121ce985 - main - ure: improve transmit checksum offloading Message-ID: <13A22FE6-C164-466B-9417-7B2BB6CEAA30@FreeBSD.org> In-Reply-To: <1315337813.3441.1770653767432@localhost> References: <6988ef21.3e6ef.54b19aac@gitrepo.freebsd.org> <1315337813.3441.1770653767432@localhost>
index | next in thread | previous in thread | raw e-mail
> On 9. Feb 2026, at 17:16, Ronald Klop <ronald-lists@klop.ws> wrote: > > Thanks, > > I noticed this last week and was still investigating when I saw this commit. TCP/IPv6 works fine now. Thanks for letting me know! Best regards Michael > > ure0 on uhub1 > ure0: <Realtek USB 10/100/1G/2.5G LAN, class 0/0, rev 3.20/31.04, addr 1> on usbus1 > ue0: <USB Ethernet> on ure0 > > This is plugged into a Raspberry Pi 5. > > Thanks. > > Ronald. > > Van: Michael Tuexen <tuexen@FreeBSD.org> > Datum: zondag, 8 februari 2026 21:16 > Aan: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org > Onderwerp: git: 7266121ce985 - main - ure: improve transmit checksum offloading > The branch main has been updated by tuexen: > > URL: https://cgit.FreeBSD.org/src/commit/?id=7266121ce985a1a895441357c20b0e9d56b4e5f5 > > commit 7266121ce985a1a895441357c20b0e9d56b4e5f5 > Author: Michael Tuexen <tuexen@FreeBSD.org> > AuthorDate: 2026-02-08 20:11:18 +0000 > Commit: Michael Tuexen <tuexen@FreeBSD.org> > CommitDate: 2026-02-08 20:16:20 +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 > MFC after: 1 week > Differential Revision: https://reviews.freebsd.org/D55187 > --- > 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 <sys/param.h> > #include <sys/systm.h> > #include <sys/bus.h> > @@ -44,6 +46,10 @@ > /* needed for checksum offload */ > #include <netinet/in.h> > #include <netinet/ip.h> > +#ifdef INET6 > +#include <netinet/ip6.h> > +#include <netinet6/ip6_var.h> > +#endif > > #include <dev/mii/mii.h> > #include <dev/mii/miivar.h> > @@ -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); > > >home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?13A22FE6-C164-466B-9417-7B2BB6CEAA30>
