]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests: mptcp: more stable simult_flows tests
authorPaolo Abeni <pabeni@redhat.com>
Tue, 3 Mar 2026 10:56:02 +0000 (11:56 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 5 Mar 2026 02:21:12 +0000 (18:21 -0800)
By default, the netem qdisc can keep up to 1000 packets under its belly
to deal with the configured rate and delay. The simult flows test-case
simulates very low speed links, to avoid problems due to slow CPUs and
the TCP stack tend to transmit at a slightly higher rate than the
(virtual) link constraints.

All the above causes a relatively large amount of packets being enqueued
in the netem qdiscs - the longer the transfer, the longer the queue -
producing increasingly high TCP RTT samples and consequently increasingly
larger receive buffer size due to DRS.

When the receive buffer size becomes considerably larger than the needed
size, the tests results can flake, i.e. because minimal inaccuracy in the
pacing rate can lead to a single subflow usage towards the end of the
connection for a considerable amount of data.

Address the issue explicitly setting netem limits suitable for the
configured link speeds and unflake all the affected tests.

Fixes: 1a418cb8e888 ("mptcp: simult flow self-tests")
Cc: stable@vger.kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20260303-net-mptcp-misc-fixes-7-0-rc2-v1-1-4b5462b6f016@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/mptcp/simult_flows.sh

index 806aaa7d2d61dc2b18d823c8bf86ce044fd3969e..d11a8b949aab5c03a85aa898d5a296e3bfe75003 100755 (executable)
@@ -237,10 +237,13 @@ run_test()
        for dev in ns2eth1 ns2eth2; do
                tc -n $ns2 qdisc del dev $dev root >/dev/null 2>&1
        done
-       tc -n $ns1 qdisc add dev ns1eth1 root netem rate ${rate1}mbit $delay1
-       tc -n $ns1 qdisc add dev ns1eth2 root netem rate ${rate2}mbit $delay2
-       tc -n $ns2 qdisc add dev ns2eth1 root netem rate ${rate1}mbit $delay1
-       tc -n $ns2 qdisc add dev ns2eth2 root netem rate ${rate2}mbit $delay2
+
+       # keep the queued pkts number low, or the RTT estimator will see
+       # increasing latency over time.
+       tc -n $ns1 qdisc add dev ns1eth1 root netem rate ${rate1}mbit $delay1 limit 50
+       tc -n $ns1 qdisc add dev ns1eth2 root netem rate ${rate2}mbit $delay2 limit 50
+       tc -n $ns2 qdisc add dev ns2eth1 root netem rate ${rate1}mbit $delay1 limit 50
+       tc -n $ns2 qdisc add dev ns2eth2 root netem rate ${rate2}mbit $delay2 limit 50
 
        # time is measured in ms, account for transfer size, aggregated link speed
        # and header overhead (10%)