Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/testing/selftests/drivers/net/mlxsw/qos_defprio.sh
26292 views
1
#!/bin/bash
2
# SPDX-License-Identifier: GPL-2.0
3
4
# Test for port-default priority. Non-IP packets ingress $swp1 and are
5
# prioritized according to the default priority specified at the port.
6
# rx_octets_prio_* counters are used to verify the prioritization.
7
#
8
# +----------------------------------+
9
# | H1 |
10
# | + $h1 |
11
# | | 192.0.2.1/28 |
12
# +----|-----------------------------+
13
# |
14
# +----|-----------------------------+
15
# | SW | |
16
# | + $swp1 |
17
# | 192.0.2.2/28 |
18
# | dcb app default-prio <prio> |
19
# +----------------------------------+
20
21
ALL_TESTS="
22
ping_ipv4
23
test_defprio
24
"
25
26
lib_dir=$(dirname $0)/../../../net/forwarding
27
28
NUM_NETIFS=2
29
: ${HIT_TIMEOUT:=1000} # ms
30
source $lib_dir/lib.sh
31
32
h1_create()
33
{
34
simple_if_init $h1 192.0.2.1/28
35
}
36
37
h1_destroy()
38
{
39
simple_if_fini $h1 192.0.2.1/28
40
}
41
42
switch_create()
43
{
44
ip link set dev $swp1 up
45
ip addr add dev $swp1 192.0.2.2/28
46
}
47
48
switch_destroy()
49
{
50
dcb app flush dev $swp1 default-prio
51
ip addr del dev $swp1 192.0.2.2/28
52
ip link set dev $swp1 down
53
}
54
55
setup_prepare()
56
{
57
h1=${NETIFS[p1]}
58
swp1=${NETIFS[p2]}
59
60
vrf_prepare
61
62
h1_create
63
switch_create
64
}
65
66
cleanup()
67
{
68
pre_cleanup
69
70
switch_destroy
71
h1_destroy
72
73
vrf_cleanup
74
}
75
76
ping_ipv4()
77
{
78
ping_test $h1 192.0.2.2
79
}
80
81
__test_defprio()
82
{
83
local prio_install=$1; shift
84
local prio_observe=$1; shift
85
local key
86
local t1
87
local i
88
89
RET=0
90
91
dcb app add dev $swp1 default-prio $prio_install
92
93
local t0=$(ethtool_stats_get $swp1 rx_frames_prio_$prio_observe)
94
mausezahn -q $h1 -d 100m -c 10 -t arp reply
95
t1=$(busywait "$HIT_TIMEOUT" until_counter_is ">= $((t0 + 10))" \
96
ethtool_stats_get $swp1 rx_frames_prio_$prio_observe)
97
98
check_err $? "Default priority $prio_install/$prio_observe: Expected to capture 10 packets, got $((t1 - t0))."
99
log_test "Default priority $prio_install/$prio_observe"
100
101
dcb app del dev $swp1 default-prio $prio_install
102
}
103
104
test_defprio()
105
{
106
local prio
107
108
for prio in {0..7}; do
109
__test_defprio $prio $prio
110
done
111
112
dcb app add dev $swp1 default-prio 3
113
__test_defprio 0 3
114
__test_defprio 1 3
115
__test_defprio 2 3
116
__test_defprio 4 4
117
__test_defprio 5 5
118
__test_defprio 6 6
119
__test_defprio 7 7
120
dcb app del dev $swp1 default-prio 3
121
}
122
123
trap cleanup EXIT
124
125
setup_prepare
126
setup_wait
127
128
tests_run
129
130
exit $EXIT_STATUS
131
132