* [PATCH bpf-next] selftests/bpf: Bring test_offload.py back to life
@ 2022-12-06 1:10 Stanislav Fomichev
2022-12-06 11:49 ` Toke Høiland-Jørgensen
0 siblings, 1 reply; 4+ messages in thread
From: Stanislav Fomichev @ 2022-12-06 1:10 UTC (permalink / raw)
To: bpf
Cc: ast, daniel, andrii, martin.lau, song, yhs, john.fastabend,
kpsingh, sdf, haoluo, jolsa, Jakub Kicinski
Commit ccc3f56918f6 ("selftests/bpf: convert remaining legacy map
definitions") converted sample_map_ret0.c to modern BTF map format.
However, it doesn't looks like iproute2 part that attaches XDP
supports this format. Let's use bpftool to load the obj file
instead of iproute2; iproute2 will only attach a pinned program.
Some other related issues:
* bpftool has new extra libbpf_det_bind probing map we need to exclude
* skip trying to load netdevsim modules if it's already loaded (builtin)
Cc: Jakub Kicinski <kuba@kernel.org>
Fixes: ccc3f56918f6 ("selftests/bpf: convert remaining legacy map definitions")
Signed-off-by: Stanislav Fomichev <sdf@google.com>
---
tools/testing/selftests/bpf/test_offload.py | 33 ++++++++++++++++-----
1 file changed, 25 insertions(+), 8 deletions(-)
diff --git a/tools/testing/selftests/bpf/test_offload.py b/tools/testing/selftests/bpf/test_offload.py
index 7fc15e0d24a9..9718140c13fa 100755
--- a/tools/testing/selftests/bpf/test_offload.py
+++ b/tools/testing/selftests/bpf/test_offload.py
@@ -769,12 +769,14 @@ skip(ret != 0, "bpftool not installed")
base_progs = progs
_, base_maps = bpftool("map")
base_map_names = [
- 'pid_iter.rodata' # created on each bpftool invocation
+ 'pid_iter.rodata', # created on each bpftool invocation
+ 'libbpf_det_bind', # created on each bpftool invocation
]
# Check netdevsim
-ret, out = cmd("modprobe netdevsim", fail=False)
-skip(ret != 0, "netdevsim module could not be loaded")
+if not os.path.isdir("/sys/bus/netdevsim/"):
+ ret, out = cmd("modprobe netdevsim", fail=False)
+ skip(ret != 0, "netdevsim module could not be loaded")
# Check debugfs
_, out = cmd("mount")
@@ -1169,9 +1171,12 @@ netns = []
simdev = NetdevSimDev()
sim, = simdev.nsims
- map_obj = bpf_obj("sample_map_ret0.bpf.o")
+ bpftool_prog_load("sample_map_ret0.bpf.o", "/sys/fs/bpf/offload",
+ dev=sim['ifname'])
+ offload = bpf_pinned("/sys/fs/bpf/offload")
+
start_test("Test loading program with maps...")
- sim.set_xdp(map_obj, "offload", JSON=False) # map fixup msg breaks JSON
+ sim.set_xdp(offload, "offload", JSON=False) # map fixup msg breaks JSON
start_test("Test bpftool bound info reporting (own ns)...")
check_dev_info(False, "")
@@ -1191,6 +1196,7 @@ netns = []
prog_file, _ = pin_prog("/sys/fs/bpf/tmp_prog")
map_file, _ = pin_map("/sys/fs/bpf/tmp_map", idx=1, expected=2)
simdev.remove()
+ rm("/sys/fs/bpf/offload")
start_test("Test bpftool bound info reporting (removed dev)...")
check_dev_info_removed(prog_file=prog_file, map_file=map_file)
@@ -1203,7 +1209,10 @@ netns = []
sim, = simdev.nsims
start_test("Test map update (no flags)...")
- sim.set_xdp(map_obj, "offload", JSON=False) # map fixup msg breaks JSON
+ bpftool_prog_load("sample_map_ret0.bpf.o", "/sys/fs/bpf/offload",
+ dev=sim['ifname'])
+ offload = bpf_pinned("/sys/fs/bpf/offload")
+ sim.set_xdp(offload, "offload", JSON=False) # map fixup msg breaks JSON
maps = bpftool_map_list(expected=2)
array = maps[0] if maps[0]["type"] == "array" else maps[1]
htab = maps[0] if maps[0]["type"] == "hash" else maps[1]
@@ -1280,23 +1289,31 @@ netns = []
start_test("Test map remove...")
sim.unset_xdp("offload")
+ rm("/sys/fs/bpf/offload")
bpftool_map_list_wait(expected=0)
simdev.remove()
simdev = NetdevSimDev()
sim, = simdev.nsims
- sim.set_xdp(map_obj, "offload", JSON=False) # map fixup msg breaks JSON
+ bpftool_prog_load("sample_map_ret0.bpf.o", "/sys/fs/bpf/offload",
+ dev=sim['ifname'])
+ offload = bpf_pinned("/sys/fs/bpf/offload")
+ sim.set_xdp(offload, "offload", JSON=False) # map fixup msg breaks JSON
+ rm("/sys/fs/bpf/offload")
simdev.remove()
bpftool_map_list_wait(expected=0)
start_test("Test map creation fail path...")
simdev = NetdevSimDev()
sim, = simdev.nsims
+ bpftool_prog_load("sample_map_ret0.bpf.o", "/sys/fs/bpf/nooffload")
+ nooffload = bpf_pinned("/sys/fs/bpf/nooffload")
sim.dfs["bpf_map_accept"] = "N"
- ret, _ = sim.set_xdp(map_obj, "offload", JSON=False, fail=False)
+ ret, _ = sim.set_xdp(nooffload, "offload", JSON=False, fail=False)
fail(ret == 0,
"netdevsim didn't refuse to create a map with offload disabled")
+ rm("/sys/fs/bpf/nooffload")
simdev.remove()
start_test("Test multi-dev ASIC program reuse...")
--
2.39.0.rc0.267.gcb52ba06e7-goog
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH bpf-next] selftests/bpf: Bring test_offload.py back to life
2022-12-06 1:10 [PATCH bpf-next] selftests/bpf: Bring test_offload.py back to life Stanislav Fomichev
@ 2022-12-06 11:49 ` Toke Høiland-Jørgensen
2022-12-06 18:40 ` Stanislav Fomichev
0 siblings, 1 reply; 4+ messages in thread
From: Toke Høiland-Jørgensen @ 2022-12-06 11:49 UTC (permalink / raw)
To: Stanislav Fomichev, bpf
Cc: ast, daniel, andrii, martin.lau, song, yhs, john.fastabend,
kpsingh, sdf, haoluo, jolsa, Jakub Kicinski
Stanislav Fomichev <sdf@google.com> writes:
> Commit ccc3f56918f6 ("selftests/bpf: convert remaining legacy map
> definitions") converted sample_map_ret0.c to modern BTF map format.
> However, it doesn't looks like iproute2 part that attaches XDP
> supports this format.
It does if it's linked against libbpf; what distro are you on that
doesn't do that?
-Toke
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH bpf-next] selftests/bpf: Bring test_offload.py back to life
2022-12-06 11:49 ` Toke Høiland-Jørgensen
@ 2022-12-06 18:40 ` Stanislav Fomichev
2022-12-06 19:27 ` Toke Høiland-Jørgensen
0 siblings, 1 reply; 4+ messages in thread
From: Stanislav Fomichev @ 2022-12-06 18:40 UTC (permalink / raw)
To: Toke Høiland-Jørgensen
Cc: bpf, ast, daniel, andrii, martin.lau, song, yhs, john.fastabend,
kpsingh, haoluo, jolsa, Jakub Kicinski
On Tue, Dec 6, 2022 at 3:49 AM Toke Høiland-Jørgensen <toke@kernel.org> wrote:
>
> Stanislav Fomichev <sdf@google.com> writes:
>
> > Commit ccc3f56918f6 ("selftests/bpf: convert remaining legacy map
> > definitions") converted sample_map_ret0.c to modern BTF map format.
> > However, it doesn't looks like iproute2 part that attaches XDP
> > supports this format.
>
> It does if it's linked against libbpf; what distro are you on that
> doesn't do that?
Ah, I've been using my own statically compiled version that doesn't
use libbpf; recompiling with -libbpf_force fixes this part.
I'll resend with only base_map_names changes (+ skipping builtin), thanks!
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH bpf-next] selftests/bpf: Bring test_offload.py back to life
2022-12-06 18:40 ` Stanislav Fomichev
@ 2022-12-06 19:27 ` Toke Høiland-Jørgensen
0 siblings, 0 replies; 4+ messages in thread
From: Toke Høiland-Jørgensen @ 2022-12-06 19:27 UTC (permalink / raw)
To: Stanislav Fomichev
Cc: bpf, ast, daniel, andrii, martin.lau, song, yhs, john.fastabend,
kpsingh, haoluo, jolsa, Jakub Kicinski
Stanislav Fomichev <sdf@google.com> writes:
> On Tue, Dec 6, 2022 at 3:49 AM Toke Høiland-Jørgensen <toke@kernel.org> wrote:
>>
>> Stanislav Fomichev <sdf@google.com> writes:
>>
>> > Commit ccc3f56918f6 ("selftests/bpf: convert remaining legacy map
>> > definitions") converted sample_map_ret0.c to modern BTF map format.
>> > However, it doesn't looks like iproute2 part that attaches XDP
>> > supports this format.
>>
>> It does if it's linked against libbpf; what distro are you on that
>> doesn't do that?
>
> Ah, I've been using my own statically compiled version that doesn't
> use libbpf; recompiling with -libbpf_force fixes this part.
> I'll resend with only base_map_names changes (+ skipping builtin), thanks!
Cool! You're welcome :)
-Toke
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-12-06 19:27 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-06 1:10 [PATCH bpf-next] selftests/bpf: Bring test_offload.py back to life Stanislav Fomichev
2022-12-06 11:49 ` Toke Høiland-Jørgensen
2022-12-06 18:40 ` Stanislav Fomichev
2022-12-06 19:27 ` Toke Høiland-Jørgensen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.