On 2024-08-21 16:32, Willem de Bruijn wrote:
Krzysztof Galazka wrote:
For IPv4 and IPv6 packets shorter than minimum Ethernet
frame payload, recvmsg returns lenght including padding.
nit: length
Use length from header for checksum verification to avoid
csum test failing on correct packets.
Fixes: 1d0dc857b5d8 (selftests: drv-net: add checksum tests)
Signed-off-by: Krzysztof Galazka <[email protected]>
Reviewed-by: Przemek Kitszel <[email protected]>
This is not Intel driver specific, so can be sent straight to net
---
tools/testing/selftests/net/lib/csum.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/tools/testing/selftests/net/lib/csum.c
b/tools/testing/selftests/net/lib/csum.c
index b9f3fc3c3426..3dbaf2ecd59e 100644
--- a/tools/testing/selftests/net/lib/csum.c
+++ b/tools/testing/selftests/net/lib/csum.c
@@ -658,6 +658,9 @@ static int recv_verify_packet_ipv4(void *nh, int len)
if (len < sizeof(*iph) || iph->protocol != proto)
return -1;
+ /* For short packets recvmsg returns length with padding, fix that */
+ len = ntohs(iph->tot_len);
+
Are you running into this while running the standard testsuite in
csum.py, or a specific custom invocation?
It was with standard testsuite in csum.py. Not on every run but quite often.
Since the checksum is an L3 feature, trusting the L3 length field for
this makes sense (as long as the packet wasn't truncated).
Ah, I haven't thought about truncated packets. I'll add condition to
update length returned by recvmsg only if it's greater then expected.
Thanks,
Krzysiek