On 26/09/2025 06.20, Stanislav Fomichev wrote:
On 09/25, Lorenzo Bianconi wrote:
Introduce XDP RX checksum capability to XDP metadata specs. XDP RX checksum will be use by devices capable of exposing receive checksum result via bpf_xdp_metadata_rx_checksum(). Moreover, introduce xmo_rx_checksum netdev callback in order allow the eBPF program bounded to the device to retrieve the RX checksum result computed by the hw NIC.
Signed-off-by: Lorenzo Bianconi lorenzo@kernel.org
Documentation/netlink/specs/netdev.yaml | 5 +++++ include/net/xdp.h | 14 ++++++++++++++ net/core/xdp.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+)
diff --git a/Documentation/netlink/specs/netdev.yaml b/Documentation/netlink/specs/netdev.yaml index e00d3fa1c152d7165e9485d6d383a2cc9cef7cfd..00699bf4a7fdb67c6b9ee3548098b0c933fd39a4 100644 --- a/Documentation/netlink/specs/netdev.yaml +++ b/Documentation/netlink/specs/netdev.yaml @@ -61,6 +61,11 @@ definitions: doc: | Device is capable of exposing receive packet VLAN tag via bpf_xdp_metadata_rx_vlan_tag().
-
name: checksum
doc: |
Device is capable of exposing receive checksum result via
bpf_xdp_metadata_rx_checksum().
- type: flags name: xsk-flags
diff --git a/include/net/xdp.h b/include/net/xdp.h index aa742f413c358575396530879af4570dc3fc18de..9ab9ac10ae2074b70618a9d4f32544d8b9a30b63 100644 --- a/include/net/xdp.h +++ b/include/net/xdp.h @@ -586,6 +586,10 @@ void xdp_attachment_setup(struct xdp_attachment_info *info, NETDEV_XDP_RX_METADATA_VLAN_TAG, \ bpf_xdp_metadata_rx_vlan_tag, \ xmo_rx_vlan_tag) \
- XDP_METADATA_KFUNC(XDP_METADATA_KFUNC_RX_CHECKSUM, \
NETDEV_XDP_RX_METADATA_CHECKSUM, \
bpf_xdp_metadata_rx_checksum, \
xmo_rx_checksum)
enum xdp_rx_metadata { #define XDP_METADATA_KFUNC(name, _, __, ___) name, @@ -643,12 +647,22 @@ enum xdp_rss_hash_type { XDP_RSS_TYPE_L4_IPV6_SCTP_EX = XDP_RSS_TYPE_L4_IPV6_SCTP | XDP_RSS_L3_DYNHDR, }; +enum xdp_checksum {
- XDP_CHECKSUM_NONE = CHECKSUM_NONE,
- XDP_CHECKSUM_UNNECESSARY = CHECKSUM_UNNECESSARY,
- XDP_CHECKSUM_COMPLETE = CHECKSUM_COMPLETE,
- XDP_CHECKSUM_PARTIAL = CHECKSUM_PARTIAL,
+};
Btw, might be worth mentioning, awhile ago we had settled on a smaller set of exposed types:
https://lore.kernel.org/netdev/20230811161509.19722-13-larysa.zaremba@intel....
Maybe go through the previous postings and check if the arguments are still relevant? (or explain why we want more checksum now)
IHMO the linked proposal reduced the types too much.
I think Lorenzo's suggested types are much better. One argument is of- cause that the types corresponds directly to the (time proven) types used by the SKB.
I could argue, that we are lacking a type that indicate hardware "failed" to do the checksum, but that is indirectly covered by CHECKSUM_NONE case. And having BPF-developers deal with both CHECKSUM_NONE and CHECKSUM_FAIL correctly is a recipe for bugs.
I will explain in another email, why we need to document what CHECKSUM_NONE actually means.
--Jesper