[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190111133502.dma5hft5wgowdg6l@verge.net.au>
Date: Fri, 11 Jan 2019 14:35:03 +0100
From: Simon Horman <horms@...ge.net.au>
To: Sergei Shtylyov <sergei.shtylyov@...entembedded.com>
Cc: David Miller <davem@...emloft.net>,
Magnus Damm <magnus.damm@...il.com>, netdev@...r.kernel.org,
linux-renesas-soc@...r.kernel.org
Subject: Re: [PATCH net] ravb: expand rx descriptor data to accommodate hw
checksum
On Thu, Jan 10, 2019 at 06:52:51PM +0300, Sergei Shtylyov wrote:
> Hello!
>
> On 01/10/2019 05:02 PM, Simon Horman wrote:
>
> > EtherAVB may provide a checksum of packet data appended to packet data. In
> > order to allow this checksum to be received by the host descriptor data
> > needs to be enlarged by 2 bytes to accommodate the checksum.
> >
> > In the case of MTU-sized packets without a VLAN tag the
> > checksum were already accommodated by virtue of the space reserved for the
> > VLAN tag. However, a packet of MTU-size with a VLAN tag consumed all
> > packet data space provided by a descriptor leaving no space for the
> > trailing checksum.
>
> Wait! The gen3 manual is rather clear about the auto-checksumming not working
> right in the presence of the VLAN tag. Where do you check for that case?
In my testing on E3 this works correctly. Which portion of
the manual are you referring to?
>
> > This was not detected by the driver which incorrectly used the last two
> > bytes of packet data as the checksum and truncate the packet by two bytes.
> > This resulted all such packets being dropped.
> >
> > A work around is to disable rx checksum offload
> > # ethtool -K eth0 rx off
> >
> > This patch resolves this problem by increasing the size available for
> > packet data in rx descriptors by two bytes. It also introduces
> > RAVB_CSUM_LEN to make things a little clearer than "2" sprinkled lightly
> > over the driver.
>
> What about using sizeof(__sum16) instead? That type is declared in
> <linux/types.h> and used in 'struct iphdr'...
As in the following?
#define RAVB_CSUM_LEN sizeof(__sum16)
>
> >
> > Tested on R-Car E3 (r8a77990) ES1.0 based Ebisu-4D board
> >
> > Fixes: 4d86d3818627 ("ravb: RX checksum offload")
> > Signed-off-by: Simon Horman <horms+renesas@...ge.net.au>
> [...]
>
> MBR, Sergei
>
Powered by blists - more mailing lists