Skip to content

Commit

Permalink
Merge branch 'mlxsw-selftests-updates'
Browse files Browse the repository at this point in the history
Ido Schimmel says:

====================
selftests: mlxsw: Various updates

This patchset contains various updates to mlxsw selftests.

Patch #1 replaces open-coded compatibility checks with dedicated
helpers. These helpers are used to skip tests when run on incompatible
machines.

Patch #2 avoids spurious failures in some tests by using permanent
neighbours instead of reachable ones.

Patch #3 reduces the run time of a test by not iterating over all the
available trap policers.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Oct 25, 2021
2 parents 71de5b2 + e860419 commit 233cdfb
Show file tree
Hide file tree
Showing 11 changed files with 112 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ ALL_TESTS="
NUM_NETIFS=4
source $lib_dir/lib.sh
source $lib_dir/devlink_lib.sh
source mlxsw_lib.sh

h1_create()
{
Expand Down Expand Up @@ -626,8 +627,7 @@ ipv6_redirect_test()

ptp_event_test()
{
# PTP is only supported on Spectrum-1, for now.
[[ "$DEVLINK_VIDDID" != "15b3:cb84" ]] && return
mlxsw_only_on_spectrum 1 || return

# PTP Sync (0)
devlink_trap_stats_test "PTP Time-Critical Event Message" "ptp_event" \
Expand All @@ -638,8 +638,7 @@ ptp_event_test()

ptp_general_test()
{
# PTP is only supported on Spectrum-1, for now.
[[ "$DEVLINK_VIDDID" != "15b3:cb84" ]] && return
mlxsw_only_on_spectrum 1 || return

# PTP Announce (b)
devlink_trap_stats_test "PTP General Message" "ptp_general" \
Expand Down
32 changes: 20 additions & 12 deletions tools/testing/selftests/drivers/net/mlxsw/devlink_trap_policer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -272,13 +272,17 @@ __rate_test()

rate_test()
{
local id
local last_policer=$(devlink -j -p trap policer show |
jq '[.[]["'$DEVLINK_DEV'"][].policer] | max')

for id in $(devlink_trap_policer_ids_get); do
echo
log_info "Running rate test for policer $id"
__rate_test $id
done
log_info "Running rate test for policer 1"
__rate_test 1

log_info "Running rate test for policer $((last_policer / 2))"
__rate_test $((last_policer / 2))

log_info "Running rate test for policer $last_policer"
__rate_test $last_policer
}

__burst_test()
Expand Down Expand Up @@ -342,13 +346,17 @@ __burst_test()

burst_test()
{
local id
local last_policer=$(devlink -j -p trap policer show |
jq '[.[]["'$DEVLINK_DEV'"][].policer] | max')

log_info "Running burst test for policer 1"
__burst_test 1

log_info "Running burst test for policer $((last_policer / 2))"
__burst_test $((last_policer / 2))

for id in $(devlink_trap_policer_ids_get); do
echo
log_info "Running burst size test for policer $id"
__burst_test $id
done
log_info "Running burst test for policer $last_policer"
__burst_test $last_policer
}

trap cleanup EXIT
Expand Down
50 changes: 50 additions & 0 deletions tools/testing/selftests/drivers/net/mlxsw/mlxsw_lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,53 @@ if [[ ! -v MLXSW_CHIP ]]; then
exit 1
fi
fi

MLXSW_SPECTRUM_REV=$(case $MLXSW_CHIP in
mlxsw_spectrum)
echo 1 ;;
mlxsw_spectrum*)
echo ${MLXSW_CHIP#mlxsw_spectrum} ;;
*)
echo "Couldn't determine Spectrum chip revision." \
> /dev/stderr ;;
esac)

mlxsw_on_spectrum()
{
local rev=$1; shift
local op="=="
local rev2=${rev%+}

if [[ $rev2 != $rev ]]; then
op=">="
fi

((MLXSW_SPECTRUM_REV $op rev2))
}

__mlxsw_only_on_spectrum()
{
local rev=$1; shift
local caller=$1; shift
local src=$1; shift

if ! mlxsw_on_spectrum "$rev"; then
log_test_skip $src:$caller "(Spectrum-$rev only)"
return 1
fi
}

mlxsw_only_on_spectrum()
{
local caller=${FUNCNAME[1]}
local src=${BASH_SOURCE[1]}
local rev

for rev in "$@"; do
if __mlxsw_only_on_spectrum "$rev" "$caller" "$src"; then
return 0
fi
done

return 1
}
22 changes: 11 additions & 11 deletions tools/testing/selftests/drivers/net/mlxsw/rtnetlink.sh
Original file line number Diff line number Diff line change
Expand Up @@ -779,7 +779,7 @@ nexthop_obj_offload_test()
setup_wait

ip nexthop add id 1 via 192.0.2.2 dev $swp1
ip neigh replace 192.0.2.2 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 192.0.2.2 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1

busywait "$TIMEOUT" wait_for_offload \
Expand All @@ -791,7 +791,7 @@ nexthop_obj_offload_test()
ip nexthop show id 1
check_err $? "nexthop marked as offloaded after setting neigh to failed state"

ip neigh replace 192.0.2.2 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 192.0.2.2 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1
busywait "$TIMEOUT" wait_for_offload \
ip nexthop show id 1
Expand Down Expand Up @@ -828,11 +828,11 @@ nexthop_obj_group_offload_test()
ip nexthop add id 1 via 192.0.2.2 dev $swp1
ip nexthop add id 2 via 2001:db8:1::2 dev $swp1
ip nexthop add id 10 group 1/2
ip neigh replace 192.0.2.2 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 192.0.2.2 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1
ip neigh replace 192.0.2.3 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 192.0.2.3 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1
ip neigh replace 2001:db8:1::2 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 2001:db8:1::2 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1

busywait "$TIMEOUT" wait_for_offload \
Expand Down Expand Up @@ -888,11 +888,11 @@ nexthop_obj_bucket_offload_test()
ip nexthop add id 1 via 192.0.2.2 dev $swp1
ip nexthop add id 2 via 2001:db8:1::2 dev $swp1
ip nexthop add id 10 group 1/2 type resilient buckets 32 idle_timer 0
ip neigh replace 192.0.2.2 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 192.0.2.2 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1
ip neigh replace 192.0.2.3 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 192.0.2.3 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1
ip neigh replace 2001:db8:1::2 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 2001:db8:1::2 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1

busywait "$TIMEOUT" wait_for_offload \
Expand Down Expand Up @@ -921,7 +921,7 @@ nexthop_obj_bucket_offload_test()
check_err $? "nexthop bucket not marked as offloaded after revalidating nexthop"

# Revalidate nexthop id 2 by changing its neighbour
ip neigh replace 2001:db8:1::2 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 2001:db8:1::2 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1
busywait "$TIMEOUT" wait_for_offload \
ip nexthop bucket show nhid 2
Expand Down Expand Up @@ -971,9 +971,9 @@ nexthop_obj_route_offload_test()
setup_wait

ip nexthop add id 1 via 192.0.2.2 dev $swp1
ip neigh replace 192.0.2.2 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 192.0.2.2 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1
ip neigh replace 192.0.2.3 lladdr 00:11:22:33:44:55 nud reachable \
ip neigh replace 192.0.2.3 lladdr 00:11:22:33:44:55 nud perm \
dev $swp1

ip route replace 198.51.100.0/24 nhid 1
Expand Down
10 changes: 6 additions & 4 deletions tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ CHECK_TC="yes"
lib_dir=$(dirname $0)/../../../net/forwarding
source $lib_dir/lib.sh
source $lib_dir/devlink_lib.sh
source mlxsw_lib.sh
source qos_lib.sh

ipaddr()
Expand Down Expand Up @@ -479,10 +480,7 @@ do_ecn_test_perband()
local vlan=$1; shift
local limit=$1; shift

# Per-band ECN counters are not supported on Spectrum-1 and Spectrum-2.
[[ "$DEVLINK_VIDDID" == "15b3:cb84" ||
"$DEVLINK_VIDDID" == "15b3:cf6c" ]] && return

mlxsw_only_on_spectrum 3+ || return
__do_ecn_test get_qdisc_nmarked "$vlan" "$limit" "per-band ECN"
}

Expand Down Expand Up @@ -584,6 +582,8 @@ do_mark_test()
local should_fail=$1; shift
local base

mlxsw_only_on_spectrum 2+ || return

RET=0

start_tcp_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) \
Expand Down Expand Up @@ -632,6 +632,8 @@ do_drop_test()
local base
local now

mlxsw_only_on_spectrum 2+ || return

RET=0

start_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 3 $vlan) $h3_mac
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ NUM_NETIFS=6
source $lib_dir/lib.sh
source $lib_dir/tc_common.sh
source $lib_dir/devlink_lib.sh
source ../mlxsw_lib.sh

if [[ "$DEVLINK_VIDDID" != "15b3:cf6c" && \
"$DEVLINK_VIDDID" != "15b3:cf70" ]]; then
echo "SKIP: test is tailored for Mellanox Spectrum-2 and Spectrum-3"
exit 1
fi
mlxsw_only_on_spectrum 2+ || exit 1

current_test=""

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@
# SPDX-License-Identifier: GPL-2.0

source "../../../../net/forwarding/devlink_lib.sh"
source ../mlxsw_lib.sh

if [ "$DEVLINK_VIDDID" != "15b3:cb84" ]; then
echo "SKIP: test is tailored for Mellanox Spectrum"
exit 1
fi
mlxsw_only_on_spectrum 1 || exit 1

# Needed for returning to default
declare -A KVD_DEFAULTS
Expand Down
3 changes: 2 additions & 1 deletion tools/testing/selftests/drivers/net/mlxsw/tc_restrictions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ NUM_NETIFS=2
source $lib_dir/tc_common.sh
source $lib_dir/lib.sh
source $lib_dir/devlink_lib.sh
source mlxsw_lib.sh

switch_create()
{
Expand Down Expand Up @@ -169,7 +170,7 @@ matchall_sample_egress_test()

# It is forbidden in mlxsw driver to have matchall with sample action
# bound on egress. Spectrum-1 specific restriction
[[ "$DEVLINK_VIDDID" != "15b3:cb84" ]] && return
mlxsw_only_on_spectrum 1 || return

tc qdisc add dev $swp1 clsact

Expand Down
13 changes: 7 additions & 6 deletions tools/testing/selftests/drivers/net/mlxsw/tc_sample.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ NUM_NETIFS=8
CAPTURE_FILE=$(mktemp)
source $lib_dir/lib.sh
source $lib_dir/devlink_lib.sh
source mlxsw_lib.sh

# Available at https://github.com/Mellanox/libpsample
require_command psample
Expand Down Expand Up @@ -431,7 +432,7 @@ tc_sample_md_out_tc_test()
RET=0

# Output traffic class is not supported on Spectrum-1.
[[ "$DEVLINK_VIDDID" == "15b3:cb84" ]] && return
mlxsw_only_on_spectrum 2+ || return

tc filter add dev $rp1 ingress protocol all pref 1 handle 101 matchall \
skip_sw action sample rate 5 group 1
Expand Down Expand Up @@ -477,7 +478,7 @@ tc_sample_md_out_tc_occ_test()
RET=0

# Output traffic class occupancy is not supported on Spectrum-1.
[[ "$DEVLINK_VIDDID" == "15b3:cb84" ]] && return
mlxsw_only_on_spectrum 2+ || return

tc filter add dev $rp1 ingress protocol all pref 1 handle 101 matchall \
skip_sw action sample rate 1024 group 1
Expand Down Expand Up @@ -521,7 +522,7 @@ tc_sample_md_latency_test()
RET=0

# Egress sampling not supported on Spectrum-1.
[[ "$DEVLINK_VIDDID" == "15b3:cb84" ]] && return
mlxsw_only_on_spectrum 2+ || return

tc filter add dev $rp2 egress protocol all pref 1 handle 101 matchall \
skip_sw action sample rate 5 group 1
Expand Down Expand Up @@ -550,7 +551,7 @@ tc_sample_acl_group_conflict_test()
# port with different groups.

# Policy-based sampling is not supported on Spectrum-1.
[[ "$DEVLINK_VIDDID" == "15b3:cb84" ]] && return
mlxsw_only_on_spectrum 2+ || return

tc filter add dev $rp1 ingress protocol ip pref 1 handle 101 flower \
skip_sw action sample rate 1024 group 1
Expand Down Expand Up @@ -579,7 +580,7 @@ __tc_sample_acl_rate_test()
RET=0

# Policy-based sampling is not supported on Spectrum-1.
[[ "$DEVLINK_VIDDID" == "15b3:cb84" ]] && return
mlxsw_only_on_spectrum 2+ || return

tc filter add dev $port $bind protocol ip pref 1 handle 101 flower \
skip_sw dst_ip 198.51.100.1 action sample rate 32 group 1
Expand Down Expand Up @@ -631,7 +632,7 @@ tc_sample_acl_max_rate_test()
RET=0

# Policy-based sampling is not supported on Spectrum-1.
[[ "$DEVLINK_VIDDID" == "15b3:cb84" ]] && return
mlxsw_only_on_spectrum 2+ || return

tc filter add dev $rp1 ingress protocol ip pref 1 handle 101 flower \
skip_sw action sample rate $((2 ** 24 - 1)) group 1
Expand Down
6 changes: 0 additions & 6 deletions tools/testing/selftests/net/forwarding/devlink_lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -563,12 +563,6 @@ devlink_trap_group_policer_get()
| jq '.[][][]["policer"]'
}

devlink_trap_policer_ids_get()
{
devlink -j -p trap policer show \
| jq '.[]["'$DEVLINK_DEV'"][]["policer"]'
}

devlink_port_by_netdev()
{
local if_name=$1
Expand Down
9 changes: 9 additions & 0 deletions tools/testing/selftests/net/forwarding/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,15 @@ log_test()
return 0
}

log_test_skip()
{
local test_name=$1
local opt_str=$2

printf "TEST: %-60s [SKIP]\n" "$test_name $opt_str"
return 0
}

log_info()
{
local msg=$1
Expand Down

0 comments on commit 233cdfb

Please sign in to comment.