xref: /openbmc/linux/tools/testing/selftests/drivers/net/mlxsw/rif_lag.sh (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1*4308967dSPetr Machata#!/bin/bash
2*4308967dSPetr Machata# SPDX-License-Identifier: GPL-2.0
3*4308967dSPetr Machata
4*4308967dSPetr Machatalib_dir=$(dirname $0)/../../../net/forwarding
5*4308967dSPetr Machata
6*4308967dSPetr MachataALL_TESTS="
7*4308967dSPetr Machata	lag_rif_add
8*4308967dSPetr Machata	lag_rif_nomaster
9*4308967dSPetr Machata	lag_rif_remaster
10*4308967dSPetr Machata	lag_rif_nomaster_addr
11*4308967dSPetr Machata"
12*4308967dSPetr Machata
13*4308967dSPetr MachataNUM_NETIFS=2
14*4308967dSPetr Machatasource $lib_dir/lib.sh
15*4308967dSPetr Machatasource $lib_dir/devlink_lib.sh
16*4308967dSPetr Machata
17*4308967dSPetr Machatasetup_prepare()
18*4308967dSPetr Machata{
19*4308967dSPetr Machata	swp1=${NETIFS[p1]}
20*4308967dSPetr Machata	swp2=${NETIFS[p2]}
21*4308967dSPetr Machata
22*4308967dSPetr Machata	team_create lag1 lacp
23*4308967dSPetr Machata	ip link set dev lag1 addrgenmode none
24*4308967dSPetr Machata	ip link set dev lag1 address $(mac_get $swp1)
25*4308967dSPetr Machata
26*4308967dSPetr Machata	team_create lag2 lacp
27*4308967dSPetr Machata	ip link set dev lag2 addrgenmode none
28*4308967dSPetr Machata	ip link set dev lag2 address $(mac_get $swp2)
29*4308967dSPetr Machata
30*4308967dSPetr Machata	ip link set dev $swp1 master lag1
31*4308967dSPetr Machata	ip link set dev $swp1 up
32*4308967dSPetr Machata
33*4308967dSPetr Machata	ip link set dev $swp2 master lag2
34*4308967dSPetr Machata	ip link set dev $swp2 up
35*4308967dSPetr Machata}
36*4308967dSPetr Machata
37*4308967dSPetr Machatacleanup()
38*4308967dSPetr Machata{
39*4308967dSPetr Machata	pre_cleanup
40*4308967dSPetr Machata
41*4308967dSPetr Machata	ip link set dev $swp2 nomaster
42*4308967dSPetr Machata	ip link set dev $swp2 down
43*4308967dSPetr Machata
44*4308967dSPetr Machata	ip link set dev $swp1 nomaster
45*4308967dSPetr Machata	ip link set dev $swp1 down
46*4308967dSPetr Machata
47*4308967dSPetr Machata	ip link del dev lag2
48*4308967dSPetr Machata	ip link del dev lag1
49*4308967dSPetr Machata}
50*4308967dSPetr Machata
51*4308967dSPetr Machatalag_rif_add()
52*4308967dSPetr Machata{
53*4308967dSPetr Machata	RET=0
54*4308967dSPetr Machata
55*4308967dSPetr Machata	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
56*4308967dSPetr Machata	__addr_add_del lag1 add 192.0.2.2/28
57*4308967dSPetr Machata	sleep 1
58*4308967dSPetr Machata	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
59*4308967dSPetr Machata	local expected_rifs=$((rifs_occ_t0 + 1))
60*4308967dSPetr Machata
61*4308967dSPetr Machata	((expected_rifs == rifs_occ_t1))
62*4308967dSPetr Machata	check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
63*4308967dSPetr Machata
64*4308967dSPetr Machata	log_test "Add RIF for LAG on address addition"
65*4308967dSPetr Machata}
66*4308967dSPetr Machata
67*4308967dSPetr Machatalag_rif_nomaster()
68*4308967dSPetr Machata{
69*4308967dSPetr Machata	RET=0
70*4308967dSPetr Machata
71*4308967dSPetr Machata	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
72*4308967dSPetr Machata	ip link set dev $swp1 nomaster
73*4308967dSPetr Machata	sleep 1
74*4308967dSPetr Machata	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
75*4308967dSPetr Machata	local expected_rifs=$((rifs_occ_t0 - 1))
76*4308967dSPetr Machata
77*4308967dSPetr Machata	((expected_rifs == rifs_occ_t1))
78*4308967dSPetr Machata	check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
79*4308967dSPetr Machata
80*4308967dSPetr Machata	log_test "Drop RIF for LAG on port deslavement"
81*4308967dSPetr Machata}
82*4308967dSPetr Machata
83*4308967dSPetr Machatalag_rif_remaster()
84*4308967dSPetr Machata{
85*4308967dSPetr Machata	RET=0
86*4308967dSPetr Machata
87*4308967dSPetr Machata	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
88*4308967dSPetr Machata	ip link set dev $swp1 down
89*4308967dSPetr Machata	ip link set dev $swp1 master lag1
90*4308967dSPetr Machata	ip link set dev $swp1 up
91*4308967dSPetr Machata	setup_wait_dev $swp1
92*4308967dSPetr Machata	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
93*4308967dSPetr Machata	local expected_rifs=$((rifs_occ_t0 + 1))
94*4308967dSPetr Machata
95*4308967dSPetr Machata	((expected_rifs == rifs_occ_t1))
96*4308967dSPetr Machata	check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
97*4308967dSPetr Machata
98*4308967dSPetr Machata	log_test "Add RIF for LAG on port reenslavement"
99*4308967dSPetr Machata}
100*4308967dSPetr Machata
101*4308967dSPetr Machatalag_rif_nomaster_addr()
102*4308967dSPetr Machata{
103*4308967dSPetr Machata	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
104*4308967dSPetr Machata
105*4308967dSPetr Machata	# Adding an address while the port is LAG'd shouldn't generate a RIF.
106*4308967dSPetr Machata	__addr_add_del $swp1 add 192.0.2.65/28
107*4308967dSPetr Machata	sleep 1
108*4308967dSPetr Machata	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
109*4308967dSPetr Machata	local expected_rifs=$((rifs_occ_t0))
110*4308967dSPetr Machata
111*4308967dSPetr Machata	((expected_rifs == rifs_occ_t1))
112*4308967dSPetr Machata	check_err $? "After adding IP: Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
113*4308967dSPetr Machata
114*4308967dSPetr Machata	# Removing the port from LAG should drop RIF for the LAG (as tested in
115*4308967dSPetr Machata	# lag_rif_nomaster), but since the port now has an address, it should
116*4308967dSPetr Machata	# gain a RIF.
117*4308967dSPetr Machata	ip link set dev $swp1 nomaster
118*4308967dSPetr Machata	sleep 1
119*4308967dSPetr Machata	local rifs_occ_t2=$(devlink_resource_occ_get rifs)
120*4308967dSPetr Machata	local expected_rifs=$((rifs_occ_t0))
121*4308967dSPetr Machata
122*4308967dSPetr Machata	((expected_rifs == rifs_occ_t2))
123*4308967dSPetr Machata	check_err $? "After deslaving: Expected $expected_rifs RIFs, $rifs_occ_t2 are used"
124*4308967dSPetr Machata
125*4308967dSPetr Machata	__addr_add_del $swp1 del 192.0.2.65/28
126*4308967dSPetr Machata	log_test "Add RIF for port on deslavement from LAG"
127*4308967dSPetr Machata}
128*4308967dSPetr Machata
129*4308967dSPetr Machatatrap cleanup EXIT
130*4308967dSPetr Machata
131*4308967dSPetr Machatasetup_prepare
132*4308967dSPetr Machatasetup_wait
133*4308967dSPetr Machata
134*4308967dSPetr Machatatests_run
135*4308967dSPetr Machata
136*4308967dSPetr Machataexit $EXIT_STATUS
137