Re: [PATCH v7 2/2] lib: checksum: Use aligned accesses for ip_fast_csum and csum_ipv6_magic tests

From: Guenter Roeck
Date: Mon Feb 12 2024 - 19:15:14 EST


On 2/12/24 12:33, Charlie Jenkins wrote:
The test cases for ip_fast_csum and csum_ipv6_magic were failing on a
variety of architectures that are big endian or do not support
misalgined accesses. Both of these test cases are changed to support big
and little endian architectures.

The test for ip_fast_csum is changed to align the data along (14 +
NET_IP_ALIGN) bytes which is the alignment of an IP header. The test for
csum_ipv6_magic aligns the data using a struct. An extra padding field
is added to the struct to ensure that the size of the struct is the same
on all architectures (44 bytes).

Fixes: 6f4c45cbcb00 ("kunit: Add tests for csum_ipv6_magic and ip_fast_csum")
Signed-off-by: Charlie Jenkins <charlie@xxxxxxxxxxxx>

This thing really wants to annoy me. Now I get:

# test_csum_ipv6_magic: ASSERTION FAILED at lib/checksum_kunit.c:494
Expected ( u64)csum_result == ( u64)expected, but
( u64)csum_result == 46543 (0xb5cf)
( u64)expected == 46544 (0xb5d0)
not ok 5 test_csum_ipv6_magic

with the parisc64 tests. All other architectures / platforms work fine
after applying the various pending fixes. It looks like a carry gets
lost somewhere, but I have not been able to figure out where exactly
that happens. This only happens with the 64-bit hppa assembler code.

Guenter