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 <brouer@redhat.com> Acked-by: Toke Høiland-Jørgensen <toke@redhat.com> Acked-by: Stanislav Fomichev <sdf@google.com> Link: https://lore.kernel.org/r/168132894068.340624.8914711185697163690.stgit@firesoul Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
9123397aee
commit
0f26b74e7d
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -12,4 +12,8 @@
|
||||
struct xdp_meta {
|
||||
__u64 rx_timestamp;
|
||||
__u32 rx_hash;
|
||||
union {
|
||||
__u32 rx_hash_type;
|
||||
__s32 rx_hash_err;
|
||||
};
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user