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

From: Charlie Jenkins
Date: Mon Feb 12 2024 - 20:14:18 EST


On Mon, Feb 12, 2024 at 04:14:49PM -0800, Guenter Roeck wrote:
> 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
>

How do you test parisc64? It's not in buildroot which I have been using
to test the other architectures.

- Charlie