Skip to content

Commit 8e27c73

Browse files
LorenzoBianconiKernel Patches Daemon
authored andcommitted
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 <[email protected]>
1 parent 910328d commit 8e27c73

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

tools/testing/selftests/bpf/prog_tests/xdp_metadata.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ static void refill_rx(struct xsk *xsk, __u64 addr)
258258

259259
static int verify_xsk_metadata(struct xsk *xsk, bool sent_from_af_xdp)
260260
{
261+
__u8 ip_summed = sent_from_af_xdp ? XDP_CHECKSUM_NONE : XDP_CHECKSUM_PARTIAL;
261262
const struct xdp_desc *rx_desc;
262263
struct pollfd fds = {};
263264
struct xdp_meta *meta;
@@ -310,6 +311,12 @@ static int verify_xsk_metadata(struct xsk *xsk, bool sent_from_af_xdp)
310311
if (!ASSERT_NEQ(meta->rx_hash, 0, "rx_hash"))
311312
return -1;
312313

314+
if (!ASSERT_EQ(meta->ip_summed, ip_summed, "rx_ip_summed"))
315+
return -1;
316+
317+
if (!ASSERT_EQ(meta->cksum_meta, 0, "rx_cksum_meta"))
318+
return -1;
319+
313320
if (!sent_from_af_xdp) {
314321
if (!ASSERT_NEQ(meta->rx_hash_type & XDP_RSS_TYPE_L4, 0, "rx_hash_type"))
315322
return -1;

tools/testing/selftests/bpf/progs/xdp_metadata.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ int rx(struct xdp_md *ctx)
9898
bpf_xdp_metadata_rx_hash(ctx, &meta->rx_hash, &meta->rx_hash_type);
9999
bpf_xdp_metadata_rx_vlan_tag(ctx, &meta->rx_vlan_proto,
100100
&meta->rx_vlan_tci);
101+
bpf_xdp_metadata_rx_checksum(ctx, &meta->ip_summed, &meta->cksum_meta);
101102

102103
return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);
103104
}

tools/testing/selftests/bpf/xdp_metadata.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ enum xdp_meta_field {
3030
XDP_META_FIELD_VLAN_TAG = BIT(2),
3131
};
3232

33+
#define XDP_CHECKSUM_NONE 0
34+
#define XDP_CHECKSUM_UNNECESSARY 1
35+
#define XDP_CHECKSUM_COMPLETE 2
36+
#define XDP_CHECKSUM_PARTIAL 3
37+
3338
struct xdp_meta {
3439
union {
3540
__u64 rx_timestamp;
@@ -48,5 +53,9 @@ struct xdp_meta {
4853
};
4954
__s32 rx_vlan_tag_err;
5055
};
56+
struct {
57+
__u8 ip_summed;
58+
__u32 cksum_meta;
59+
};
5160
enum xdp_meta_field hint_valid;
5261
};

0 commit comments

Comments
 (0)