File Index
Files and directories
Sign in
FILE

router_scale.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/drivers/net/mlxsw/router_scale.sh BASH
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3
  4ROUTER_NUM_NETIFS=4
  5: ${TIMEOUT:=20000} # ms
  6
  7router_h1_create()
  8{
  9	simple_if_init $h1 192.0.1.1/24
 10}
 11
 12router_h1_destroy()
 13{
 14	simple_if_fini $h1 192.0.1.1/24
 15}
 16
 17router_h2_create()
 18{
 19	simple_if_init $h2 192.0.2.1/24
 20	tc qdisc add dev $h2 handle ffff: ingress
 21}
 22
 23router_h2_destroy()
 24{
 25	tc qdisc del dev $h2 handle ffff: ingress
 26	simple_if_fini $h2 192.0.2.1/24
 27}
 28
 29router_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
 38router_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
 47router_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
 66wait_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
 77router_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
104router_routes_destroy()
105{
106	if [[ -v ROUTE_FILE ]]; then
107		rm -f $ROUTE_FILE
108	fi
109}
110
111router_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
131router_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}
~/ Read-only file preview.