* [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference
@ 2026-01-27 22:51 Aleksei Oladko
2026-01-27 22:51 ` [PATCH v2 1/5] selftests: net: fib_tests: skip rp_filter test if cls_basic is unavailable Aleksei Oladko
` (5 more replies)
0 siblings, 6 replies; 9+ messages in thread
From: Aleksei Oladko @ 2026-01-27 22:51 UTC (permalink / raw)
To: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Shuah Khan, Aaron Conole
Cc: netdev, linux-kselftest, linux-kernel, Aleksei Oladko
Hi,
This series addresses several issues in the networking kselftests
that cause false-positive failures depending on the host environment,
kernel configuration, or library versions.
The main focus of these changes is to isolate tests from the host
environment (using namespaces) and to ensure proper fallback or
skipping when dependencies are missing.
Summary of changes:
1. Adds a check for cls_basic module in fib_tests. Without this
module, the test fails when attempting to add tc rules instead
of skipping.
2. Fixes ovs-dpctl.py to return a non-zero exit code when pyroute2
is too old. This allows pmtu.sh to correctly fall back to ovs-vsctl
instead of assuming the configuration was successful.
3,4. Move reuseport and pmtu.sh tests info dedicated network namespaces.
This prevents failures caused by port conflicts with host processes
or interference from host firewall rules.
5. Ensures io_uring is enabled via sysctl before running io_uring_zerocopy
test, preventing failures on systems where kernel.io_uring_disabled
is set.
Signed-off-by: Aleksei Oladko <aleksey.oladko@virtuozzo.com>
Changes in v2:
- Fixed a typo by adding the missing backslash in Makefile
- Added a Fixes: tag to the appropriate commit as requested
- Link to v1: https://lore.kernel.org/linux-kselftest/20260120230558.328423-1-aleksey.oladko@virtuozzo.com
---
Aleksei Oladko (3):
selftests: net: fib_tests: skip rp_filter test if cls_basic is
unavailable
selftests: net: make ovs-dpctl.py fail when pyroute2 is unsupported
selftests: net: io_uring_zerocopy: enable io_uring for the test
Konstantin Khorenko (2):
selftests: net: run reuseport tests in netns to avoid port conflicts
selftests: net: run pmtu.sh in netns to avoid host firewall
interference
tools/testing/selftests/net/Makefile | 14 +++++++++-----
tools/testing/selftests/net/fib_tests.sh | 2 ++
.../testing/selftests/net/io_uring_zerocopy_tx.sh | 9 +++++++++
.../testing/selftests/net/openvswitch/ovs-dpctl.py | 2 +-
tools/testing/selftests/net/pmtu_wrapper.sh | 4 ++++
tools/testing/selftests/net/reuseport_bpf.sh | 4 ++++
tools/testing/selftests/net/reuseport_bpf_cpu.sh | 4 ++++
tools/testing/selftests/net/reuseport_bpf_numa.sh | 4 ++++
tools/testing/selftests/net/reuseport_dualstack.sh | 4 ++++
9 files changed, 41 insertions(+), 6 deletions(-)
create mode 100755 tools/testing/selftests/net/pmtu_wrapper.sh
create mode 100755 tools/testing/selftests/net/reuseport_bpf.sh
create mode 100755 tools/testing/selftests/net/reuseport_bpf_cpu.sh
create mode 100755 tools/testing/selftests/net/reuseport_bpf_numa.sh
create mode 100755 tools/testing/selftests/net/reuseport_dualstack.sh
--
2.43.0
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH v2 1/5] selftests: net: fib_tests: skip rp_filter test if cls_basic is unavailable 2026-01-27 22:51 [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Aleksei Oladko @ 2026-01-27 22:51 ` Aleksei Oladko 2026-01-27 22:51 ` [PATCH v2 2/5] selftests: net: make ovs-dpctl.py fail when pyroute2 is unsupported Aleksei Oladko ` (4 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: Aleksei Oladko @ 2026-01-27 22:51 UTC (permalink / raw) To: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Shuah Khan, Aaron Conole Cc: netdev, linux-kselftest, linux-kernel, Aleksei Oladko The rp_filter test in fib_tests.sh installs tc filters using the "basic" classifier but does not verify the corresponding kernel module (cls_basic) is available. On kernels built without CONFIG_NET_CLS_BASIC, the tc command fails and the rp_filter test is reported as a failure. Add a check for the presence of the cls_basic module and skip the rp_filter test when the classifier is not available. Signed-off-by: Aleksei Oladko <aleksey.oladko@virtuozzo.com> --- tools/testing/selftests/net/fib_tests.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh index c5694cc4ddd2..fa58f9b6bed0 100755 --- a/tools/testing/selftests/net/fib_tests.sh +++ b/tools/testing/selftests/net/fib_tests.sh @@ -441,6 +441,8 @@ fib_rp_filter_test() echo echo "IPv4 rp_filter tests" + modprobe cls_basic || return $ksft_skip + setup set -e -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/5] selftests: net: make ovs-dpctl.py fail when pyroute2 is unsupported 2026-01-27 22:51 [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Aleksei Oladko 2026-01-27 22:51 ` [PATCH v2 1/5] selftests: net: fib_tests: skip rp_filter test if cls_basic is unavailable Aleksei Oladko @ 2026-01-27 22:51 ` Aleksei Oladko 2026-01-27 22:51 ` [PATCH v2 3/5] selftests: net: run reuseport tests in netns to avoid port conflicts Aleksei Oladko ` (3 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: Aleksei Oladko @ 2026-01-27 22:51 UTC (permalink / raw) To: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Shuah Khan, Aaron Conole Cc: netdev, linux-kselftest, linux-kernel, Aleksei Oladko The pmtu.sh kselftest configures OVS using ovs-dpctl.py and falls back to ovs-vsctl only when ovs-dpctl.py fails. However, ovs-dpctl.py exits with a success status when the installed pyroute2 package version is lower than 0.6, even though the OVS datapath is not configured. As a result, pmtu.sh assumes that the setup was successful and continues running the test, which later fails due to the missing OVS configuration. Fix the exit code handling in ovs-dpctl.py so that pmtu.sh can detect that the setup did not complete successfully and fall back to ovs-vsctl. Fixes: 962e8a01eab9 ("selftests: openvswitch: Add version check for pyroute2") Signed-off-by: Aleksei Oladko <aleksey.oladko@virtuozzo.com> --- tools/testing/selftests/net/openvswitch/ovs-dpctl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/openvswitch/ovs-dpctl.py b/tools/testing/selftests/net/openvswitch/ovs-dpctl.py index b521e0dea506..848f61fdcee0 100644 --- a/tools/testing/selftests/net/openvswitch/ovs-dpctl.py +++ b/tools/testing/selftests/net/openvswitch/ovs-dpctl.py @@ -2583,7 +2583,7 @@ def main(argv): prverscheck = pyroute2.__version__.split(".") if int(prverscheck[0]) == 0 and int(prverscheck[1]) < 6: print("Need to upgrade the python pyroute2 package to >= 0.6.") - sys.exit(0) + sys.exit(1) parser = argparse.ArgumentParser() parser.add_argument( -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 3/5] selftests: net: run reuseport tests in netns to avoid port conflicts 2026-01-27 22:51 [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Aleksei Oladko 2026-01-27 22:51 ` [PATCH v2 1/5] selftests: net: fib_tests: skip rp_filter test if cls_basic is unavailable Aleksei Oladko 2026-01-27 22:51 ` [PATCH v2 2/5] selftests: net: make ovs-dpctl.py fail when pyroute2 is unsupported Aleksei Oladko @ 2026-01-27 22:51 ` Aleksei Oladko 2026-01-27 22:51 ` [PATCH v2 4/5] selftests: net: run pmtu.sh in netns to avoid host firewall interference Aleksei Oladko ` (2 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: Aleksei Oladko @ 2026-01-27 22:51 UTC (permalink / raw) To: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Shuah Khan, Aaron Conole Cc: netdev, linux-kselftest, linux-kernel, Konstantin Khorenko From: Konstantin Khorenko <khorenko@virtuozzo.com> Some net kselftests use fixed ports which overlap with process-exporter service already running on the host. When such a conflict happens, the test fail with: failed to bind receive socket: Address already in use Instead of changing port numbers, run the affected tests in isolated network namespace to avoid conflicts with running daemons. Signed-off-by: Konstantin Khorenko <khorenko@virtuozzo.com> --- tools/testing/selftests/net/Makefile | 12 ++++++++---- tools/testing/selftests/net/reuseport_bpf.sh | 4 ++++ tools/testing/selftests/net/reuseport_bpf_cpu.sh | 4 ++++ tools/testing/selftests/net/reuseport_bpf_numa.sh | 4 ++++ tools/testing/selftests/net/reuseport_dualstack.sh | 4 ++++ 5 files changed, 24 insertions(+), 4 deletions(-) create mode 100755 tools/testing/selftests/net/reuseport_bpf.sh create mode 100755 tools/testing/selftests/net/reuseport_bpf_cpu.sh create mode 100755 tools/testing/selftests/net/reuseport_bpf_numa.sh create mode 100755 tools/testing/selftests/net/reuseport_dualstack.sh diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile index b66ba04f19d9..ce65763e74ef 100644 --- a/tools/testing/selftests/net/Makefile +++ b/tools/testing/selftests/net/Makefile @@ -64,6 +64,10 @@ TEST_PROGS := \ psock_snd.sh \ reuseaddr_ports_exhausted.sh \ reuseport_addr_any.sh \ + reuseport_bpf.sh \ + reuseport_bpf_cpu.sh \ + reuseport_bpf_numa.sh \ + reuseport_dualstack.sh \ route_hint.sh \ route_localnet.sh \ rps_default_mask.sh \ @@ -142,6 +146,10 @@ TEST_GEN_FILES := \ psock_tpacket \ reuseaddr_ports_exhausted \ reuseport_addr_any \ + reuseport_bpf \ + reuseport_bpf_cpu \ + reuseport_bpf_numa \ + reuseport_dualstack \ rxtimestamp \ sctp_hello \ skf_net_off \ @@ -169,10 +177,6 @@ TEST_GEN_PROGS := \ ipv6_fragmentation \ proc_net_pktgen \ reuseaddr_conflict \ - reuseport_bpf \ - reuseport_bpf_cpu \ - reuseport_bpf_numa \ - reuseport_dualstack \ sk_bind_sendto_listen \ sk_connect_zero_addr \ sk_so_peek_off \ diff --git a/tools/testing/selftests/net/reuseport_bpf.sh b/tools/testing/selftests/net/reuseport_bpf.sh new file mode 100755 index 000000000000..75014a5462a1 --- /dev/null +++ b/tools/testing/selftests/net/reuseport_bpf.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +./in_netns.sh ./reuseport_bpf diff --git a/tools/testing/selftests/net/reuseport_bpf_cpu.sh b/tools/testing/selftests/net/reuseport_bpf_cpu.sh new file mode 100755 index 000000000000..243dc5bee014 --- /dev/null +++ b/tools/testing/selftests/net/reuseport_bpf_cpu.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +./in_netns.sh ./reuseport_bpf_cpu diff --git a/tools/testing/selftests/net/reuseport_bpf_numa.sh b/tools/testing/selftests/net/reuseport_bpf_numa.sh new file mode 100755 index 000000000000..eccab95a3202 --- /dev/null +++ b/tools/testing/selftests/net/reuseport_bpf_numa.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +./in_netns.sh ./reuseport_bpf_numa diff --git a/tools/testing/selftests/net/reuseport_dualstack.sh b/tools/testing/selftests/net/reuseport_dualstack.sh new file mode 100755 index 000000000000..82cc8e345a83 --- /dev/null +++ b/tools/testing/selftests/net/reuseport_dualstack.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +./in_netns.sh ./reuseport_dualstack -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 4/5] selftests: net: run pmtu.sh in netns to avoid host firewall interference 2026-01-27 22:51 [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Aleksei Oladko ` (2 preceding siblings ...) 2026-01-27 22:51 ` [PATCH v2 3/5] selftests: net: run reuseport tests in netns to avoid port conflicts Aleksei Oladko @ 2026-01-27 22:51 ` Aleksei Oladko 2026-01-28 2:46 ` Jakub Kicinski 2026-01-27 22:51 ` [PATCH v2 5/5] selftests: net: io_uring_zerocopy: enable io_uring for the test Aleksei Oladko 2026-01-28 2:44 ` [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Jakub Kicinski 5 siblings, 1 reply; 9+ messages in thread From: Aleksei Oladko @ 2026-01-27 22:51 UTC (permalink / raw) To: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Shuah Khan, Aaron Conole Cc: netdev, linux-kselftest, linux-kernel, Konstantin Khorenko From: Konstantin Khorenko <khorenko@virtuozzo.com> The pmtu.sh kselftest sets up a multi-namespace test topology where the host network itself is part of the test setup. Test packets originating from the created namespace are expected to reach test interface created in the host. When firewall rules are present on the host, this traffic may be blocked, causing the test to fail. Run the test in an isolated network namespace to avoid interference from host firewall rules. Signed-off-by: Konstantin Khorenko <khorenko@virtuozzo.com> --- tools/testing/selftests/net/Makefile | 2 +- tools/testing/selftests/net/pmtu_wrapper.sh | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100755 tools/testing/selftests/net/pmtu_wrapper.sh diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile index ce65763e74ef..f84f7111adf9 100644 --- a/tools/testing/selftests/net/Makefile +++ b/tools/testing/selftests/net/Makefile @@ -60,7 +60,7 @@ TEST_PROGS := \ netns-name.sh \ netns-sysctl.sh \ nl_netdev.py \ - pmtu.sh \ + pmtu_wrapper.sh \ psock_snd.sh \ reuseaddr_ports_exhausted.sh \ reuseport_addr_any.sh \ diff --git a/tools/testing/selftests/net/pmtu_wrapper.sh b/tools/testing/selftests/net/pmtu_wrapper.sh new file mode 100755 index 000000000000..d43c23ba5155 --- /dev/null +++ b/tools/testing/selftests/net/pmtu_wrapper.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +./in_netns.sh ./pmtu.sh "$@" -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 4/5] selftests: net: run pmtu.sh in netns to avoid host firewall interference 2026-01-27 22:51 ` [PATCH v2 4/5] selftests: net: run pmtu.sh in netns to avoid host firewall interference Aleksei Oladko @ 2026-01-28 2:46 ` Jakub Kicinski 0 siblings, 0 replies; 9+ messages in thread From: Jakub Kicinski @ 2026-01-28 2:46 UTC (permalink / raw) To: Aleksei Oladko Cc: David S . Miller, Eric Dumazet, Paolo Abeni, Simon Horman, Shuah Khan, Aaron Conole, netdev, linux-kselftest, linux-kernel, Konstantin Khorenko On Tue, 27 Jan 2026 22:51:33 +0000 Aleksei Oladko wrote: > - pmtu.sh \ > + pmtu_wrapper.sh \ The real script needs to be listed in TEST_FILES now, right? More importantly - please rename the script and use the pmtu.sh as the name of the wrapper. CI system which track the test by name will lose history if the test is renamed. Not a big deal but seems trivially avoidable. -- pw-bot: cr ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 5/5] selftests: net: io_uring_zerocopy: enable io_uring for the test 2026-01-27 22:51 [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Aleksei Oladko ` (3 preceding siblings ...) 2026-01-27 22:51 ` [PATCH v2 4/5] selftests: net: run pmtu.sh in netns to avoid host firewall interference Aleksei Oladko @ 2026-01-27 22:51 ` Aleksei Oladko 2026-01-28 2:44 ` [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Jakub Kicinski 5 siblings, 0 replies; 9+ messages in thread From: Aleksei Oladko @ 2026-01-27 22:51 UTC (permalink / raw) To: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Shuah Khan, Aaron Conole Cc: netdev, linux-kselftest, linux-kernel, Aleksei Oladko, Konstantin Khorenko The io_uring_zerocopy.sh kselftest assumes that io_uring support is enabled on the host system. When io_uring is disabled via the kernel.io_uring_disabled sysctl, the test fails. Explicitly enable io_uring for the test by setting kernel.io_uring_disabled=0. Save the original value of kernel.io_uring_disabled before changing it and restore it in cleanup handler to ensure the system state is restored regardless of test outcome. Signed-off-by: Aleksei Oladko <aleksey.oladko@virtuozzo.com> Signed-off-by: Konstantin Khorenko <khorenko@virtuozzo.com> --- tools/testing/selftests/net/io_uring_zerocopy_tx.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/testing/selftests/net/io_uring_zerocopy_tx.sh b/tools/testing/selftests/net/io_uring_zerocopy_tx.sh index 123439545013..8c3647de9b4c 100755 --- a/tools/testing/selftests/net/io_uring_zerocopy_tx.sh +++ b/tools/testing/selftests/net/io_uring_zerocopy_tx.sh @@ -77,9 +77,13 @@ esac # Start of state changes: install cleanup handler +old_io_uring_disabled=0 cleanup() { ip netns del "${NS2}" ip netns del "${NS1}" + if [ "$old_io_uring_disabled" -ne 0 ]; then + sysctl -w -q kernel.io_uring_disabled="$old_io_uring_disabled" 2>/dev/null || true + fi } trap cleanup EXIT @@ -122,5 +126,10 @@ do_test() { wait } +old_io_uring_disabled=$(sysctl -n kernel.io_uring_disabled 2>/dev/null || echo "0") +if [ "$old_io_uring_disabled" -ne 0 ]; then + sysctl -w -q kernel.io_uring_disabled=0 +fi + do_test "${EXTRA_ARGS}" echo ok -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference 2026-01-27 22:51 [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Aleksei Oladko ` (4 preceding siblings ...) 2026-01-27 22:51 ` [PATCH v2 5/5] selftests: net: io_uring_zerocopy: enable io_uring for the test Aleksei Oladko @ 2026-01-28 2:44 ` Jakub Kicinski 2026-01-28 19:32 ` Aaron Conole 5 siblings, 1 reply; 9+ messages in thread From: Jakub Kicinski @ 2026-01-28 2:44 UTC (permalink / raw) To: Aleksei Oladko Cc: David S . Miller, Eric Dumazet, Paolo Abeni, Simon Horman, Shuah Khan, Aaron Conole, netdev, linux-kselftest, linux-kernel On Tue, 27 Jan 2026 22:51:29 +0000 Aleksei Oladko wrote: > This series addresses several issues in the networking kselftests > that cause false-positive failures depending on the host environment, > kernel configuration, or library versions. > > The main focus of these changes is to isolate tests from the host > environment (using namespaces) and to ensure proper fallback or > skipping when dependencies are missing. > > Summary of changes: > 1. Adds a check for cls_basic module in fib_tests. Without this > module, the test fails when attempting to add tc rules instead > of skipping. > 2. Fixes ovs-dpctl.py to return a non-zero exit code when pyroute2 > is too old. This allows pmtu.sh to correctly fall back to ovs-vsctl > instead of assuming the configuration was successful. > 3,4. Move reuseport and pmtu.sh tests info dedicated network namespaces. > This prevents failures caused by port conflicts with host processes > or interference from host firewall rules. > 5. Ensures io_uring is enabled via sysctl before running io_uring_zerocopy > test, preventing failures on systems where kernel.io_uring_disabled > is set. Something in this series breaks the pmtu test for us in the CI: # 64.84 [+2.54] TEST: IPv6, bridged geneve6: PMTU exceptions - nexthop objects [ OK ] # 65.73 [+0.89] ovs_bridge not supported # 65.73 [+0.00] TEST: IPv4, OVS vxlan4: PMTU exceptions [SKIP] # 67.20 [+1.47] ovs_bridge not supported # 67.20 [+0.00] TEST: IPv6, OVS vxlan4: PMTU exceptions [SKIP] # 68.66 [+1.45] ovs_bridge not supported # 68.66 [+0.00] TEST: IPv4, OVS vxlan6: PMTU exceptions [SKIP] # 70.11 [+1.45] ovs_bridge not supported # 70.11 [+0.00] TEST: IPv6, OVS vxlan6: PMTU exceptions [SKIP] # 71.57 [+1.45] ovs_bridge not supported # 71.57 [+0.00] TEST: IPv4, OVS geneve4: PMTU exceptions [SKIP] # 73.01 [+1.44] ovs_bridge not supported # 73.01 [+0.00] TEST: IPv6, OVS geneve4: PMTU exceptions [SKIP] # 74.46 [+1.45] ovs_bridge not supported # 74.46 [+0.00] TEST: IPv4, OVS geneve6: PMTU exceptions [SKIP] # 75.92 [+1.46] ovs_bridge not supported # 75.93 [+0.00] TEST: IPv6, OVS geneve6: PMTU exceptions [SKIP] https://netdev-ctrl.bots.linux.dev/logs/vmksft/net/results/492641/137-pmtu-wrapper-sh/stdout It was fine before: https://netdev-ctrl.bots.linux.dev/logs/vmksft/net-dbg/results/492461/6-pmtu-sh/stdout Since this is a bash test there are of course no logs to go by.. :/ I tried running python tools/testing/selftests/net/openvswitch/ovs-dpctl.py add-dp br0 in a netns and that works just fine. No idea what's going on.. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference 2026-01-28 2:44 ` [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Jakub Kicinski @ 2026-01-28 19:32 ` Aaron Conole 0 siblings, 0 replies; 9+ messages in thread From: Aaron Conole @ 2026-01-28 19:32 UTC (permalink / raw) To: Jakub Kicinski Cc: Aleksei Oladko, David S . Miller, Eric Dumazet, Paolo Abeni, Simon Horman, Shuah Khan, netdev, linux-kselftest, linux-kernel, ovs-dev, Ilya Maximets, Eelco Chaudron, Stefano Brivio Also CC'd Stefano, ovs-dev, Ilya, and Eelco Jakub Kicinski <kuba@kernel.org> writes: > On Tue, 27 Jan 2026 22:51:29 +0000 Aleksei Oladko wrote: >> This series addresses several issues in the networking kselftests >> that cause false-positive failures depending on the host environment, >> kernel configuration, or library versions. >> >> The main focus of these changes is to isolate tests from the host >> environment (using namespaces) and to ensure proper fallback or >> skipping when dependencies are missing. >> >> Summary of changes: >> 1. Adds a check for cls_basic module in fib_tests. Without this >> module, the test fails when attempting to add tc rules instead >> of skipping. >> 2. Fixes ovs-dpctl.py to return a non-zero exit code when pyroute2 >> is too old. This allows pmtu.sh to correctly fall back to ovs-vsctl >> instead of assuming the configuration was successful. >> 3,4. Move reuseport and pmtu.sh tests info dedicated network namespaces. >> This prevents failures caused by port conflicts with host processes >> or interference from host firewall rules. >> 5. Ensures io_uring is enabled via sysctl before running io_uring_zerocopy >> test, preventing failures on systems where kernel.io_uring_disabled >> is set. > > Something in this series breaks the pmtu test for us in the CI: > > # 64.84 [+2.54] TEST: IPv6, bridged geneve6: PMTU exceptions - nexthop objects [ OK ] > # 65.73 [+0.89] ovs_bridge not supported > # 65.73 [+0.00] TEST: IPv4, OVS vxlan4: PMTU exceptions [SKIP] > # 67.20 [+1.47] ovs_bridge not supported > # 67.20 [+0.00] TEST: IPv6, OVS vxlan4: PMTU exceptions [SKIP] > # 68.66 [+1.45] ovs_bridge not supported > # 68.66 [+0.00] TEST: IPv4, OVS vxlan6: PMTU exceptions [SKIP] > # 70.11 [+1.45] ovs_bridge not supported > # 70.11 [+0.00] TEST: IPv6, OVS vxlan6: PMTU exceptions [SKIP] > # 71.57 [+1.45] ovs_bridge not supported > # 71.57 [+0.00] TEST: IPv4, OVS geneve4: PMTU exceptions [SKIP] > # 73.01 [+1.44] ovs_bridge not supported > # 73.01 [+0.00] TEST: IPv6, OVS geneve4: PMTU exceptions [SKIP] > # 74.46 [+1.45] ovs_bridge not supported > # 74.46 [+0.00] TEST: IPv4, OVS geneve6: PMTU exceptions [SKIP] > # 75.92 [+1.46] ovs_bridge not supported > # 75.93 [+0.00] TEST: IPv6, OVS geneve6: PMTU exceptions [SKIP] > > https://netdev-ctrl.bots.linux.dev/logs/vmksft/net/results/492641/137-pmtu-wrapper-sh/stdout > > It was fine before: > > https://netdev-ctrl.bots.linux.dev/logs/vmksft/net-dbg/results/492461/6-pmtu-sh/stdout > > Since this is a bash test there are of course no logs to go by.. :/ FYI- we can run the script with '-v' and it will include all of the command output. That could help understand what is going on if you can duplicate the [SKIP] behavior in another environment. I'll try to get my vmtest environment back up for it. > I tried running > python tools/testing/selftests/net/openvswitch/ovs-dpctl.py add-dp br0 > in a netns and that works just fine. Yes, I tested just changing the ovs-dpctl.py side (no other changes to pmtu.sh), and then tried with older pyroute2, no pyroute2, and no ovs-vswitchd userspace to fall back on, and didn't see anything odd on my end. I am still nervous that maybe the test is/was passing even in cases where it shouldn't be. > No idea what's going on.. +1, the setup_ovs_bridge seems to be returning some kind of error. NOTE that I was concerned maybe the test would be passing whether or not the ovs-dpctl was returning '0' (from change 2/5), but I see the following when I fake out the version check: ========== 8< =========== [core@centos9 net]$ sudo ./pmtu.sh -v pmtu_ipv4_ovs_vxlan4_exception ########################################################################## COMMAND: python3 ./openvswitch/ovs-dpctl.py add-dp ovs_br0 Need to upgrade the python pyroute2 package to >= 0.6. COMMAND: ip link set ovs_br0 up Cannot find device "ovs_br0" COMMAND: ip netns exec ns_c-VCOwRt ip link add veth_C-A type veth peer name veth_A-C COMMAND: ip netns exec ns_c-VCOwRt ip link set veth_A-C netns 1 COMMAND: ip link set veth_A-C up COMMAND: ip netns exec ns_c-VCOwRt ip link set veth_C-A up COMMAND: ip netns exec ns_c-VCOwRt ip addr add 192.168.2.10/24 dev veth_C-A COMMAND: ip netns exec ns_c-VCOwRt ip addr add fd00:2::c/64 dev veth_C-A COMMAND: python3 ./openvswitch/ovs-dpctl.py add-if ovs_br0 veth_A-C Need to upgrade the python pyroute2 package to >= 0.6. COMMAND: ip netns exec ns_a-kmNqnY ip link set veth_A-R1 netns 1 COMMAND: ip addr add 10.0.1.1/24 dev veth_A-R1 COMMAND: ip addr add fc00:1::1/64 dev veth_A-R1 COMMAND: ip link set veth_A-R1 up COMMAND: ip route add 10.0.3.1 via 10.0.1.2 COMMAND: ip route add fc00:3::1 via fc00:1::2 COMMAND: python3 ./openvswitch/ovs-dpctl.py add-if ovs_br0 vxlan_a -t vxlan Need to upgrade the python pyroute2 package to >= 0.6. COMMAND: python3 ./openvswitch/ovs-dpctl.py add-flow ovs_br0 recirc_id(0),in_port(),eth(),eth_type(0x0800),ipv4() set(tunnel(tun_id=1,dst=10.0.3.1,ttl=64,tp_dst=4789,flags(df|csum))), Need to upgrade the python pyroute2 package to >= 0.6. COMMAND: python3 ./openvswitch/ovs-dpctl.py add-flow ovs_br0 recirc_id(0),in_port(),eth(),eth_type(0x86dd),ipv6() set(tunnel(tun_id=1,dst=10.0.3.1,ttl=64,tp_dst=4789,flags(df|csum))), Need to upgrade the python pyroute2 package to >= 0.6. COMMAND: python3 ./openvswitch/ovs-dpctl.py add-flow ovs_br0 recirc_id(0),tunnel(tun_id=1,src=10.0.3.1,dst=10.0.1.1),in_port(),eth(),eth_type(0x0800),ipv4() Need to upgrade the python pyroute2 package to >= 0.6. COMMAND: python3 ./openvswitch/ovs-dpctl.py add-flow ovs_br0 recirc_id(0),tunnel(tun_id=1,src=10.0.3.1,dst=10.0.1.1),in_port(),eth(),eth_type(0x86dd),ipv6() Need to upgrade the python pyroute2 package to >= 0.6. COMMAND: python3 ./openvswitch/ovs-dpctl.py add-flow ovs_br0 recirc_id(0),tunnel(tun_id=1,src=10.0.3.1,dst=10.0.1.1),in_port(),eth(),eth_type(0x0806),arp() Need to upgrade the python pyroute2 package to >= 0.6. COMMAND: python3 ./openvswitch/ovs-dpctl.py add-flow ovs_br0 recirc_id(0),in_port(),eth(),eth_type(0x0806),arp(sip=192.168.2.10,tip=192.168.2.2) set(tunnel(tun_id=1,dst=10.0.3.1,ttl=64,tp_dst=4789,flags(df|csum))), Need to upgrade the python pyroute2 package to >= 0.6. COMMAND: ip netns exec ns_b-gO9WCK ip link add vxlan_b type vxlan id 1 local 10.0.3.1 remote 10.0.1.1 ttl 64 dstport 4789 COMMAND: ip netns exec ns_b-gO9WCK ip addr add 192.168.2.2/24 dev vxlan_b COMMAND: ip netns exec ns_b-gO9WCK ip addr add fd00:2::b/64 dev vxlan_b COMMAND: ip link set vxlan_a up Cannot find device "vxlan_a" COMMAND: ip netns exec ns_b-gO9WCK ip link set vxlan_b up Cannot find device "ovs_br0" COMMAND: ip netns exec ns_c-VCOwRt ping -q -M want -i 0.1 -c 20 -s 4500 192.168.2.2 PING 192.168.2.2 (192.168.2.2) 4500(4528) bytes of data. --- 192.168.2.2 ping statistics --- 20 packets transmitted, 0 received, +20 errors, 100% packet loss, time 12790ms pipe 4 TEST: IPv4, OVS vxlan4: PMTU exceptions [FAIL] ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-01-28 19:32 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-01-27 22:51 [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Aleksei Oladko 2026-01-27 22:51 ` [PATCH v2 1/5] selftests: net: fib_tests: skip rp_filter test if cls_basic is unavailable Aleksei Oladko 2026-01-27 22:51 ` [PATCH v2 2/5] selftests: net: make ovs-dpctl.py fail when pyroute2 is unsupported Aleksei Oladko 2026-01-27 22:51 ` [PATCH v2 3/5] selftests: net: run reuseport tests in netns to avoid port conflicts Aleksei Oladko 2026-01-27 22:51 ` [PATCH v2 4/5] selftests: net: run pmtu.sh in netns to avoid host firewall interference Aleksei Oladko 2026-01-28 2:46 ` Jakub Kicinski 2026-01-27 22:51 ` [PATCH v2 5/5] selftests: net: io_uring_zerocopy: enable io_uring for the test Aleksei Oladko 2026-01-28 2:44 ` [PATCH v2 0/5] selftests: net: fix false failures due to missing features and host interference Jakub Kicinski 2026-01-28 19:32 ` Aaron Conole
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox