[Intel-wired-lan] [PATCH bpf-next 4/5] selftests/bpf: Add selftest support for bpf_xdp_metadata_rx_checksum

Loktionov, Aleksandr aleksandr.loktionov at intel.com
Wed Feb 11 08:05:21 UTC 2026



> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces at osuosl.org> On Behalf
> Of Lorenzo Bianconi
> Sent: Tuesday, February 10, 2026 6:22 PM
> To: Donald Hunter <donald.hunter at gmail.com>; Jakub Kicinski
> <kuba at kernel.org>; David S. Miller <davem at davemloft.net>; Eric Dumazet
> <edumazet at google.com>; Paolo Abeni <pabeni at redhat.com>; Simon Horman
> <horms at kernel.org>; Alexei Starovoitov <ast at kernel.org>; Daniel
> Borkmann <daniel at iogearbox.net>; Jesper Dangaard Brouer
> <hawk at kernel.org>; John Fastabend <john.fastabend at gmail.com>;
> Stanislav Fomichev <sdf at fomichev.me>; Andrew Lunn
> <andrew+netdev at lunn.ch>; Nguyen, Anthony L
> <anthony.l.nguyen at intel.com>; Kitszel, Przemyslaw
> <przemyslaw.kitszel at intel.com>; Lobakin, Aleksander
> <aleksander.lobakin at intel.com>; Andrii Nakryiko <andrii at kernel.org>;
> Martin KaFai Lau <martin.lau at linux.dev>; Eduard Zingerman
> <eddyz87 at gmail.com>; Song Liu <song at kernel.org>; Yonghong Song
> <yonghong.song at linux.dev>; KP Singh <kpsingh at kernel.org>; Hao Luo
> <haoluo at google.com>; Jiri Olsa <jolsa at kernel.org>; Shuah Khan
> <shuah at kernel.org>; Fijalkowski, Maciej <maciej.fijalkowski at intel.com>
> Cc: Jakub Sitnicki <jakub at cloudflare.com>; netdev at vger.kernel.org;
> bpf at vger.kernel.org; intel-wired-lan at lists.osuosl.org; linux-
> kselftest at vger.kernel.org; Lorenzo Bianconi <lorenzo at kernel.org>
> Subject: [Intel-wired-lan] [PATCH bpf-next 4/5] selftests/bpf: Add
> selftest support for bpf_xdp_metadata_rx_checksum
> 
> Introduce support to xdp_metadata selftest for
> bpf_xdp_metadata_rx_checksum kfunc.
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
> ---
>  tools/testing/selftests/bpf/prog_tests/xdp_metadata.c | 7 +++++++
>  tools/testing/selftests/bpf/progs/xdp_metadata.c      | 1 +
>  tools/testing/selftests/bpf/xdp_metadata.h            | 9 +++++++++
>  3 files changed, 17 insertions(+)
> 
> diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
> b/tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
> index
> 19f92affc2daa23fdd869554e7a0475b86350a4f..707c98e664745763b01b638a537a
> 797211ded4e1 100644
> --- a/tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
> +++ b/tools/testing/selftests/bpf/prog_tests/xdp_metadata.c
> @@ -258,6 +258,7 @@ static void refill_rx(struct xsk *xsk, __u64 addr)
> 
>  static int verify_xsk_metadata(struct xsk *xsk, bool
> sent_from_af_xdp)  {
> +	__u8 ip_summed = sent_from_af_xdp ? XDP_CHECKSUM_NONE :
> +XDP_CHECKSUM_PARTIAL;
>  	const struct xdp_desc *rx_desc;
>  	struct pollfd fds = {};
>  	struct xdp_meta *meta;
> @@ -310,6 +311,12 @@ static int verify_xsk_metadata(struct xsk *xsk,
> bool sent_from_af_xdp)
>  	if (!ASSERT_NEQ(meta->rx_hash, 0, "rx_hash"))
>  		return -1;
> 
> +	if (!ASSERT_EQ(meta->ip_summed, ip_summed, "rx_ip_summed"))
> +		return -1;
> +
> +	if (!ASSERT_EQ(meta->cksum_meta, 0, "rx_cksum_meta"))
> +		return -1;
> +
>  	if (!sent_from_af_xdp) {
>  		if (!ASSERT_NEQ(meta->rx_hash_type & XDP_RSS_TYPE_L4, 0,
> "rx_hash_type"))
>  			return -1;
> diff --git a/tools/testing/selftests/bpf/progs/xdp_metadata.c
> b/tools/testing/selftests/bpf/progs/xdp_metadata.c
> index
> 09bb8a038d528cf26c5b314cc927915ac2796bf0..ef6a5584a1876a3c47440f21dca9
> 27ec783469dc 100644
> --- a/tools/testing/selftests/bpf/progs/xdp_metadata.c
> +++ b/tools/testing/selftests/bpf/progs/xdp_metadata.c
> @@ -98,6 +98,7 @@ int rx(struct xdp_md *ctx)
>  	bpf_xdp_metadata_rx_hash(ctx, &meta->rx_hash, &meta-
> >rx_hash_type);
>  	bpf_xdp_metadata_rx_vlan_tag(ctx, &meta->rx_vlan_proto,
>  				     &meta->rx_vlan_tci);
> +	bpf_xdp_metadata_rx_checksum(ctx, &meta->ip_summed,
> +&meta->cksum_meta);
> 
>  	return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);
> } diff --git a/tools/testing/selftests/bpf/xdp_metadata.h
> b/tools/testing/selftests/bpf/xdp_metadata.h
> index
> 87318ad1117a1d677af121f11778178532e2a562..a16f71488a34e6df23fec6dd7dde
> 7b7989774618 100644
> --- a/tools/testing/selftests/bpf/xdp_metadata.h
> +++ b/tools/testing/selftests/bpf/xdp_metadata.h
> @@ -30,6 +30,11 @@ enum xdp_meta_field {
>  	XDP_META_FIELD_VLAN_TAG	= BIT(2),
>  };
> 
> +#define XDP_CHECKSUM_NONE		0
> +#define XDP_CHECKSUM_UNNECESSARY	1
> +#define XDP_CHECKSUM_COMPLETE		2
> +#define XDP_CHECKSUM_PARTIAL		3
> +
>  struct xdp_meta {
>  	union {
>  		__u64 rx_timestamp;
> @@ -48,5 +53,9 @@ struct xdp_meta {
>  		};
>  		__s32 rx_vlan_tag_err;
>  	};
> +	struct {
> +		__u8 ip_summed;
> +		__u32 cksum_meta;
> +	};
>  	enum xdp_meta_field hint_valid;
>  };
> 
> --
> 2.53.0

Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov at intel.com>



More information about the Intel-wired-lan mailing list