Re: [PATCH bpf-next v3 1/5] netlink: specs: Add XDP RX checksum capability to XDP metadata specs
From: Lorenzo Bianconi <lorenzo@kernel.org>
Date: 2026-02-28 11:58:56
Also in:
bpf, intel-wired-lan, linux-kselftest
On Fri, 27 Feb 2026 14:21:44 +0100 Lorenzo Bianconi wrote:quoted
quoted
quoted
At the moment there is no way to store the csum value we got running bpf_xdp_metadata_rx_checksum() in order to be consumed during xdp_buff/xdp_frame to skb conversion (this info can just be consumed in the ebpf program bound to the NIC) butI think the scope here is much narrower than the xdp_buf to xdp_frame to skb conversion. We are just pass information between the program and driver which owns xdp_buff. Very similar to your new xmo. We could either tell the driver to discard the csum complete or even add a helper to "adjust" the the csum value. Similar to the helper we have to adjust the csum in TC / skb context.IIUC, for the CSUM_COMPLETE case, we want to add a kfunc used to update (or invalidate) the checksum value (if the packet has been modified by the eBPF program bounded to the NIC) and report the updated checksum to the driver if the XDP verdict is XDP_PASS. Correct? I guess we could have two approaches here: - Write the new checksum value into the xdp_metadata area (if available) where the driver can load it and update the checksum value before allocating the skb. The main downside of this approach is we need modify each driver. - Add a new xmo callback used to set the checksum value and report it from the eBPF program into a specific memory area provided by the driver (e.g. DMA descriptor) that is used to build the skb. What do you think?Exactly. The invalidation is easier 'cause using a single bit in the flags should be uncontroversial. If we want to be able to repair / provide the csum complete then we have to pick one of the two options you outlined. As you may suspect from previous discussions I favor the latter. But we'd probably have to have a PoC with either one and see where the consensus falls.
ack, I will work on a PoC.
Actually, thinking about it more, I guess this is not just a CSUM_COMPLETE issue. XDP_PASS will also risk reporting invalid UNNECESSARY to the stack (e.g. when XDP stripped a UDP tunnel which which the NIC compute the UNNECESSARY but the packet inside the tunnel has an invalid csum).quoted
Moreover, since we already have this issue upstream, do you think this new feature must be part this series or can we do it with a follow-up patch/series?We don't have to add the kfunc to adjust / invalidate the csum. But we should document how the drivers are expected to behave until such kfunc exists and we should add a selftest that checks the documented expectation.
I will add the required documentation and kselftest in the next iteration. Regards, Lorenzo
Attachments
- signature.asc [application/pgp-signature] 228 bytes