Commit 45c5a384 authored by Ido Schimmel's avatar Ido Schimmel Committed by Jakub Kicinski

selftests: mlxsw: Add scale test for port ranges

Query the maximum number of supported port range registers using
devlink-resource and test that this number can be reached by configuring
tc filters with different port ranges. Test that an error is returned in
case the maximum number is exceeded.
Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
Link: https://lore.kernel.org/r/48eee181270d9f291e09d1858c7b26a3f7fcc164.1689092769.git.petrm@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent fe22f741
# SPDX-License-Identifier: GPL-2.0
PORT_RANGE_NUM_NETIFS=2
port_range_h1_create()
{
simple_if_init $h1
}
port_range_h1_destroy()
{
simple_if_fini $h1
}
port_range_switch_create()
{
simple_if_init $swp1
tc qdisc add dev $swp1 clsact
}
port_range_switch_destroy()
{
tc qdisc del dev $swp1 clsact
simple_if_fini $swp1
}
port_range_rules_create()
{
local count=$1; shift
local should_fail=$1; shift
local batch_file="$(mktemp)"
for ((i = 0; i < count; ++i)); do
cat >> $batch_file <<-EOF
filter add dev $swp1 ingress \
prot ipv4 \
pref 1000 \
flower skip_sw \
ip_proto udp dst_port 1-$((100 + i)) \
action pass
EOF
done
tc -b $batch_file
check_err_fail $should_fail $? "Rule insertion"
rm -f $batch_file
}
__port_range_test()
{
local count=$1; shift
local should_fail=$1; shift
port_range_rules_create $count $should_fail
offload_count=$(tc -j filter show dev $swp1 ingress |
jq "[.[] | select(.options.in_hw == true)] | length")
((offload_count == count))
check_err_fail $should_fail $? "port range offload count"
}
port_range_test()
{
local count=$1; shift
local should_fail=$1; shift
if ! tc_offload_check $PORT_RANGE_NUM_NETIFS; then
check_err 1 "Could not test offloaded functionality"
return
fi
__port_range_test $count $should_fail
}
port_range_setup_prepare()
{
h1=${NETIFS[p1]}
swp1=${NETIFS[p2]}
vrf_prepare
port_range_h1_create
port_range_switch_create
}
port_range_cleanup()
{
pre_cleanup
port_range_switch_destroy
port_range_h1_destroy
vrf_cleanup
}
../spectrum/port_range_scale.sh
\ No newline at end of file
...@@ -33,6 +33,7 @@ ALL_TESTS=" ...@@ -33,6 +33,7 @@ ALL_TESTS="
port port
rif_mac_profile rif_mac_profile
rif_counter rif_counter
port_range
" "
for current_test in ${TESTS:-$ALL_TESTS}; do for current_test in ${TESTS:-$ALL_TESTS}; do
......
# SPDX-License-Identifier: GPL-2.0
source ../port_range_scale.sh
port_range_get_target()
{
local should_fail=$1; shift
local target
target=$(devlink_resource_size_get port_range_registers)
if ((! should_fail)); then
echo $target
else
echo $((target + 1))
fi
}
...@@ -30,6 +30,7 @@ ALL_TESTS=" ...@@ -30,6 +30,7 @@ ALL_TESTS="
port port
rif_mac_profile rif_mac_profile
rif_counter rif_counter
port_range
" "
for current_test in ${TESTS:-$ALL_TESTS}; do for current_test in ${TESTS:-$ALL_TESTS}; do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment