Skip to content

Commit 979154e

Browse files
pmachataPaolo Abeni
authored andcommitted
selftests: mlxsw: qos_mc_aware: Use defer for test cleanup
Use the defer framework to schedule cleanups as soon as the command is executed. Signed-off-by: Petr Machata <[email protected]> Signed-off-by: Paolo Abeni <[email protected]>
1 parent cc3e7ee commit 979154e

File tree

1 file changed

+64
-74
lines changed

1 file changed

+64
-74
lines changed

tools/testing/selftests/drivers/net/mlxsw/qos_mc_aware.sh

Lines changed: 64 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -73,122 +73,114 @@ source qos_lib.sh
7373
h1_create()
7474
{
7575
simple_if_init $h1 192.0.2.65/28
76-
mtu_set $h1 10000
77-
}
76+
defer simple_if_fini $h1 192.0.2.65/28
7877

79-
h1_destroy()
80-
{
81-
mtu_restore $h1
82-
simple_if_fini $h1 192.0.2.65/28
78+
mtu_set $h1 10000
79+
defer mtu_restore $h1
8380
}
8481

8582
h2_create()
8683
{
8784
simple_if_init $h2
85+
defer simple_if_fini $h2
86+
8887
mtu_set $h2 10000
88+
defer mtu_restore $h2
8989

9090
vlan_create $h2 111 v$h2 192.0.2.129/28
91+
defer vlan_destroy $h2 111
9192
ip link set dev $h2.111 type vlan egress-qos-map 0:1
9293
}
9394

94-
h2_destroy()
95-
{
96-
vlan_destroy $h2 111
97-
98-
mtu_restore $h2
99-
simple_if_fini $h2
100-
}
101-
10295
h3_create()
10396
{
10497
simple_if_init $h3 192.0.2.66/28
98+
defer simple_if_fini $h3 192.0.2.66/28
99+
105100
mtu_set $h3 10000
101+
defer mtu_restore $h3
106102

107103
vlan_create $h3 111 v$h3 192.0.2.130/28
108-
}
109-
110-
h3_destroy()
111-
{
112-
vlan_destroy $h3 111
113-
114-
mtu_restore $h3
115-
simple_if_fini $h3 192.0.2.66/28
104+
defer vlan_destroy $h3 111
116105
}
117106

118107
switch_create()
119108
{
120109
ip link set dev $swp1 up
110+
defer ip link set dev $swp1 down
111+
121112
mtu_set $swp1 10000
113+
defer mtu_restore $swp1
122114

123115
ip link set dev $swp2 up
116+
defer ip link set dev $swp2 down
117+
124118
mtu_set $swp2 10000
119+
defer mtu_restore $swp2
125120

126121
ip link set dev $swp3 up
122+
defer ip link set dev $swp3 down
123+
127124
mtu_set $swp3 10000
125+
defer mtu_restore $swp3
128126

129127
vlan_create $swp2 111
128+
defer vlan_destroy $swp2 111
129+
130130
vlan_create $swp3 111
131+
defer vlan_destroy $swp3 111
131132

132133
tc qdisc replace dev $swp3 root handle 3: tbf rate 1gbit \
133134
burst 128K limit 1G
135+
defer tc qdisc del dev $swp3 root handle 3:
136+
134137
tc qdisc replace dev $swp3 parent 3:3 handle 33: \
135138
prio bands 8 priomap 7 7 7 7 7 7 7 7
139+
defer tc qdisc del dev $swp3 parent 3:3 handle 33:
136140

137141
ip link add name br1 type bridge vlan_filtering 0
142+
defer ip link del dev br1
138143
ip link set dev br1 addrgenmode none
139144
ip link set dev br1 up
145+
140146
ip link set dev $swp1 master br1
147+
defer ip link set dev $swp1 nomaster
148+
141149
ip link set dev $swp3 master br1
150+
defer ip link set dev $swp3 nomaster
142151

143152
ip link add name br111 type bridge vlan_filtering 0
153+
defer ip link del dev br111
144154
ip link set dev br111 addrgenmode none
145155
ip link set dev br111 up
156+
146157
ip link set dev $swp2.111 master br111
158+
defer ip link set dev $swp2.111 nomaster
159+
147160
ip link set dev $swp3.111 master br111
161+
defer ip link set dev $swp3.111 nomaster
148162

149163
# Make sure that ingress quotas are smaller than egress so that there is
150164
# room for both streams of traffic to be admitted to shared buffer.
151165
devlink_port_pool_th_save $swp1 0
152166
devlink_port_pool_th_set $swp1 0 5
167+
defer devlink_port_pool_th_restore $swp1 0
168+
153169
devlink_tc_bind_pool_th_save $swp1 0 ingress
154170
devlink_tc_bind_pool_th_set $swp1 0 ingress 0 5
171+
defer devlink_tc_bind_pool_th_restore $swp1 0 ingress
155172

156173
devlink_port_pool_th_save $swp2 0
157174
devlink_port_pool_th_set $swp2 0 5
175+
defer devlink_port_pool_th_restore $swp2 0
176+
158177
devlink_tc_bind_pool_th_save $swp2 1 ingress
159178
devlink_tc_bind_pool_th_set $swp2 1 ingress 0 5
179+
defer devlink_tc_bind_pool_th_restore $swp2 1 ingress
160180

161181
devlink_port_pool_th_save $swp3 4
162182
devlink_port_pool_th_set $swp3 4 12
163-
}
164-
165-
switch_destroy()
166-
{
167-
devlink_port_pool_th_restore $swp3 4
168-
169-
devlink_tc_bind_pool_th_restore $swp2 1 ingress
170-
devlink_port_pool_th_restore $swp2 0
171-
172-
devlink_tc_bind_pool_th_restore $swp1 0 ingress
173-
devlink_port_pool_th_restore $swp1 0
174-
175-
ip link del dev br111
176-
ip link del dev br1
177-
178-
tc qdisc del dev $swp3 parent 3:3 handle 33:
179-
tc qdisc del dev $swp3 root handle 3:
180-
181-
vlan_destroy $swp3 111
182-
vlan_destroy $swp2 111
183-
184-
mtu_restore $swp3
185-
ip link set dev $swp3 down
186-
187-
mtu_restore $swp2
188-
ip link set dev $swp2 down
189-
190-
mtu_restore $swp1
191-
ip link set dev $swp1 down
183+
defer devlink_port_pool_th_restore $swp3 4
192184
}
193185

194186
setup_prepare()
@@ -205,52 +197,53 @@ setup_prepare()
205197
h3mac=$(mac_get $h3)
206198

207199
vrf_prepare
200+
defer vrf_cleanup
208201

209202
h1_create
210203
h2_create
211204
h3_create
212205
switch_create
213206
}
214207

215-
cleanup()
208+
ping_ipv4()
216209
{
217-
pre_cleanup
210+
ping_test $h2 192.0.2.130
211+
}
218212

219-
switch_destroy
220-
h3_destroy
221-
h2_destroy
222-
h1_destroy
213+
__run_uc_measure_rate()
214+
{
215+
local what=$1; shift
216+
local -a uc_rate
217+
218+
start_traffic $h2.111 192.0.2.129 192.0.2.130 $h3mac
219+
defer stop_traffic $!
220+
221+
uc_rate=($(measure_rate $swp2 $h3 rx_octets_prio_1 "$what"))
222+
check_err $? "Could not get high enough $what ingress rate"
223223

224-
vrf_cleanup
224+
echo ${uc_rate[@]}
225225
}
226226

227-
ping_ipv4()
227+
run_uc_measure_rate()
228228
{
229-
ping_test $h2 192.0.2.130
229+
in_defer_scope __run_uc_measure_rate "$@"
230230
}
231231

232232
test_mc_aware()
233233
{
234234
RET=0
235235

236-
local -a uc_rate
237-
start_traffic $h2.111 192.0.2.129 192.0.2.130 $h3mac
238-
uc_rate=($(measure_rate $swp2 $h3 rx_octets_prio_1 "UC-only"))
239-
check_err $? "Could not get high enough UC-only ingress rate"
240-
stop_traffic
236+
local -a uc_rate=($(run_uc_measure_rate "UC-only"))
241237
local ucth1=${uc_rate[1]}
242238

243239
start_traffic $h1 192.0.2.65 bc bc
240+
defer stop_traffic $!
244241

245242
local d0=$(date +%s)
246243
local t0=$(ethtool_stats_get $h3 rx_octets_prio_0)
247244
local u0=$(ethtool_stats_get $swp1 rx_octets_prio_0)
248245

249-
local -a uc_rate_2
250-
start_traffic $h2.111 192.0.2.129 192.0.2.130 $h3mac
251-
uc_rate_2=($(measure_rate $swp2 $h3 rx_octets_prio_1 "UC+MC"))
252-
check_err $? "Could not get high enough UC+MC ingress rate"
253-
stop_traffic
246+
local -a uc_rate_2=($(run_uc_measure_rate "UC+MC"))
254247
local ucth2=${uc_rate_2[1]}
255248

256249
local d1=$(date +%s)
@@ -272,8 +265,6 @@ test_mc_aware()
272265
local mc_ir=$(rate $u0 $u1 $interval)
273266
local mc_er=$(rate $t0 $t1 $interval)
274267

275-
stop_traffic
276-
277268
log_test "UC performance under MC overload"
278269

279270
echo "UC-only throughput $(humanize $ucth1)"
@@ -297,6 +288,7 @@ test_uc_aware()
297288
RET=0
298289

299290
start_traffic $h2.111 192.0.2.129 192.0.2.130 $h3mac
291+
defer stop_traffic $!
300292

301293
local d0=$(date +%s)
302294
local t0=$(ethtool_stats_get $h3 rx_octets_prio_1)
@@ -326,8 +318,6 @@ test_uc_aware()
326318
((attempts == passes))
327319
check_err $?
328320

329-
stop_traffic
330-
331321
log_test "MC performance under UC overload"
332322
echo " ingress UC throughput $(humanize ${uc_ir})"
333323
echo " egress UC throughput $(humanize ${uc_er})"

0 commit comments

Comments
 (0)