ravb: Add Rx checksum offload support for GbEth
authorBiju Das <biju.das.jz@bp.renesas.com>
Wed, 7 Feb 2024 09:28:37 +0000 (09:28 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 9 Feb 2024 03:06:37 +0000 (19:06 -0800)
commitc2da9408579d52fdf9b0ec494534d6ac66d4511e
treea145c00b5b6f30b8c2833bf4eeb7c46ae990003a
parenta6c15d7ff29c1986fcf2df5c1ecb96dec835826f
ravb: Add Rx checksum offload support for GbEth

TOE has hardware support for calculating IP header and TCP/UDP/ICMP
checksum for both IPv4 and IPv6.

Add Rx checksum offload supported by TOE for IPv4 and TCP/UDP protocols.

For Rx, the 4-byte result of checksum calculation is attached to the
Ethernet frames.First 2-bytes is result of IPv4 header checksum and next
2-bytes is TCP/UDP/ICMP checksum.

If a frame does not have checksum error, 0x0000 is attached as checksum
calculation result. For unsupported frames 0xFFFF is attached as checksum
calculation result. In case of an IPv6 packet, IPv4 checksum is always set
to 0xFFFF.

We can test this functionality by the below commands

ethtool -K eth0 rx on --> to turn on Rx checksum offload
ethtool -K eth0 rx off --> to turn off Rx checksum offload

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Link: https://lore.kernel.org/r/20240207092838.160627-2-biju.das.jz@bp.renesas.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/renesas/ravb.h
drivers/net/ethernet/renesas/ravb_main.c