mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 22:26:55 +00:00
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: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Petr Machata <petrm@nvidia.com> Signed-off-by: Petr Machata <petrm@nvidia.com> Link: https://lore.kernel.org/r/48eee181270d9f291e09d1858c7b26a3f7fcc164.1689092769.git.petrm@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
fe22f74105
commit
45c5a38476
5 changed files with 114 additions and 0 deletions
|
@ -0,0 +1,95 @@
|
|||
# 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
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
../spectrum/port_range_scale.sh
|
|
@ -33,6 +33,7 @@ ALL_TESTS="
|
|||
port
|
||||
rif_mac_profile
|
||||
rif_counter
|
||||
port_range
|
||||
"
|
||||
|
||||
for current_test in ${TESTS:-$ALL_TESTS}; do
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
# 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="
|
|||
port
|
||||
rif_mac_profile
|
||||
rif_counter
|
||||
port_range
|
||||
"
|
||||
|
||||
for current_test in ${TESTS:-$ALL_TESTS}; do
|
||||
|
|
Loading…
Reference in a new issue