File Index
Files and directories
Sign in
FILE

rif_lag.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/drivers/net/mlxsw/rif_lag.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
 38cleanup()
 39{
 40	pre_cleanup
 41
 42	ip link set dev $swp2 nomaster
 43	ip link set dev $swp2 down
 44
 45	ip link set dev $swp1 nomaster
 46	ip link set dev $swp1 down
 47
 48	ip link del dev lag2
 49	ip link del dev lag1
 50}
 51
 52lag_rif_add()
 53{
 54	RET=0
 55
 56	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
 57	__addr_add_del lag1 add 192.0.2.2/28
 58	sleep 1
 59	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
 60	local expected_rifs=$((rifs_occ_t0 + 1))
 61
 62	((expected_rifs == rifs_occ_t1))
 63	check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
 64
 65	log_test "Add RIF for LAG on address addition"
 66}
 67
 68lag_rif_nomaster()
 69{
 70	RET=0
 71
 72	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
 73	ip link set dev $swp1 nomaster
 74	sleep 1
 75	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
 76	local expected_rifs=$((rifs_occ_t0 - 1))
 77
 78	((expected_rifs == rifs_occ_t1))
 79	check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
 80
 81	log_test "Drop RIF for LAG on port deslavement"
 82}
 83
 84lag_rif_remaster()
 85{
 86	RET=0
 87
 88	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
 89	ip link set dev $swp1 down
 90	ip link set dev $swp1 master lag1
 91	ip link set dev $swp1 up
 92	setup_wait_dev $swp1
 93	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
 94	local expected_rifs=$((rifs_occ_t0 + 1))
 95
 96	((expected_rifs == rifs_occ_t1))
 97	check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
 98
 99	log_test "Add RIF for LAG on port reenslavement"
100}
101
102lag_rif_nomaster_addr()
103{
104	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
105
106	# Adding an address while the port is LAG'd shouldn't generate a RIF.
107	__addr_add_del $swp1 add 192.0.2.65/28
108	sleep 1
109	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
110	local expected_rifs=$((rifs_occ_t0))
111
112	((expected_rifs == rifs_occ_t1))
113	check_err $? "After adding IP: Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
114
115	# Removing the port from LAG should drop RIF for the LAG (as tested in
116	# lag_rif_nomaster), but since the port now has an address, it should
117	# gain a RIF.
118	ip link set dev $swp1 nomaster
119	sleep 1
120	local rifs_occ_t2=$(devlink_resource_occ_get rifs)
121	local expected_rifs=$((rifs_occ_t0))
122
123	((expected_rifs == rifs_occ_t2))
124	check_err $? "After deslaving: Expected $expected_rifs RIFs, $rifs_occ_t2 are used"
125
126	__addr_add_del $swp1 del 192.0.2.65/28
127	log_test "Add RIF for port on deslavement from LAG"
128}
129
130trap cleanup EXIT
131
132setup_prepare
133setup_wait
134
135tests_run
136
137exit $EXIT_STATUS
~/ Read-only file preview.