-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests: mlxsw: Add scale test for tc-police
Query the maximum number of supported policers using devlink-resource and test that this number can be reached by configuring tc filters with police action. Test that an error is returned in case the maximum number is exceeded. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Reviewed-by: Petr Machata <petrm@mellanox.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
- Loading branch information
Ido Schimmel
authored and
Jakub Kicinski
committed
Jul 16, 2020
1 parent
cb12d17
commit 5061e77
Showing
5 changed files
with
126 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
16 changes: 16 additions & 0 deletions
16
tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_police_scale.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# SPDX-License-Identifier: GPL-2.0 | ||
source ../tc_police_scale.sh | ||
|
||
tc_police_get_target() | ||
{ | ||
local should_fail=$1; shift | ||
local target | ||
|
||
target=$(devlink_resource_size_get global_policers single_rate_policers) | ||
|
||
if ((! should_fail)); then | ||
echo $target | ||
else | ||
echo $((target + 1)) | ||
fi | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
16 changes: 16 additions & 0 deletions
16
tools/testing/selftests/drivers/net/mlxsw/spectrum/tc_police_scale.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# SPDX-License-Identifier: GPL-2.0 | ||
source ../tc_police_scale.sh | ||
|
||
tc_police_get_target() | ||
{ | ||
local should_fail=$1; shift | ||
local target | ||
|
||
target=$(devlink_resource_size_get global_policers single_rate_policers) | ||
|
||
if ((! should_fail)); then | ||
echo $target | ||
else | ||
echo $((target + 1)) | ||
fi | ||
} |
92 changes: 92 additions & 0 deletions
92
tools/testing/selftests/drivers/net/mlxsw/tc_police_scale.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
# SPDX-License-Identifier: GPL-2.0 | ||
|
||
TC_POLICE_NUM_NETIFS=2 | ||
|
||
tc_police_h1_create() | ||
{ | ||
simple_if_init $h1 | ||
} | ||
|
||
tc_police_h1_destroy() | ||
{ | ||
simple_if_fini $h1 | ||
} | ||
|
||
tc_police_switch_create() | ||
{ | ||
simple_if_init $swp1 | ||
tc qdisc add dev $swp1 clsact | ||
} | ||
|
||
tc_police_switch_destroy() | ||
{ | ||
tc qdisc del dev $swp1 clsact | ||
simple_if_fini $swp1 | ||
} | ||
|
||
tc_police_rules_create() | ||
{ | ||
local count=$1; shift | ||
local should_fail=$1; shift | ||
|
||
TC_POLICE_BATCH_FILE="$(mktemp)" | ||
|
||
for ((i = 0; i < count; ++i)); do | ||
cat >> $TC_POLICE_BATCH_FILE <<-EOF | ||
filter add dev $swp1 ingress \ | ||
prot ip \ | ||
flower skip_sw \ | ||
action police rate 10mbit burst 100k \ | ||
conform-exceed drop/ok | ||
EOF | ||
done | ||
|
||
tc -b $TC_POLICE_BATCH_FILE | ||
check_err_fail $should_fail $? "Rule insertion" | ||
} | ||
|
||
__tc_police_test() | ||
{ | ||
local count=$1; shift | ||
local should_fail=$1; shift | ||
|
||
tc_police_rules_create $count $should_fail | ||
|
||
offload_count=$(tc filter show dev $swp1 ingress | grep in_hw | wc -l) | ||
((offload_count == count)) | ||
check_err_fail $should_fail $? "tc police offload count" | ||
} | ||
|
||
tc_police_test() | ||
{ | ||
local count=$1; shift | ||
local should_fail=$1; shift | ||
|
||
if ! tc_offload_check $TC_POLICE_NUM_NETIFS; then | ||
check_err 1 "Could not test offloaded functionality" | ||
return | ||
fi | ||
|
||
__tc_police_test $count $should_fail | ||
} | ||
|
||
tc_police_setup_prepare() | ||
{ | ||
h1=${NETIFS[p1]} | ||
swp1=${NETIFS[p2]} | ||
|
||
vrf_prepare | ||
|
||
tc_police_h1_create | ||
tc_police_switch_create | ||
} | ||
|
||
tc_police_cleanup() | ||
{ | ||
pre_cleanup | ||
|
||
tc_police_switch_destroy | ||
tc_police_h1_destroy | ||
|
||
vrf_cleanup | ||
} |