The udpgro_frglist.sh uses nat6to4.o which is tested for existence in
bpf/nat6to4.o (relative to the script). This is where the object is
compiled. Even so, the script attempts to use it as part of tc with a
different path (../bpf/nat6to4.o). As a consequence, this fails the script:
Error opening object ../bpf/nat6to4.o: No such file or directory
Cannot initialize ELF context!
Unable to load program
This change refactors these references to use a variable for consistency
and also reformats two long lines.
Signed-off-by: Andrei Gherzan <[email protected]>
---
tools/testing/selftests/net/udpgro_frglist.sh | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/net/udpgro_frglist.sh b/tools/testing/selftests/net/udpgro_frglist.sh
index c9c4b9d65839..1fdf2d53944d 100755
--- a/tools/testing/selftests/net/udpgro_frglist.sh
+++ b/tools/testing/selftests/net/udpgro_frglist.sh
@@ -6,6 +6,7 @@
readonly PEER_NS="ns-peer-$(mktemp -u XXXXXX)"
BPF_FILE="../bpf/xdp_dummy.bpf.o"
+BPF_NAT6TO4_FILE="./bpf/nat6to4.o"
cleanup() {
local -r jobs="$(jobs -p)"
@@ -40,8 +41,12 @@ run_one() {
ip -n "${PEER_NS}" link set veth1 xdp object ${BPF_FILE} section xdp
tc -n "${PEER_NS}" qdisc add dev veth1 clsact
- tc -n "${PEER_NS}" filter add dev veth1 ingress prio 4 protocol ipv6 bpf object-file ../bpf/nat6to4.o section schedcls/ingress6/nat_6 direct-action
- tc -n "${PEER_NS}" filter add dev veth1 egress prio 4 protocol ip bpf object-file ../bpf/nat6to4.o section schedcls/egress4/snat4 direct-action
+ tc -n "${PEER_NS}" filter add dev veth1 ingress prio 4 protocol \
+ ipv6 bpf object-file "$BPF_NAT6TO4_FILE" section \
+ schedcls/ingress6/nat_6 direct-action
+ tc -n "${PEER_NS}" filter add dev veth1 egress prio 4 protocol \
+ ip bpf object-file "$BPF_NAT6TO4_FILE" section \
+ schedcls/egress4/snat4 direct-action
echo ${rx_args}
ip netns exec "${PEER_NS}" ./udpgso_bench_rx ${rx_args} -r &
@@ -88,7 +93,7 @@ if [ ! -f ${BPF_FILE} ]; then
exit -1
fi
-if [ ! -f bpf/nat6to4.o ]; then
+if [ ! -f "$BPF_NAT6TO4_FILE" ]; then
echo "Missing nat6to4 helper. Build bpfnat6to4.o selftest first"
exit -1
fi
--
2.34.1
The net/bpf Makefile uses a similar build infrastructure to BPF[1] while
building libbpf as a dependency of nat6to4. This change adds a .gitignore
entry for SCRATCH_DIR where libbpf and its headers end up built/installed.
[1] Introduced in commit 837a3d66d698 ("selftests: net: Add
cross-compilation support for BPF programs")
Signed-off-by: Andrei Gherzan <[email protected]>
---
tools/testing/selftests/net/.gitignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/net/.gitignore b/tools/testing/selftests/net/.gitignore
index a6911cae368c..0d07dd13c973 100644
--- a/tools/testing/selftests/net/.gitignore
+++ b/tools/testing/selftests/net/.gitignore
@@ -40,6 +40,7 @@ test_unix_oob
timestamping
tls
toeplitz
+/tools
tun
txring_overwrite
txtimestamp
--
2.34.1
On Wed, 25 Jan 2023 21:13:49 +0000 Andrei Gherzan wrote:
> The udpgro_frglist.sh uses nat6to4.o which is tested for existence in
> bpf/nat6to4.o (relative to the script). This is where the object is
> compiled. Even so, the script attempts to use it as part of tc with a
> different path (../bpf/nat6to4.o). As a consequence, this fails the script:
Is this a recent regression? Can you add a Fixes tag?
What tree did you base this patch on? Doesn't seem to apply
> Error opening object ../bpf/nat6to4.o: No such file or directory
> Cannot initialize ELF context!
> Unable to load program
>
> This change refactors these references to use a variable for consistency
> and also reformats two long lines.
>
> Signed-off-by: Andrei Gherzan <[email protected]>
Hi Jakub,
Thanks for taking a look at this.
On 23/01/25 11:08PM, Jakub Kicinski wrote:
> On Wed, 25 Jan 2023 21:13:49 +0000 Andrei Gherzan wrote:
> > The udpgro_frglist.sh uses nat6to4.o which is tested for existence in
> > bpf/nat6to4.o (relative to the script). This is where the object is
> > compiled. Even so, the script attempts to use it as part of tc with a
> > different path (../bpf/nat6to4.o). As a consequence, this fails the script:
>
> Is this a recent regression? Can you add a Fixes tag?
This issue seems to be included from the beginning (edae34a3ed92). I can't say
why this was not seen before upstream but on our side, this test was disabled
internally due to lack of CC support in BPF programs. This was fixed in the
meanwhile in 837a3d66d698 (selftests: net: Add cross-compilation support for
BPF programs) and we found this issue while trying to reenable the test.
So if you think that is reasonable, I could add a Fixes tag for the initial
script commit edae34a3ed92 (selftests net: add UDP GRO fraglist + bpf
self-tests) and push a v3.
> What tree did you base this patch on? Doesn't seem to apply
The patches were done on top of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git, the master
branch - 948ef7bb70c4 (Merge tag 'modules-6.2-rc6' of
git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux). There is another
merge that happened in the meanwhile but the rebase works without issues. I can
send a rebased v3 if needed.
>
> > Error opening object ../bpf/nat6to4.o: No such file or directory
> > Cannot initialize ELF context!
> > Unable to load program
> >
> > This change refactors these references to use a variable for consistency
> > and also reformats two long lines.
> >
> > Signed-off-by: Andrei Gherzan <[email protected]>
--
Andrei Gherzan
On Thu, 26 Jan 2023 10:01:44 +0000 Andrei Gherzan wrote:
> On 23/01/25 11:08PM, Jakub Kicinski wrote:
> > On Wed, 25 Jan 2023 21:13:49 +0000 Andrei Gherzan wrote:
> > > The udpgro_frglist.sh uses nat6to4.o which is tested for existence in
> > > bpf/nat6to4.o (relative to the script). This is where the object is
> > > compiled. Even so, the script attempts to use it as part of tc with a
> > > different path (../bpf/nat6to4.o). As a consequence, this fails the script:
> >
> > Is this a recent regression? Can you add a Fixes tag?
>
> This issue seems to be included from the beginning (edae34a3ed92). I can't say
> why this was not seen before upstream but on our side, this test was disabled
> internally due to lack of CC support in BPF programs. This was fixed in the
> meanwhile in 837a3d66d698 (selftests: net: Add cross-compilation support for
> BPF programs) and we found this issue while trying to reenable the test.
>
> So if you think that is reasonable, I could add a Fixes tag for the initial
> script commit edae34a3ed92 (selftests net: add UDP GRO fraglist + bpf
> self-tests) and push a v3.
We have queued commit 3c107f36db06 ("selftests/net: mv bpf/nat6to4.c
to net folder") in net-next, I think that should fix it, too?
> > What tree did you base this patch on? Doesn't seem to apply
>
> The patches were done on top of
> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git, the master
> branch - 948ef7bb70c4 (Merge tag 'modules-6.2-rc6' of
> git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux). There is another
> merge that happened in the meanwhile but the rebase works without issues. I can
> send a rebased v3 if needed.
Could you try linux-next or net-next ?
On 23/01/26 03:36PM, Jakub Kicinski wrote:
> On Thu, 26 Jan 2023 10:01:44 +0000 Andrei Gherzan wrote:
> > On 23/01/25 11:08PM, Jakub Kicinski wrote:
> > > On Wed, 25 Jan 2023 21:13:49 +0000 Andrei Gherzan wrote:
> > > > The udpgro_frglist.sh uses nat6to4.o which is tested for existence in
> > > > bpf/nat6to4.o (relative to the script). This is where the object is
> > > > compiled. Even so, the script attempts to use it as part of tc with a
> > > > different path (../bpf/nat6to4.o). As a consequence, this fails the script:
> > >
> > > Is this a recent regression? Can you add a Fixes tag?
> >
> > This issue seems to be included from the beginning (edae34a3ed92). I can't say
> > why this was not seen before upstream but on our side, this test was disabled
> > internally due to lack of CC support in BPF programs. This was fixed in the
> > meanwhile in 837a3d66d698 (selftests: net: Add cross-compilation support for
> > BPF programs) and we found this issue while trying to reenable the test.
> >
> > So if you think that is reasonable, I could add a Fixes tag for the initial
> > script commit edae34a3ed92 (selftests net: add UDP GRO fraglist + bpf
> > self-tests) and push a v3.
>
> We have queued commit 3c107f36db06 ("selftests/net: mv bpf/nat6to4.c
> to net folder") in net-next, I think that should fix it, too?
That would fix it indeed. Thanks for the pointer.
>
> > > What tree did you base this patch on? Doesn't seem to apply
> >
> > The patches were done on top of
> > git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git, the master
> > branch - 948ef7bb70c4 (Merge tag 'modules-6.2-rc6' of
> > git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux). There is another
> > merge that happened in the meanwhile but the rebase works without issues. I can
> > send a rebased v3 if needed.
>
> Could you try linux-next or net-next ?
I have sent a v3 rebased on linux-next, split out the remaining changes
and added a commit to fix some shellcheck warnings/errors.
--
Andrei Gherzan