From: Simon Horman <horms+renesas@xxxxxxxxxxxx> Date: Wed, 23 Jan 2019 12:14:52 +0100 > 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. > > 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. > > Tested on R-Car E3 (r8a77990) ES1.0 based Ebisu-4D board > > v2 > * Use sizeof(__sum16) directly rather than adding a driver-local > #define for the size of the checksum provided by the hw (2 bytes). > > Fixes: 4d86d3818627 ("ravb: RX checksum offload") > Signed-off-by: Simon Horman <horms+renesas@xxxxxxxxxxxx> Applied and queued up for -stable.