Re: [PATCH bpf-next v2 11/13] selftests/bpf: add network helpers to generate udp checksums

From: Alexis Lothoré
Date: Tue Nov 19 2024 - 03:57:42 EST


On 11/15/24 16:54, Stanislav Fomichev wrote:
> On 11/14, Alexis Lothoré (eBPF Foundation) wrote:
>> +static inline __sum16 build_udp_v4_csum(const struct iphdr *iph, __u8 l4_proto,
>> + __u16 l4_len, const void *l4_start,
>> + int num_words)
>> +{
>> + unsigned long pseudo_sum;
>> + int num_u16 = sizeof(iph->saddr); /* halfwords: twice byte len */
>> +
>> + pseudo_sum = add_csum_hword((void *)&iph->saddr, num_u16);
>> + pseudo_sum += htons(l4_proto);
>> + pseudo_sum += l4_len;
>> + pseudo_sum += add_csum_hword(l4_start, num_words);
>> + return csum_fold(pseudo_sum);
>
> I was expecting to see a call to csum_tcpudp_magic here. And csum_ipv6_magic
> down below. These build pseudo header csum, so no need to manually do it
> again.

I initially tried to fit csum_tcpudp_magic here and did not manage to make a
valid UDP checksum, but after more attempts, it looks like I had a
misunderstanding this checksum computation. I am now able to used
csum_tcpudp_magic in build_udp_v4_csum, it will be fixed in the next revision :)

Thanks,

Alexis

--
Alexis Lothoré, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com