File Index
Files and directories
Sign in
FILE

rif_lag_vlan.sh

File preview with syntax highlighting.

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