selftests: mlxsw: spectrum-2: Add IPv6 variant of simple delta rehash test
authorJiri Pirko <jiri@mellanox.com>
Sun, 24 Feb 2019 06:46:32 +0000 (06:46 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Feb 2019 04:25:29 +0000 (20:25 -0800)
Track the basic codepaths of delta rehash handling,
using mlxsw tracepoints. Use IPv6 addresses.

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

index 4d5b880b1d96adfbfadcc06e25727d6dac8c5770..a92fc0f57e95fad8ea762c5ed6d7a31d9f0484ed 100755 (executable)
@@ -565,6 +565,77 @@ delta_simple_rehash_test()
        log_test "delta simple rehash test ($tcflags)"
 }
 
+delta_simple_ipv6_rehash_test()
+{
+       RET=0
+
+       if [[ "$tcflags" != "skip_sw" ]]; then
+               return 0;
+       fi
+
+       devlink dev param set $DEVLINK_DEV \
+               name acl_region_rehash_interval cmode runtime value 0
+       check_err $? "Failed to set ACL region rehash interval"
+
+       tp_record_all mlxsw:mlxsw_sp_acl_tcam_vregion_rehash 7
+       tp_check_hits_any mlxsw:mlxsw_sp_acl_tcam_vregion_rehash
+       check_fail $? "Rehash trace was hit even when rehash should be disabled"
+
+       devlink dev param set $DEVLINK_DEV \
+               name acl_region_rehash_interval cmode runtime value 3000
+       check_err $? "Failed to set ACL region rehash interval"
+
+       sleep 1
+
+       tc filter add dev $h2 ingress protocol ipv6 pref 1 handle 101 flower \
+               $tcflags dst_ip 2001:db8:1::0/121 action drop
+       tc filter add dev $h2 ingress protocol ipv6 pref 2 handle 102 flower \
+               $tcflags dst_ip 2001:db8:2::2 action drop
+       tc filter add dev $h2 ingress protocol ipv6 pref 3 handle 103 flower \
+               $tcflags dst_ip 2001:db8:3::0/120 action drop
+
+       $MZ $h1 -6 -c 1 -p 64 -a $h1mac -b $h2mac \
+               -A 2001:db8:2::1 -B 2001:db8:2::2 -t udp -q
+
+       tc_check_packets "dev $h2 ingress" 101 1
+       check_fail $? "Matched a wrong filter"
+
+       tc_check_packets "dev $h2 ingress" 103 1
+       check_fail $? "Matched a wrong filter"
+
+       tc_check_packets "dev $h2 ingress" 102 1
+       check_err $? "Did not match on correct filter"
+
+       tp_record_all mlxsw:* 3
+       tp_check_hits_any mlxsw:mlxsw_sp_acl_tcam_vregion_rehash
+       check_err $? "Rehash trace was not hit"
+       tp_check_hits_any mlxsw:mlxsw_sp_acl_tcam_vregion_migrate
+       check_err $? "Migrate trace was not hit"
+       tp_record_all mlxsw:* 3
+       tp_check_hits_any mlxsw:mlxsw_sp_acl_tcam_vregion_rehash
+       check_err $? "Rehash trace was not hit"
+       tp_check_hits_any mlxsw:mlxsw_sp_acl_tcam_vregion_migrate
+       check_fail $? "Migrate trace was hit when no migration should happen"
+
+       $MZ $h1 -6 -c 1 -p 64 -a $h1mac -b $h2mac \
+               -A 2001:db8:2::1 -B 2001:db8:2::2 -t udp -q
+
+       tc_check_packets "dev $h2 ingress" 101 1
+       check_fail $? "Matched a wrong filter after rehash"
+
+       tc_check_packets "dev $h2 ingress" 103 1
+       check_fail $? "Matched a wrong filter after rehash"
+
+       tc_check_packets "dev $h2 ingress" 102 2
+       check_err $? "Did not match on correct filter after rehash"
+
+       tc filter del dev $h2 ingress protocol ipv6 pref 3 handle 103 flower
+       tc filter del dev $h2 ingress protocol ipv6 pref 2 handle 102 flower
+       tc filter del dev $h2 ingress protocol ipv6 pref 1 handle 101 flower
+
+       log_test "delta simple IPv6 rehash test ($tcflags)"
+}
+
 bloom_simple_test()
 {
        # Bloom filter requires that the eRP table is used. This test