From: Tariq Toukan <[email protected]> Date: Mon, 11 Feb 2019 18:04:17 +0200
> From: Saeed Mahameed <[email protected]> > > When an ethernet frame is padded to meet the minimum ethernet frame > size, the padding octets are not covered by the hardware checksum. > Fortunately the padding octets are usually zero's, which don't affect > checksum. However, it is not guaranteed. For example, switches might > choose to make other use of these octets. > This repeatedly causes kernel hardware checksum fault. > > Prior to the cited commit below, skb checksum was forced to be > CHECKSUM_NONE when padding is detected. After it, we need to keep > skb->csum updated. However, fixing up CHECKSUM_COMPLETE requires to > verify and parse IP headers, it does not worth the effort as the packets > are so small that CHECKSUM_COMPLETE has no significant advantage. > > Future work: when reporting checksum complete is not an option for > IP non-TCP/UDP packets, we can actually fallback to report checksum > unnecessary, by looking at cqe IPOK bit. > > Fixes: 88078d98d1bb ("net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are > friends") > Cc: Eric Dumazet <[email protected]> > Signed-off-by: Saeed Mahameed <[email protected]> > Signed-off-by: Tariq Toukan <[email protected]> Applied and queued up for -stable.
