selftests: mlxsw: Reduce running time using offload indication
authorDanielle Ratson <danieller@mellanox.com>
Thu, 27 Feb 2020 07:50:19 +0000 (08:50 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 27 Feb 2020 19:10:15 +0000 (11:10 -0800)
After adding a given number of flower rules for different IPv6
addresses, the test generates traffic and ensures that each packet is
received, which is time-consuming.

Instead, test the offload indication of the tc flower rules and reduce
the running time by half.

Signed-off-by: Danielle Ratson <danieller@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/drivers/net/mlxsw/tc_flower_scale.sh

index a6d733d..cc0f07e 100644 (file)
@@ -2,9 +2,9 @@
 # SPDX-License-Identifier: GPL-2.0
 
 # Test for resource limit of offloaded flower rules. The test adds a given
-# number of flower matches for different IPv6 addresses, then generates traffic,
-# and ensures each was hit exactly once. This file contains functions to set up
-# a testing topology and run the test, and is meant to be sourced from a test
+# number of flower matches for different IPv6 addresses, then check the offload
+# indication for all of the tc flower rules. This file contains functions to set
+# up a testing topology and run the test, and is meant to be sourced from a test
 # script that calls the testing routine with a given number of rules.
 
 TC_FLOWER_NUM_NETIFS=2
@@ -94,22 +94,15 @@ __tc_flower_test()
 
        tc_flower_rules_create $count $should_fail
 
-       for ((i = 0; i < count; ++i)); do
-               $MZ $h1 -q -c 1 -t ip -p 20 -b bc -6 \
-                       -A 2001:db8:2::1 \
-                       -B $(tc_flower_addr $i)
-       done
-
-       MISMATCHES=$(
-               tc -j -s filter show dev $h2 ingress |
-               jq -r '[ .[] | select(.kind == "flower") | .options |
-                        values as $rule | .actions[].stats.packets |
-                        select(. != 1) | "\(.) on \($rule.keys.dst_ip)" ] |
-                      join(", ")'
-       )
-
-       test -z "$MISMATCHES"
-       check_err $? "Expected to capture 1 packet for each IP, but got $MISMATCHES"
+       offload_count=$(tc -j -s filter show dev $h2 ingress    |
+                       jq -r '[ .[] | select(.kind == "flower") |
+                       .options | .in_hw ]' | jq .[] | wc -l)
+       [[ $((offload_count - 1)) -eq $count ]]
+       if [[ $should_fail -eq 0 ]]; then
+               check_err $? "Offload mismatch"
+       else
+               check_err_fail $should_fail $? "Offload more than expacted"
+       fi
 }
 
 tc_flower_test()