mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-04 21:42:31 -04:00
selftests/bpf: Fix xdp_do_redirect failure with 64KB page size
On arm64 with 64KB page size, the selftest xdp_do_redirect failed like below: ... test_xdp_do_redirect:PASS:pkt_count_tc 0 nsec test_max_pkt_size:PASS:prog_run_max_size 0 nsec test_max_pkt_size:FAIL:prog_run_too_big unexpected prog_run_too_big: actual -28 != expected -22 With 64KB page size, the xdp frame size will be much bigger so the existing test will fail. Adjust various parameters so the test can also work on 64K page size. Signed-off-by: Yonghong Song <yonghong.song@linux.dev> Link: https://lore.kernel.org/r/20250612035042.2208630-1-yonghong.song@linux.dev Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Alexei Starovoitov
parent
96fcf7e7a7
commit
44df9e0d4e
@@ -66,16 +66,25 @@ static int attach_tc_prog(struct bpf_tc_hook *hook, int fd)
|
||||
#else
|
||||
#define MAX_PKT_SIZE 3408
|
||||
#endif
|
||||
|
||||
#define PAGE_SIZE_4K 4096
|
||||
#define PAGE_SIZE_64K 65536
|
||||
|
||||
static void test_max_pkt_size(int fd)
|
||||
{
|
||||
char data[MAX_PKT_SIZE + 1] = {};
|
||||
char data[PAGE_SIZE_64K + 1] = {};
|
||||
int err;
|
||||
DECLARE_LIBBPF_OPTS(bpf_test_run_opts, opts,
|
||||
.data_in = &data,
|
||||
.data_size_in = MAX_PKT_SIZE,
|
||||
.flags = BPF_F_TEST_XDP_LIVE_FRAMES,
|
||||
.repeat = 1,
|
||||
);
|
||||
|
||||
if (getpagesize() == PAGE_SIZE_64K)
|
||||
opts.data_size_in = MAX_PKT_SIZE + PAGE_SIZE_64K - PAGE_SIZE_4K;
|
||||
else
|
||||
opts.data_size_in = MAX_PKT_SIZE;
|
||||
|
||||
err = bpf_prog_test_run_opts(fd, &opts);
|
||||
ASSERT_OK(err, "prog_run_max_size");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user