On Tue, 27 Oct 2026 at 14:43, Eric Dumazet <[email protected]> wrote:
>
> Le mar. 27 oct. 2026 à 13:15, Magnus Karlsson
> <[email protected]> a écrit :
> >
> > That USO works for 64-bit systems is just pure luck. Currently, the
> > computation of the UDP segmentation header is performed using sizeof()
> > a pointer instead of the sizeof() the UDP header that the pointer
> > points to. Since the UDP header happens to be 8 bytes long and a
> > pointer is 8 bytes long on a 64-bit system, this works on all those
> > systems. But no such luck for anyone using a 32-bit system as 8 bytes
> > != 4 bytes. So fix this by using sizeof() the UDP header that the
> > pointer points to instead.
> >
> > This was found by an LLM while implementing something else that used USO.
> >
> > Fixes: c91a4f9feb67a199c2 ("add support for UDP Segmentation Offload")
>
> Missing prefix? This was really:
>
> Fixes: c91a4f9feb67 ("iavf: add support for UDP Segmentation Offload")

You are correct on both accounts/patches. Do not know why I missed this, sorry.

Do you want a v2 with this added?

> Other than this,
> Reviewed-by: Eric Dumazet <[email protected]>
>
> > Signed-off-by: Magnus Karlsson <[email protected]>
> > ---
> >  drivers/net/ethernet/intel/iavf/iavf_txrx.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ethernet/intel/iavf/iavf_txrx.c 
> > b/drivers/net/ethernet/intel/iavf/iavf_txrx.c
> > index 8982cf75466f..2c290d7788d2 100644
> > --- a/drivers/net/ethernet/intel/iavf/iavf_txrx.c
> > +++ b/drivers/net/ethernet/intel/iavf/iavf_txrx.c
> > @@ -1807,7 +1807,7 @@ static int iavf_tso(struct iavf_tx_buffer *first, u8 
> > *hdr_len,
> >                 csum_replace_by_diff(&l4.udp->check,
> >                                      (__force __wsum)htonl(paylen));
> >                 /* compute length of UDP segmentation header */
> > -               *hdr_len = (u8)sizeof(l4.udp) + l4_offset;
> > +               *hdr_len = sizeof(*l4.udp) + l4_offset;
> >         } else {
> >                 csum_replace_by_diff(&l4.tcp->check,
> >                                      (__force __wsum)htonl(paylen));
> > --
> > 2.38.1
> >

Reply via email to