Path: blob/master/tools/testing/selftests/drivers/net/mlxsw/rif_lag.sh
26292 views
#!/bin/bash1# SPDX-License-Identifier: GPL-2.023lib_dir=$(dirname $0)/../../../net/forwarding45ALL_TESTS="6lag_rif_add7lag_rif_nomaster8lag_rif_remaster9lag_rif_nomaster_addr10"1112REQUIRE_TEAMD="yes"13NUM_NETIFS=214source $lib_dir/lib.sh15source $lib_dir/devlink_lib.sh1617setup_prepare()18{19swp1=${NETIFS[p1]}20swp2=${NETIFS[p2]}2122team_create lag1 lacp23ip link set dev lag1 addrgenmode none24ip link set dev lag1 address $(mac_get $swp1)2526team_create lag2 lacp27ip link set dev lag2 addrgenmode none28ip link set dev lag2 address $(mac_get $swp2)2930ip link set dev $swp1 master lag131ip link set dev $swp1 up3233ip link set dev $swp2 master lag234ip link set dev $swp2 up35}3637cleanup()38{39pre_cleanup4041ip link set dev $swp2 nomaster42ip link set dev $swp2 down4344ip link set dev $swp1 nomaster45ip link set dev $swp1 down4647ip link del dev lag248ip link del dev lag149}5051lag_rif_add()52{53RET=05455local rifs_occ_t0=$(devlink_resource_occ_get rifs)56__addr_add_del lag1 add 192.0.2.2/2857sleep 158local rifs_occ_t1=$(devlink_resource_occ_get rifs)59local expected_rifs=$((rifs_occ_t0 + 1))6061((expected_rifs == rifs_occ_t1))62check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"6364log_test "Add RIF for LAG on address addition"65}6667lag_rif_nomaster()68{69RET=07071local rifs_occ_t0=$(devlink_resource_occ_get rifs)72ip link set dev $swp1 nomaster73sleep 174local rifs_occ_t1=$(devlink_resource_occ_get rifs)75local expected_rifs=$((rifs_occ_t0 - 1))7677((expected_rifs == rifs_occ_t1))78check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"7980log_test "Drop RIF for LAG on port deslavement"81}8283lag_rif_remaster()84{85RET=08687local rifs_occ_t0=$(devlink_resource_occ_get rifs)88ip link set dev $swp1 down89ip link set dev $swp1 master lag190ip link set dev $swp1 up91setup_wait_dev $swp192local rifs_occ_t1=$(devlink_resource_occ_get rifs)93local expected_rifs=$((rifs_occ_t0 + 1))9495((expected_rifs == rifs_occ_t1))96check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"9798log_test "Add RIF for LAG on port reenslavement"99}100101lag_rif_nomaster_addr()102{103local rifs_occ_t0=$(devlink_resource_occ_get rifs)104105# Adding an address while the port is LAG'd shouldn't generate a RIF.106__addr_add_del $swp1 add 192.0.2.65/28107sleep 1108local rifs_occ_t1=$(devlink_resource_occ_get rifs)109local expected_rifs=$((rifs_occ_t0))110111((expected_rifs == rifs_occ_t1))112check_err $? "After adding IP: Expected $expected_rifs RIFs, $rifs_occ_t1 are used"113114# Removing the port from LAG should drop RIF for the LAG (as tested in115# lag_rif_nomaster), but since the port now has an address, it should116# gain a RIF.117ip link set dev $swp1 nomaster118sleep 1119local rifs_occ_t2=$(devlink_resource_occ_get rifs)120local expected_rifs=$((rifs_occ_t0))121122((expected_rifs == rifs_occ_t2))123check_err $? "After deslaving: Expected $expected_rifs RIFs, $rifs_occ_t2 are used"124125__addr_add_del $swp1 del 192.0.2.65/28126log_test "Add RIF for port on deslavement from LAG"127}128129trap cleanup EXIT130131setup_prepare132setup_wait133134tests_run135136exit $EXIT_STATUS137138139