Thread (8 messages) 8 messages, 4 authors, 2024-01-03

Re: [PATCH bpf-next 0/2] bpf: add csum/ip_summed fields to __sk_buff

From: Martin KaFai Lau <martin.lau@linux.dev>
Date: 2024-01-03 00:52:17
Also in: bpf, linux-kselftest, lkml

On 1/2/24 10:11 AM, Stanislav Fomichev wrote:
On 12/29, Menglong Dong wrote:
quoted
For now, we have to call some helpers when we need to update the csum,
such as bpf_l4_csum_replace, bpf_l3_csum_replace, etc. These helpers are
not inlined, which causes poor performance.

In fact, we can define our own csum update functions in BPF program
instead of bpf_l3_csum_replace, which is totally inlined and efficient.
However, we can't do this for bpf_l4_csum_replace for now, as we can't
update skb->csum, which can cause skb->csum invalid in the rx path with
CHECKSUM_COMPLETE mode.

What's more, we can't use the direct data access and have to use
skb_store_bytes() with the BPF_F_RECOMPUTE_CSUM flag in some case, such
as modifing the vni in the vxlan header and the underlay udp header has
no checksum.
There is bpf_csum_update(), does it work?
A helper call should be acceptable comparing with the csum calculation itself.
quoted
In the first patch, we make skb->csum readable and writable, and we make
skb->ip_summed readable. For now, for tc only. With these 2 fields, we
don't need to call bpf helpers for csum update any more.

In the second patch, we add some testcases for the read/write testing for
skb->csum and skb->ip_summed.

If this series is acceptable, we can define the inlined functions for csum
update in libbpf in the next step.
One downside of exposing those as __sk_buff fields is that all this
skb internal csum stuff now becomes a UAPI. And I'm not sure we want
+1. Please no new __sk_buff extension and no new conversion in 
bpf_convert_ctx_access().
that :-) Should we add a lightweight kfunc to reset the fields instead?
Or will it still have an unacceptable overhead?
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help