selftests: mptcp: fix wait_rm_addr/sf parameters
[platform/kernel/linux-starfive.git] / tools / testing / selftests / net / mptcp / mptcp_join.sh
index ee1f89a..5917a74 100755 (executable)
@@ -1432,7 +1432,9 @@ chk_rst_nr()
        count=$(get_counter ${ns_tx} "MPTcpExtMPRstTx")
        if [ -z "$count" ]; then
                print_skip
-       elif [ $count -lt $rst_tx ]; then
+       # accept more rst than expected except if we don't expect any
+       elif { [ $rst_tx -ne 0 ] && [ $count -lt $rst_tx ]; } ||
+            { [ $rst_tx -eq 0 ] && [ $count -ne 0 ]; }; then
                fail_test "got $count MP_RST[s] TX expected $rst_tx"
        else
                print_ok
@@ -1442,7 +1444,9 @@ chk_rst_nr()
        count=$(get_counter ${ns_rx} "MPTcpExtMPRstRx")
        if [ -z "$count" ]; then
                print_skip
-       elif [ "$count" -lt "$rst_rx" ]; then
+       # accept more rst than expected except if we don't expect any
+       elif { [ $rst_rx -ne 0 ] && [ $count -lt $rst_rx ]; } ||
+            { [ $rst_rx -eq 0 ] && [ $count -ne 0 ]; }; then
                fail_test "got $count MP_RST[s] RX expected $rst_rx"
        else
                print_ok
@@ -2305,6 +2309,7 @@ remove_tests()
                chk_join_nr 1 1 1
                chk_rm_tx_nr 1
                chk_rm_nr 1 1
+               chk_rst_nr 0 0
        fi
 
        # multiple subflows, remove
@@ -2317,6 +2322,7 @@ remove_tests()
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 2 2 2
                chk_rm_nr 2 2
+               chk_rst_nr 0 0
        fi
 
        # single address, remove
@@ -2329,6 +2335,7 @@ remove_tests()
                chk_join_nr 1 1 1
                chk_add_nr 1 1
                chk_rm_nr 1 1 invert
+               chk_rst_nr 0 0
        fi
 
        # subflow and signal, remove
@@ -2342,6 +2349,7 @@ remove_tests()
                chk_join_nr 2 2 2
                chk_add_nr 1 1
                chk_rm_nr 1 1
+               chk_rst_nr 0 0
        fi
 
        # subflows and signal, remove
@@ -2356,6 +2364,7 @@ remove_tests()
                chk_join_nr 3 3 3
                chk_add_nr 1 1
                chk_rm_nr 2 2
+               chk_rst_nr 0 0
        fi
 
        # addresses remove
@@ -2370,6 +2379,7 @@ remove_tests()
                chk_join_nr 3 3 3
                chk_add_nr 3 3
                chk_rm_nr 3 3 invert
+               chk_rst_nr 0 0
        fi
 
        # invalid addresses remove
@@ -2384,6 +2394,7 @@ remove_tests()
                chk_join_nr 1 1 1
                chk_add_nr 3 3
                chk_rm_nr 3 1 invert
+               chk_rst_nr 0 0
        fi
 
        # subflows and signal, flush
@@ -2398,6 +2409,7 @@ remove_tests()
                chk_join_nr 3 3 3
                chk_add_nr 1 1
                chk_rm_nr 1 3 invert simult
+               chk_rst_nr 0 0
        fi
 
        # subflows flush
@@ -2417,6 +2429,7 @@ remove_tests()
                else
                        chk_rm_nr 3 3
                fi
+               chk_rst_nr 0 0
        fi
 
        # addresses flush
@@ -2431,6 +2444,7 @@ remove_tests()
                chk_join_nr 3 3 3
                chk_add_nr 3 3
                chk_rm_nr 3 3 invert simult
+               chk_rst_nr 0 0
        fi
 
        # invalid addresses flush
@@ -2445,6 +2459,7 @@ remove_tests()
                chk_join_nr 1 1 1
                chk_add_nr 3 3
                chk_rm_nr 3 1 invert
+               chk_rst_nr 0 0
        fi
 
        # remove id 0 subflow
@@ -2456,6 +2471,7 @@ remove_tests()
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 1 1 1
                chk_rm_nr 1 1
+               chk_rst_nr 0 0
        fi
 
        # remove id 0 address
@@ -2468,6 +2484,7 @@ remove_tests()
                chk_join_nr 1 1 1
                chk_add_nr 1 1
                chk_rm_nr 1 1 invert
+               chk_rst_nr 0 0 invert
        fi
 }
 
@@ -3272,6 +3289,7 @@ userspace_pm_rm_sf_addr_ns1()
        local addr=$1
        local id=$2
        local tk sp da dp
+       local cnt_addr cnt_sf
 
        tk=$(grep "type:1," "$evts_ns1" |
             sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q')
@@ -3281,11 +3299,13 @@ userspace_pm_rm_sf_addr_ns1()
             sed -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q')
        dp=$(grep "type:10" "$evts_ns1" |
             sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q')
+       cnt_addr=$(rm_addr_count ${ns1})
+       cnt_sf=$(rm_sf_count ${ns1})
        ip netns exec $ns1 ./pm_nl_ctl rem token $tk id $id
        ip netns exec $ns1 ./pm_nl_ctl dsf lip "::ffff:$addr" \
                                lport $sp rip $da rport $dp token $tk
-       wait_rm_addr $ns1 1
-       wait_rm_sf $ns1 1
+       wait_rm_addr $ns1 "${cnt_addr}"
+       wait_rm_sf $ns1 "${cnt_sf}"
 }
 
 userspace_pm_add_sf()
@@ -3307,17 +3327,20 @@ userspace_pm_rm_sf_addr_ns2()
        local addr=$1
        local id=$2
        local tk da dp sp
+       local cnt_addr cnt_sf
 
        tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
        da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2")
        dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
        sp=$(grep "type:10" "$evts_ns2" |
             sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
+       cnt_addr=$(rm_addr_count ${ns2})
+       cnt_sf=$(rm_sf_count ${ns2})
        ip netns exec $ns2 ./pm_nl_ctl rem token $tk id $id
        ip netns exec $ns2 ./pm_nl_ctl dsf lip $addr lport $sp \
                                rip $da rport $dp token $tk
-       wait_rm_addr $ns2 1
-       wait_rm_sf $ns2 1
+       wait_rm_addr $ns2 "${cnt_addr}"
+       wait_rm_sf $ns2 "${cnt_sf}"
 }
 
 userspace_tests()
@@ -3400,7 +3423,7 @@ userspace_tests()
           continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then
                set_userspace_pm $ns1
                pm_nl_set_limits $ns2 1 1
-               speed=10 \
+               speed=5 \
                        run_tests $ns1 $ns2 10.0.1.1 &
                local tests_pid=$!
                wait_mpj $ns1
@@ -3421,7 +3444,7 @@ userspace_tests()
           continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then
                set_userspace_pm $ns2
                pm_nl_set_limits $ns1 0 1
-               speed=10 \
+               speed=5 \
                        run_tests $ns1 $ns2 10.0.1.1 &
                local tests_pid=$!
                wait_mpj $ns2