On Wed, Sep 07, 2022 at 08:51:56AM +0000, Zhou, Jie2X wrote: > What is the output of test_offload.py? This output [1], but requires this [2] additional fix on top of the one I already posted for netdevsim. Hopefully someone more familiar with this test can comment if this is the right fix or not. Without it, bpftool refuses to load the program [3]. [1] # ./test_offload.py Test destruction of generic XDP... Test TC non-offloaded... Test TC non-offloaded isn't getting bound... Test TC offloads are off by default... [...] test_offload.py: OK # echo $? 0 [2] diff --git a/tools/testing/selftests/bpf/progs/sample_map_ret0.c b/tools/testing/selftests/bpf/progs/sample_map_ret0.c index 495990d355ef..91417aae6194 100644 --- a/tools/testing/selftests/bpf/progs/sample_map_ret0.c +++ b/tools/testing/selftests/bpf/progs/sample_map_ret0.c @@ -17,7 +17,8 @@ struct { } array SEC(".maps"); /* Sample program which should always load for testing control paths. */ -SEC(".text") int func() +SEC("xdp") +int func() { __u64 key64 = 0; __u32 key = 0; diff --git a/tools/testing/selftests/bpf/progs/sample_ret0.c b/tools/testing/selftests/bpf/progs/sample_ret0.c index fec99750d6ea..f51c63dd6f20 100644 --- a/tools/testing/selftests/bpf/progs/sample_ret0.c +++ b/tools/testing/selftests/bpf/progs/sample_ret0.c @@ -1,6 +1,9 @@ /* SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) */ +#include <linux/bpf.h> +#include <bpf/bpf_helpers.h> /* Sample program which should always load for testing control paths. */ +SEC("xdp") int func() { return 0; diff --git a/tools/testing/selftests/bpf/test_offload.py b/tools/testing/selftests/bpf/test_offload.py index 6cd6ef9fc20b..0381f48f45a6 100755 --- a/tools/testing/selftests/bpf/test_offload.py +++ b/tools/testing/selftests/bpf/test_offload.py @@ -235,7 +235,7 @@ def tc(args, JSON=True, ns="", fail=True, include_stderr=False): def ethtool(dev, opt, args, fail=True): return cmd("ethtool %s %s %s" % (opt, dev["ifname"], args), fail=fail) -def bpf_obj(name, sec=".text", path=bpf_test_dir,): +def bpf_obj(name, sec="xdp", path=bpf_test_dir,): return "obj %s sec %s" % (os.path.join(path, name), sec) def bpf_pinned(name): [3] # bpftool prog load /home/idosch/code/linux/tools/testing/selftests/bpf/sample_ret0.o /sys/fs/bpf/nooffload type xdp Error: object file doesn't contain any bpf program Warning: bpftool is now running in libbpf strict mode and has more stringent requirements about BPF programs. If it used to work for this object file but now doesn't, see --legacy option for more details.