File Index
Files and directories
Sign in
FILE

tc_action_hw_stats.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/drivers/net/mlxsw/tc_action_hw_stats.sh BASH
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3
  4lib_dir=$(dirname $0)/../../../net/forwarding
  5
  6ALL_TESTS="
  7	default_hw_stats_test
  8	immediate_hw_stats_test
  9	delayed_hw_stats_test
 10	disabled_hw_stats_test
 11"
 12NUM_NETIFS=2
 13
 14source $lib_dir/tc_common.sh
 15source $lib_dir/lib.sh
 16source $lib_dir/devlink_lib.sh
 17
 18h1_create()
 19{
 20	simple_if_init $h1 192.0.2.1/24
 21}
 22
 23h1_destroy()
 24{
 25	simple_if_fini $h1 192.0.2.1/24
 26}
 27
 28switch_create()
 29{
 30	simple_if_init $swp1 192.0.2.2/24
 31	tc qdisc add dev $swp1 clsact
 32}
 33
 34switch_destroy()
 35{
 36	tc qdisc del dev $swp1 clsact
 37	simple_if_fini $swp1 192.0.2.2/24
 38}
 39
 40hw_stats_test()
 41{
 42	RET=0
 43
 44	local name=$1
 45	local action_hw_stats=$2
 46	local occ_delta=$3
 47	local expected_packet_count=$4
 48
 49	local orig_occ=$(devlink_resource_get "counters" "flow" | jq '.["occ"]')
 50
 51	tc filter add dev $swp1 ingress protocol ip pref 1 handle 101 flower \
 52		skip_sw dst_ip 192.0.2.2 action drop $action_hw_stats
 53	check_err $? "Failed to add rule with $name hw_stats"
 54
 55	local new_occ=$(devlink_resource_get "counters" "flow" | jq '.["occ"]')
 56	local expected_occ=$((orig_occ + occ_delta))
 57	[ "$new_occ" == "$expected_occ" ]
 58	check_err $? "Expected occupancy of $expected_occ, got $new_occ"
 59
 60	$MZ $h1 -c 1 -p 64 -a $h1mac -b $swp1mac -A 192.0.2.1 -B 192.0.2.2 \
 61		-t ip -q
 62
 63	tc_check_packets "dev $swp1 ingress" 101 $expected_packet_count
 64	check_err $? "Did not match incoming packet"
 65
 66	tc filter del dev $swp1 ingress protocol ip pref 1 handle 101 flower
 67
 68	log_test "$name hw_stats"
 69}
 70
 71default_hw_stats_test()
 72{
 73	hw_stats_test "default" "" 2 1
 74}
 75
 76immediate_hw_stats_test()
 77{
 78	hw_stats_test "immediate" "hw_stats immediate" 2 1
 79}
 80
 81delayed_hw_stats_test()
 82{
 83	RET=0
 84
 85	tc filter add dev $swp1 ingress protocol ip pref 1 handle 101 flower \
 86		skip_sw dst_ip 192.0.2.2 action drop hw_stats delayed
 87	check_fail $? "Unexpected success in adding rule with delayed hw_stats"
 88
 89	log_test "delayed hw_stats"
 90}
 91
 92disabled_hw_stats_test()
 93{
 94	hw_stats_test "disabled" "hw_stats disabled" 0 0
 95}
 96
 97setup_prepare()
 98{
 99	h1=${NETIFS[p1]}
100	swp1=${NETIFS[p2]}
101
102	h1mac=$(mac_get $h1)
103	swp1mac=$(mac_get $swp1)
104
105	vrf_prepare
106
107	h1_create
108	switch_create
109}
110
111cleanup()
112{
113	pre_cleanup
114
115	switch_destroy
116	h1_destroy
117
118	vrf_cleanup
119}
120
121check_tc_action_hw_stats_support
122
123trap cleanup EXIT
124
125setup_prepare
126setup_wait
127
128tests_run
129
130exit $EXIT_STATUS
~/ Read-only file preview.