File Index
Files and directories
Sign in
FILE

tc_police_occ.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/drivers/net/mlxsw/tc_police_occ.sh BASH
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3#
  4# Test that policers shared by different tc filters are correctly reference
  5# counted by observing policers' occupancy via devlink-resource.
  6
  7lib_dir=$(dirname $0)/../../../net/forwarding
  8
  9ALL_TESTS="
 10	tc_police_occ_test
 11"
 12NUM_NETIFS=2
 13source $lib_dir/lib.sh
 14source $lib_dir/devlink_lib.sh
 15
 16h1_create()
 17{
 18	simple_if_init $h1
 19}
 20
 21h1_destroy()
 22{
 23	simple_if_fini $h1
 24}
 25
 26switch_create()
 27{
 28	simple_if_init $swp1
 29	tc qdisc add dev $swp1 clsact
 30}
 31
 32switch_destroy()
 33{
 34	tc qdisc del dev $swp1 clsact
 35	simple_if_fini $swp1
 36}
 37
 38setup_prepare()
 39{
 40	h1=${NETIFS[p1]}
 41	swp1=${NETIFS[p2]}
 42
 43	vrf_prepare
 44
 45	h1_create
 46	switch_create
 47}
 48
 49cleanup()
 50{
 51	pre_cleanup
 52
 53	switch_destroy
 54	h1_destroy
 55
 56	vrf_cleanup
 57}
 58
 59tc_police_occ_get()
 60{
 61	devlink_resource_occ_get global_policers single_rate_policers
 62}
 63
 64tc_police_occ_test()
 65{
 66	RET=0
 67
 68	local occ=$(tc_police_occ_get)
 69
 70	tc filter add dev $swp1 ingress pref 1 handle 101 proto ip \
 71		flower skip_sw \
 72		action police rate 100mbit burst 100k conform-exceed drop/ok
 73	(( occ + 1 == $(tc_police_occ_get) ))
 74	check_err $? "Got occupancy $(tc_police_occ_get), expected $((occ + 1))"
 75
 76	tc filter del dev $swp1 ingress pref 1 handle 101 flower
 77	(( occ == $(tc_police_occ_get) ))
 78	check_err $? "Got occupancy $(tc_police_occ_get), expected $occ"
 79
 80	tc filter add dev $swp1 ingress pref 1 handle 101 proto ip \
 81		flower skip_sw \
 82		action police rate 100mbit burst 100k conform-exceed drop/ok \
 83		index 10
 84	tc filter add dev $swp1 ingress pref 2 handle 102 proto ip \
 85		flower skip_sw action police index 10
 86
 87	(( occ + 1 == $(tc_police_occ_get) ))
 88	check_err $? "Got occupancy $(tc_police_occ_get), expected $((occ + 1))"
 89
 90	tc filter del dev $swp1 ingress pref 2 handle 102 flower
 91	(( occ + 1 == $(tc_police_occ_get) ))
 92	check_err $? "Got occupancy $(tc_police_occ_get), expected $((occ + 1))"
 93
 94	tc filter del dev $swp1 ingress pref 1 handle 101 flower
 95	(( occ == $(tc_police_occ_get) ))
 96	check_err $? "Got occupancy $(tc_police_occ_get), expected $occ"
 97
 98	log_test "tc police occupancy"
 99}
100
101trap cleanup EXIT
102
103setup_prepare
104setup_wait
105
106tests_run
107
108exit $EXIT_STATUS
~/ Read-only file preview.