-
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: Test policers' occupancy
Test that policers shared by different tc filters are correctly reference counted by observing policers' occupancy via devlink-resource. 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
5061e77
commit 46b171d
Showing
2 changed files
with
113 additions
and
0 deletions.
There are no files selected for viewing
108 changes: 108 additions & 0 deletions
108
tools/testing/selftests/drivers/net/mlxsw/tc_police_occ.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,108 @@ | ||
#!/bin/bash | ||
# SPDX-License-Identifier: GPL-2.0 | ||
# | ||
# Test that policers shared by different tc filters are correctly reference | ||
# counted by observing policers' occupancy via devlink-resource. | ||
|
||
lib_dir=$(dirname $0)/../../../net/forwarding | ||
|
||
ALL_TESTS=" | ||
tc_police_occ_test | ||
" | ||
NUM_NETIFS=2 | ||
source $lib_dir/lib.sh | ||
source $lib_dir/devlink_lib.sh | ||
|
||
h1_create() | ||
{ | ||
simple_if_init $h1 | ||
} | ||
|
||
h1_destroy() | ||
{ | ||
simple_if_fini $h1 | ||
} | ||
|
||
switch_create() | ||
{ | ||
simple_if_init $swp1 | ||
tc qdisc add dev $swp1 clsact | ||
} | ||
|
||
switch_destroy() | ||
{ | ||
tc qdisc del dev $swp1 clsact | ||
simple_if_fini $swp1 | ||
} | ||
|
||
setup_prepare() | ||
{ | ||
h1=${NETIFS[p1]} | ||
swp1=${NETIFS[p2]} | ||
|
||
vrf_prepare | ||
|
||
h1_create | ||
switch_create | ||
} | ||
|
||
cleanup() | ||
{ | ||
pre_cleanup | ||
|
||
switch_destroy | ||
h1_destroy | ||
|
||
vrf_cleanup | ||
} | ||
|
||
tc_police_occ_get() | ||
{ | ||
devlink_resource_occ_get global_policers single_rate_policers | ||
} | ||
|
||
tc_police_occ_test() | ||
{ | ||
RET=0 | ||
|
||
local occ=$(tc_police_occ_get) | ||
|
||
tc filter add dev $swp1 ingress pref 1 handle 101 proto ip \ | ||
flower skip_sw \ | ||
action police rate 100mbit burst 100k conform-exceed drop/ok | ||
(( occ + 1 == $(tc_police_occ_get) )) | ||
check_err $? "Got occupancy $(tc_police_occ_get), expected $((occ + 1))" | ||
|
||
tc filter del dev $swp1 ingress pref 1 handle 101 flower | ||
(( occ == $(tc_police_occ_get) )) | ||
check_err $? "Got occupancy $(tc_police_occ_get), expected $occ" | ||
|
||
tc filter add dev $swp1 ingress pref 1 handle 101 proto ip \ | ||
flower skip_sw \ | ||
action police rate 100mbit burst 100k conform-exceed drop/ok \ | ||
index 10 | ||
tc filter add dev $swp1 ingress pref 2 handle 102 proto ip \ | ||
flower skip_sw action police index 10 | ||
|
||
(( occ + 1 == $(tc_police_occ_get) )) | ||
check_err $? "Got occupancy $(tc_police_occ_get), expected $((occ + 1))" | ||
|
||
tc filter del dev $swp1 ingress pref 2 handle 102 flower | ||
(( occ + 1 == $(tc_police_occ_get) )) | ||
check_err $? "Got occupancy $(tc_police_occ_get), expected $((occ + 1))" | ||
|
||
tc filter del dev $swp1 ingress pref 1 handle 101 flower | ||
(( occ == $(tc_police_occ_get) )) | ||
check_err $? "Got occupancy $(tc_police_occ_get), expected $occ" | ||
|
||
log_test "tc police occupancy" | ||
} | ||
|
||
trap cleanup EXIT | ||
|
||
setup_prepare | ||
setup_wait | ||
|
||
tests_run | ||
|
||
exit $EXIT_STATUS |
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