]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests: mptcp: join: tolerate more ADD_ADDR
authorMatthieu Baerts (NGI0) <matttbe@kernel.org>
Sun, 7 Sep 2025 15:32:43 +0000 (17:32 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 10 Sep 2025 01:57:45 +0000 (18:57 -0700)
ADD_ADDR can be retransmitted, and with, the parent commit, these
retransmissions can be sent quicker: from 2 minutes to less than one
second.

To avoid false positives where retransmitted ADD_ADDR causes higher
counters than expected, it is required to be more tolerant. Errors are
now only reported when fewer ADD_ADDRs have been sent/received, except
if no ADD_ADDR are expected.

Before the parent commit, the tolerance was present for each tests where
the ADD_ADDR could be retransmitted in a reasonable time (1 sec). Now
that all tests can have retransmitted ADD_ADDR, it is normal to apply
the same tolerance for all tests.

An alternative could be to disable the ADD_ADDR retransmissions by
default, but that's changing the default kernel behaviour. Plus,
ADD_ADDR retransmissions can be required for some tests. To avoid adding
exceptions to many tests, it seems better to increase the tolerance.

Later, we could add a new MIB counter to identify the ADD_ADDR
retransmissions, and remove the tolerance when this counter is
available.

Reviewed-by: Geliang Tang <geliang@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://patch.msgid.link/20250907-net-next-mptcp-add_addr-retrans-adapt-v1-2-824cc805772b@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/mptcp/mptcp_join.sh

index 2f046167a0b6cc6fb5531a033d8d95c9ea399cf9..e9e11a9e60fd5374c8a98c3b7159ccbca8053030 100755 (executable)
@@ -358,6 +358,7 @@ reset_with_add_addr_timeout()
                tables="${ip6tables}"
        fi
 
+       # set a maximum, to avoid too long timeout with exponential backoff
        ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1
 
        if ! ip netns exec $ns2 $tables -A OUTPUT -p tcp \
@@ -1669,7 +1670,6 @@ chk_add_nr()
        local tx=""
        local rx=""
        local count
-       local timeout
 
        if [[ $ns_invert = "invert" ]]; then
                ns_tx=$ns2
@@ -1678,15 +1678,13 @@ chk_add_nr()
                rx=" server"
        fi
 
-       timeout=$(ip netns exec ${ns_tx} sysctl -n net.mptcp.add_addr_timeout)
-
        print_check "add addr rx${rx}"
        count=$(mptcp_lib_get_counter ${ns_rx} "MPTcpExtAddAddr")
        if [ -z "$count" ]; then
                print_skip
-       # if the test configured a short timeout tolerate greater then expected
-       # add addrs options, due to retransmissions
-       elif [ "$count" != "$add_nr" ] && { [ "$timeout" -gt 1 ] || [ "$count" -lt "$add_nr" ]; }; then
+       # Tolerate more ADD_ADDR then expected (if any), due to retransmissions
+       elif [ "$count" != "$add_nr" ] &&
+            { [ "$add_nr" -eq 0 ] || [ "$count" -lt "$add_nr" ]; }; then
                fail_test "got $count ADD_ADDR[s] expected $add_nr"
        else
                print_ok
@@ -1774,18 +1772,15 @@ chk_add_tx_nr()
 {
        local add_tx_nr=$1
        local echo_tx_nr=$2
-       local timeout
        local count
 
-       timeout=$(ip netns exec $ns1 sysctl -n net.mptcp.add_addr_timeout)
-
        print_check "add addr tx"
        count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtAddAddrTx")
        if [ -z "$count" ]; then
                print_skip
-       # if the test configured a short timeout tolerate greater then expected
-       # add addrs options, due to retransmissions
-       elif [ "$count" != "$add_tx_nr" ] && { [ "$timeout" -gt 1 ] || [ "$count" -lt "$add_tx_nr" ]; }; then
+       # Tolerate more ADD_ADDR then expected (if any), due to retransmissions
+       elif [ "$count" != "$add_tx_nr" ] &&
+            { [ "$add_tx_nr" -eq 0 ] || [ "$count" -lt "$add_tx_nr" ]; }; then
                fail_test "got $count ADD_ADDR[s] TX, expected $add_tx_nr"
        else
                print_ok