]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests: fib_nexthops: Test 16-bit next hop weights
authorPetr Machata <petrm@nvidia.com>
Wed, 7 Aug 2024 14:13:51 +0000 (16:13 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 13 Aug 2024 00:50:35 +0000 (17:50 -0700)
Add tests that attempt to create NH groups that use full 16 bits of NH
weight.

Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://patch.msgid.link/101cdd3f2bfd9511c9bec95f909d20ff56f70ba5.1723036486.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/fib_nexthops.sh

index ac0b2c6a5761bd247ce7923794a600127102bf88..77c83d9508d3b5a20178c1b12d5289cebb019f87 100755 (executable)
@@ -78,7 +78,12 @@ log_test()
        else
                ret=1
                nfail=$((nfail+1))
-               printf "TEST: %-60s  [FAIL]\n" "${msg}"
+               if [[ $rc -eq $ksft_skip ]]; then
+                       printf "TEST: %-60s  [SKIP]\n" "${msg}"
+               else
+                       printf "TEST: %-60s  [FAIL]\n" "${msg}"
+               fi
+
                if [ "$VERBOSE" = "1" ]; then
                        echo "    rc=$rc, expected $expected"
                fi
@@ -923,6 +928,29 @@ ipv6_grp_fcnal()
 
        ipv6_grp_refs
        log_test $? 0 "Nexthop group replace refcounts"
+
+       #
+       # 16-bit weights.
+       #
+       run_cmd "$IP nexthop add id 62 via 2001:db8:91::2 dev veth1"
+       run_cmd "$IP nexthop add id 63 via 2001:db8:91::3 dev veth1"
+       run_cmd "$IP nexthop add id 64 via 2001:db8:91::4 dev veth1"
+       run_cmd "$IP nexthop add id 65 via 2001:db8:91::5 dev veth1"
+       run_cmd "$IP nexthop add id 66 dev veth1"
+
+       run_cmd "$IP nexthop add id 103 group 62,1000"
+       if [[ $? == 0 ]]; then
+               local GRP="id 103 group 62,254/63,255/64,256/65,257/66,65535"
+               run_cmd "$IP nexthop replace $GRP"
+               check_nexthop "id 103" "$GRP"
+               rc=$?
+       else
+               rc=$ksft_skip
+       fi
+
+       $IP nexthop flush >/dev/null 2>&1
+
+       log_test $rc 0 "16-bit weights"
 }
 
 ipv6_res_grp_fcnal()
@@ -987,6 +1015,31 @@ ipv6_res_grp_fcnal()
        check_nexthop_bucket "list id 102" \
                "id 102 index 0 nhid 63 id 102 index 1 nhid 62 id 102 index 2 nhid 62 id 102 index 3 nhid 62"
        log_test $? 0 "Nexthop buckets updated after replace - nECMP"
+
+       #
+       # 16-bit weights.
+       #
+       run_cmd "$IP nexthop add id 62 via 2001:db8:91::2 dev veth1"
+       run_cmd "$IP nexthop add id 63 via 2001:db8:91::3 dev veth1"
+       run_cmd "$IP nexthop add id 64 via 2001:db8:91::4 dev veth1"
+       run_cmd "$IP nexthop add id 65 via 2001:db8:91::5 dev veth1"
+       run_cmd "$IP nexthop add id 66 dev veth1"
+
+       run_cmd "$IP nexthop add id 103 group 62,1000 type resilient buckets 32"
+       if [[ $? == 0 ]]; then
+               local GRP="id 103 group 62,254/63,255/64,256/65,257/66,65535 $(:
+                         )type resilient buckets 32 idle_timer 0 $(:
+                         )unbalanced_timer 0"
+               run_cmd "$IP nexthop replace $GRP"
+               check_nexthop "id 103" "$GRP unbalanced_time 0"
+               rc=$?
+       else
+               rc=$ksft_skip
+       fi
+
+       $IP nexthop flush >/dev/null 2>&1
+
+       log_test $rc 0 "16-bit weights"
 }
 
 ipv6_fcnal_runtime()