xref: /linux/tools/testing/selftests/drivers/net/mlxsw/rif_lag.sh (revision 1260ed77798502de9c98020040d2995008de10cc)
14308967dSPetr Machata#!/bin/bash
24308967dSPetr Machata# SPDX-License-Identifier: GPL-2.0
34308967dSPetr Machata
44308967dSPetr Machatalib_dir=$(dirname $0)/../../../net/forwarding
54308967dSPetr Machata
64308967dSPetr MachataALL_TESTS="
74308967dSPetr Machata	lag_rif_add
84308967dSPetr Machata	lag_rif_nomaster
94308967dSPetr Machata	lag_rif_remaster
104308967dSPetr Machata	lag_rif_nomaster_addr
114308967dSPetr Machata"
124308967dSPetr Machata
13*7a649f39SAlessandro ZanniREQUIRE_TEAMD="yes"
144308967dSPetr MachataNUM_NETIFS=2
154308967dSPetr Machatasource $lib_dir/lib.sh
164308967dSPetr Machatasource $lib_dir/devlink_lib.sh
174308967dSPetr Machata
184308967dSPetr Machatasetup_prepare()
194308967dSPetr Machata{
204308967dSPetr Machata	swp1=${NETIFS[p1]}
214308967dSPetr Machata	swp2=${NETIFS[p2]}
224308967dSPetr Machata
234308967dSPetr Machata	team_create lag1 lacp
244308967dSPetr Machata	ip link set dev lag1 addrgenmode none
254308967dSPetr Machata	ip link set dev lag1 address $(mac_get $swp1)
264308967dSPetr Machata
274308967dSPetr Machata	team_create lag2 lacp
284308967dSPetr Machata	ip link set dev lag2 addrgenmode none
294308967dSPetr Machata	ip link set dev lag2 address $(mac_get $swp2)
304308967dSPetr Machata
314308967dSPetr Machata	ip link set dev $swp1 master lag1
324308967dSPetr Machata	ip link set dev $swp1 up
334308967dSPetr Machata
344308967dSPetr Machata	ip link set dev $swp2 master lag2
354308967dSPetr Machata	ip link set dev $swp2 up
364308967dSPetr Machata}
374308967dSPetr Machata
384308967dSPetr Machatacleanup()
394308967dSPetr Machata{
404308967dSPetr Machata	pre_cleanup
414308967dSPetr Machata
424308967dSPetr Machata	ip link set dev $swp2 nomaster
434308967dSPetr Machata	ip link set dev $swp2 down
444308967dSPetr Machata
454308967dSPetr Machata	ip link set dev $swp1 nomaster
464308967dSPetr Machata	ip link set dev $swp1 down
474308967dSPetr Machata
484308967dSPetr Machata	ip link del dev lag2
494308967dSPetr Machata	ip link del dev lag1
504308967dSPetr Machata}
514308967dSPetr Machata
524308967dSPetr Machatalag_rif_add()
534308967dSPetr Machata{
544308967dSPetr Machata	RET=0
554308967dSPetr Machata
564308967dSPetr Machata	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
574308967dSPetr Machata	__addr_add_del lag1 add 192.0.2.2/28
584308967dSPetr Machata	sleep 1
594308967dSPetr Machata	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
604308967dSPetr Machata	local expected_rifs=$((rifs_occ_t0 + 1))
614308967dSPetr Machata
624308967dSPetr Machata	((expected_rifs == rifs_occ_t1))
634308967dSPetr Machata	check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
644308967dSPetr Machata
654308967dSPetr Machata	log_test "Add RIF for LAG on address addition"
664308967dSPetr Machata}
674308967dSPetr Machata
684308967dSPetr Machatalag_rif_nomaster()
694308967dSPetr Machata{
704308967dSPetr Machata	RET=0
714308967dSPetr Machata
724308967dSPetr Machata	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
734308967dSPetr Machata	ip link set dev $swp1 nomaster
744308967dSPetr Machata	sleep 1
754308967dSPetr Machata	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
764308967dSPetr Machata	local expected_rifs=$((rifs_occ_t0 - 1))
774308967dSPetr Machata
784308967dSPetr Machata	((expected_rifs == rifs_occ_t1))
794308967dSPetr Machata	check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
804308967dSPetr Machata
814308967dSPetr Machata	log_test "Drop RIF for LAG on port deslavement"
824308967dSPetr Machata}
834308967dSPetr Machata
844308967dSPetr Machatalag_rif_remaster()
854308967dSPetr Machata{
864308967dSPetr Machata	RET=0
874308967dSPetr Machata
884308967dSPetr Machata	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
894308967dSPetr Machata	ip link set dev $swp1 down
904308967dSPetr Machata	ip link set dev $swp1 master lag1
914308967dSPetr Machata	ip link set dev $swp1 up
924308967dSPetr Machata	setup_wait_dev $swp1
934308967dSPetr Machata	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
944308967dSPetr Machata	local expected_rifs=$((rifs_occ_t0 + 1))
954308967dSPetr Machata
964308967dSPetr Machata	((expected_rifs == rifs_occ_t1))
974308967dSPetr Machata	check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
984308967dSPetr Machata
994308967dSPetr Machata	log_test "Add RIF for LAG on port reenslavement"
1004308967dSPetr Machata}
1014308967dSPetr Machata
1024308967dSPetr Machatalag_rif_nomaster_addr()
1034308967dSPetr Machata{
1044308967dSPetr Machata	local rifs_occ_t0=$(devlink_resource_occ_get rifs)
1054308967dSPetr Machata
1064308967dSPetr Machata	# Adding an address while the port is LAG'd shouldn't generate a RIF.
1074308967dSPetr Machata	__addr_add_del $swp1 add 192.0.2.65/28
1084308967dSPetr Machata	sleep 1
1094308967dSPetr Machata	local rifs_occ_t1=$(devlink_resource_occ_get rifs)
1104308967dSPetr Machata	local expected_rifs=$((rifs_occ_t0))
1114308967dSPetr Machata
1124308967dSPetr Machata	((expected_rifs == rifs_occ_t1))
1134308967dSPetr Machata	check_err $? "After adding IP: Expected $expected_rifs RIFs, $rifs_occ_t1 are used"
1144308967dSPetr Machata
1154308967dSPetr Machata	# Removing the port from LAG should drop RIF for the LAG (as tested in
1164308967dSPetr Machata	# lag_rif_nomaster), but since the port now has an address, it should
1174308967dSPetr Machata	# gain a RIF.
1184308967dSPetr Machata	ip link set dev $swp1 nomaster
1194308967dSPetr Machata	sleep 1
1204308967dSPetr Machata	local rifs_occ_t2=$(devlink_resource_occ_get rifs)
1214308967dSPetr Machata	local expected_rifs=$((rifs_occ_t0))
1224308967dSPetr Machata
1234308967dSPetr Machata	((expected_rifs == rifs_occ_t2))
1244308967dSPetr Machata	check_err $? "After deslaving: Expected $expected_rifs RIFs, $rifs_occ_t2 are used"
1254308967dSPetr Machata
1264308967dSPetr Machata	__addr_add_del $swp1 del 192.0.2.65/28
1274308967dSPetr Machata	log_test "Add RIF for port on deslavement from LAG"
1284308967dSPetr Machata}
1294308967dSPetr Machata
1304308967dSPetr Machatatrap cleanup EXIT
1314308967dSPetr Machata
1324308967dSPetr Machatasetup_prepare
1334308967dSPetr Machatasetup_wait
1344308967dSPetr Machata
1354308967dSPetr Machatatests_run
1364308967dSPetr Machata
1374308967dSPetr Machataexit $EXIT_STATUS
138