Commit 0f26b74e authored by Jesper Dangaard Brouer's avatar Jesper Dangaard Brouer Committed by Alexei Starovoitov
Browse files

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: default avatarJesper Dangaard Brouer <brouer@redhat.com>
Acked-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
Acked-by: default avatarStanislav Fomichev <sdf@google.com>
Link: https://lore.kernel.org/r/168132894068.340624.8914711185697163690.stgit@firesoul


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 9123397a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -273,6 +273,8 @@ static int verify_xsk_metadata(struct xsk *xsk)
	if (!ASSERT_NEQ(meta->rx_hash, 0, "rx_hash"))
		return -1;

	ASSERT_EQ(meta->rx_hash_type, 0, "rx_hash_type");

	xsk_ring_cons__release(&xsk->rx, 1);
	refill_rx(xsk, comp_addr);

+5 −5
Original line number Diff line number Diff line
@@ -18,8 +18,8 @@ __u64 pkts_redir = 0;

extern int bpf_xdp_metadata_rx_timestamp(const struct xdp_md *ctx,
					 __u64 *timestamp) __ksym;
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx,
				    __u32 *hash) __ksym;
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx, __u32 *hash,
				    enum xdp_rss_hash_type *rss_type) __ksym;

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

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

	__sync_add_and_fetch(&pkts_redir, 1);
	return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);
+3 −3
Original line number Diff line number Diff line
@@ -21,8 +21,8 @@ struct {

extern int bpf_xdp_metadata_rx_timestamp(const struct xdp_md *ctx,
					 __u64 *timestamp) __ksym;
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx,
				    __u32 *hash) __ksym;
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx, __u32 *hash,
				    enum xdp_rss_hash_type *rss_type) __ksym;

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

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

	return bpf_redirect_map(&xsk, ctx->rx_queue_index, XDP_PASS);
}
+4 −3
Original line number Diff line number Diff line
@@ -5,17 +5,18 @@
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_endian.h>

extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx,
				    __u32 *hash) __ksym;
extern int bpf_xdp_metadata_rx_hash(const struct xdp_md *ctx, __u32 *hash,
				    enum xdp_rss_hash_type *rss_type) __ksym;

int called;

SEC("freplace/rx")
int freplace_rx(struct xdp_md *ctx)
{
	enum xdp_rss_hash_type type = 0;
	u32 hash = 0;
	/* Call _any_ metadata function to make sure we don't crash. */
	bpf_xdp_metadata_rx_hash(ctx, &hash);
	bpf_xdp_metadata_rx_hash(ctx, &hash, &type);
	called++;
	return XDP_PASS;
}
+5 −1
Original line number Diff line number Diff line
@@ -141,7 +141,11 @@ static void verify_xdp_metadata(void *data)
	meta = data - sizeof(*meta);

	printf("rx_timestamp: %llu\n", meta->rx_timestamp);
	printf("rx_hash: %u\n", meta->rx_hash);
	if (meta->rx_hash_err < 0)
		printf("No rx_hash err=%d\n", meta->rx_hash_err);
	else
		printf("rx_hash: 0x%X with RSS type:0x%X\n",
		       meta->rx_hash, meta->rx_hash_type);
}

static void verify_skb_metadata(int fd)
Loading