Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/testing/selftests/drivers/net/mlxsw/router_scale.sh
26292 views
1
#!/bin/bash
2
# SPDX-License-Identifier: GPL-2.0
3
4
ROUTER_NUM_NETIFS=4
5
: ${TIMEOUT:=20000} # ms
6
7
router_h1_create()
8
{
9
simple_if_init $h1 192.0.1.1/24
10
}
11
12
router_h1_destroy()
13
{
14
simple_if_fini $h1 192.0.1.1/24
15
}
16
17
router_h2_create()
18
{
19
simple_if_init $h2 192.0.2.1/24
20
tc qdisc add dev $h2 handle ffff: ingress
21
}
22
23
router_h2_destroy()
24
{
25
tc qdisc del dev $h2 handle ffff: ingress
26
simple_if_fini $h2 192.0.2.1/24
27
}
28
29
router_create()
30
{
31
ip link set dev $rp1 up
32
ip link set dev $rp2 up
33
34
ip address add 192.0.1.2/24 dev $rp1
35
ip address add 192.0.2.2/24 dev $rp2
36
}
37
38
router_destroy()
39
{
40
ip address del 192.0.2.2/24 dev $rp2
41
ip address del 192.0.1.2/24 dev $rp1
42
43
ip link set dev $rp2 down
44
ip link set dev $rp1 down
45
}
46
47
router_setup_prepare()
48
{
49
h1=${NETIFS[p1]}
50
rp1=${NETIFS[p2]}
51
52
rp2=${NETIFS[p3]}
53
h2=${NETIFS[p4]}
54
55
h1mac=$(mac_get $h1)
56
rp1mac=$(mac_get $rp1)
57
58
vrf_prepare
59
60
router_h1_create
61
router_h2_create
62
63
router_create
64
}
65
66
wait_for_routes()
67
{
68
local t0=$1; shift
69
local route_count=$1; shift
70
71
local t1=$(ip route | grep 'offload' | grep -v 'offload_failed' | wc -l)
72
local delta=$((t1 - t0))
73
echo $delta
74
[[ $delta -ge $route_count ]]
75
}
76
77
router_routes_create()
78
{
79
local route_count=$1
80
local count=0
81
82
ROUTE_FILE="$(mktemp)"
83
84
for i in {0..255}
85
do
86
for j in {0..255}
87
do
88
for k in {0..255}
89
do
90
if [[ $count -eq $route_count ]]; then
91
break 3
92
fi
93
94
echo route add 193.${i}.${j}.${k}/32 dev $rp2 \
95
>> $ROUTE_FILE
96
((count++))
97
done
98
done
99
done
100
101
ip -b $ROUTE_FILE &> /dev/null
102
}
103
104
router_routes_destroy()
105
{
106
if [[ -v ROUTE_FILE ]]; then
107
rm -f $ROUTE_FILE
108
fi
109
}
110
111
router_test()
112
{
113
local route_count=$1
114
local should_fail=$2
115
local delta
116
117
RET=0
118
119
local t0=$(ip route | grep -o 'offload' | wc -l)
120
router_routes_create $route_count
121
delta=$(busywait "$TIMEOUT" wait_for_routes $t0 $route_count)
122
123
check_err_fail $should_fail $? "Offload routes: Expected $route_count, got $delta."
124
if [[ $RET -ne 0 ]] || [[ $should_fail -eq 1 ]]; then
125
return
126
fi
127
128
router_routes_destroy
129
}
130
131
router_cleanup()
132
{
133
pre_cleanup
134
135
router_routes_destroy
136
router_destroy
137
138
router_h2_destroy
139
router_h1_destroy
140
141
vrf_cleanup
142
}
143
144