Skip to content

Commit 0f26b74

Browse files
netoptimizerAlexei Starovoitov
authored andcommitted
selftests/bpf: Adjust bpf_xdp_metadata_rx_hash for new arg
Update BPF selftests to use the new RSS type argument for kfunc bpf_xdp_metadata_rx_hash. Signed-off-by: Jesper Dangaard Brouer <[email protected]> Acked-by: Toke Høiland-Jørgensen <[email protected]> Acked-by: Stanislav Fomichev <[email protected]> Link: https://lore.kernel.org/r/168132894068.340624.8914711185697163690.stgit@firesoul Signed-off-by: Alexei Starovoitov <[email protected]>
1 parent 9123397 commit 0f26b74

File tree

6 files changed

+23
-12
lines changed

6 files changed

+23
-12
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,8 @@ static int verify_xsk_metadata(struct xsk *xsk)
273273
if (!ASSERT_NEQ(meta->rx_hash, 0, "rx_hash"))
274274
return -1;
275275

276+
ASSERT_EQ(meta->rx_hash_type, 0, "rx_hash_type");
277+
276278
xsk_ring_cons__release(&xsk->rx, 1);
277279
refill_rx(xsk, comp_addr);
278280

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ __u64 pkts_redir = 0;
1818

1919
extern int bpf_xdp_metadata_rx_timestamp(const struct xdp_md *ctx,
2020
__u64 *timestamp) __ksym;
21-
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx,
22-
__u32 *hash) __ksym;
21+
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx, __u32 *hash,
22+
enum xdp_rss_hash_type *rss_type) __ksym;
2323

2424
SEC("xdp")
2525
int rx(struct xdp_md *ctx)
@@ -80,9 +80,9 @@ int rx(struct xdp_md *ctx)
8080
if (err)
8181
meta->rx_timestamp = 0; /* Used by AF_XDP as not avail signal */
8282

83-
err = bpf_xdp_metadata_rx_hash(ctx, &meta->rx_hash);
84-
if (err)
85-
meta->rx_hash = 0; /* Used by AF_XDP as not avail signal */
83+
err = bpf_xdp_metadata_rx_hash(ctx, &meta->rx_hash, &meta->rx_hash_type);
84+
if (err < 0)
85+
meta->rx_hash_err = err; /* Used by AF_XDP as no hash signal */
8686

8787
__sync_add_and_fetch(&pkts_redir, 1);
8888
return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ struct {
2121

2222
extern int bpf_xdp_metadata_rx_timestamp(const struct xdp_md *ctx,
2323
__u64 *timestamp) __ksym;
24-
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx,
25-
__u32 *hash) __ksym;
24+
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx, __u32 *hash,
25+
enum xdp_rss_hash_type *rss_type) __ksym;
2626

2727
SEC("xdp")
2828
int rx(struct xdp_md *ctx)
@@ -56,7 +56,7 @@ int rx(struct xdp_md *ctx)
5656
if (timestamp == 0)
5757
meta->rx_timestamp = 1;
5858

59-
bpf_xdp_metadata_rx_hash(ctx, &meta->rx_hash);
59+
bpf_xdp_metadata_rx_hash(ctx, &meta->rx_hash, &meta->rx_hash_type);
6060

6161
return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);
6262
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@
55
#include <bpf/bpf_helpers.h>
66
#include <bpf/bpf_endian.h>
77

8-
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx,
9-
__u32 *hash) __ksym;
8+
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx, __u32 *hash,
9+
enum xdp_rss_hash_type *rss_type) __ksym;
1010

1111
int called;
1212

1313
SEC("freplace/rx")
1414
int freplace_rx(struct xdp_md *ctx)
1515
{
16+
enum xdp_rss_hash_type type = 0;
1617
u32 hash = 0;
1718
/* Call _any_ metadata function to make sure we don't crash. */
18-
bpf_xdp_metadata_rx_hash(ctx, &hash);
19+
bpf_xdp_metadata_rx_hash(ctx, &hash, &type);
1920
called++;
2021
return XDP_PASS;
2122
}

tools/testing/selftests/bpf/xdp_hw_metadata.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,11 @@ static void verify_xdp_metadata(void *data)
141141
meta = data - sizeof(*meta);
142142

143143
printf("rx_timestamp: %llu\n", meta->rx_timestamp);
144-
printf("rx_hash: %u\n", meta->rx_hash);
144+
if (meta->rx_hash_err < 0)
145+
printf("No rx_hash err=%d\n", meta->rx_hash_err);
146+
else
147+
printf("rx_hash: 0x%X with RSS type:0x%X\n",
148+
meta->rx_hash, meta->rx_hash_type);
145149
}
146150

147151
static void verify_skb_metadata(int fd)

tools/testing/selftests/bpf/xdp_metadata.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,8 @@
1212
struct xdp_meta {
1313
__u64 rx_timestamp;
1414
__u32 rx_hash;
15+
union {
16+
__u32 rx_hash_type;
17+
__s32 rx_hash_err;
18+
};
1519
};

0 commit comments

Comments
 (0)