Path: blob/master/tools/testing/selftests/drivers/net/mlxsw/rif_bridge.sh
26292 views
#!/bin/bash1# SPDX-License-Identifier: GPL-2.023lib_dir=$(dirname $0)/../../../net/forwarding45ALL_TESTS="6bridge_rif_add7bridge_rif_nomaster8bridge_rif_remaster9bridge_rif_nomaster_addr10bridge_rif_nomaster_port11bridge_rif_remaster_port12"1314REQUIRE_TEAMD="yes"15NUM_NETIFS=216source $lib_dir/lib.sh17source $lib_dir/devlink_lib.sh1819setup_prepare()20{21swp1=${NETIFS[p1]}22swp2=${NETIFS[p2]}2324team_create lag1 lacp25ip link set dev lag1 addrgenmode none26ip link set dev lag1 address $(mac_get $swp1)2728team_create lag2 lacp29ip link set dev lag2 addrgenmode none30ip link set dev lag2 address $(mac_get $swp2)3132ip link add name br1 type bridge vlan_filtering 133ip link set dev br1 addrgenmode none34ip link set dev br1 address $(mac_get lag1)35ip link set dev br1 up3637ip link set dev lag1 master br13839ip link set dev $swp1 master lag140ip link set dev $swp1 up4142ip link set dev $swp2 master lag243ip link set dev $swp2 up44}4546cleanup()47{48pre_cleanup4950ip link set dev $swp2 nomaster51ip link set dev $swp2 down5253ip link set dev $swp1 nomaster54ip link set dev $swp1 down5556ip link del dev lag257ip link set dev lag1 nomaster58ip link del dev lag15960ip link del dev br161}6263bridge_rif_add()64{65RET=06667local rifs_occ_t0=$(devlink_resource_occ_get rifs)68__addr_add_del br1 add 192.0.2.2/2869sleep 170local rifs_occ_t1=$(devlink_resource_occ_get rifs)71local expected_rifs=$((rifs_occ_t0 + 1))7273((expected_rifs == rifs_occ_t1))74check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"7576log_test "Add RIF for bridge on address addition"77}7879bridge_rif_nomaster()80{81RET=08283local rifs_occ_t0=$(devlink_resource_occ_get rifs)84ip link set dev lag1 nomaster85sleep 186local rifs_occ_t1=$(devlink_resource_occ_get rifs)87local expected_rifs=$((rifs_occ_t0 - 1))8889((expected_rifs == rifs_occ_t1))90check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"9192log_test "Drop RIF for bridge on LAG deslavement"93}9495bridge_rif_remaster()96{97RET=09899local rifs_occ_t0=$(devlink_resource_occ_get rifs)100ip link set dev lag1 master br1101sleep 1102local rifs_occ_t1=$(devlink_resource_occ_get rifs)103local expected_rifs=$((rifs_occ_t0 + 1))104105((expected_rifs == rifs_occ_t1))106check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"107108log_test "Add RIF for bridge on LAG reenslavement"109}110111bridge_rif_nomaster_addr()112{113local rifs_occ_t0=$(devlink_resource_occ_get rifs)114115# Adding an address while the LAG is enslaved shouldn't generate a RIF.116__addr_add_del lag1 add 192.0.2.65/28117sleep 1118local rifs_occ_t1=$(devlink_resource_occ_get rifs)119local expected_rifs=$((rifs_occ_t0))120121((expected_rifs == rifs_occ_t1))122check_err $? "After adding IP: Expected $expected_rifs RIFs, $rifs_occ_t1 are used"123124# Removing the LAG from the bridge should drop RIF for the bridge (as125# tested in bridge_rif_lag_nomaster), but since the LAG now has an126# address, it should gain a RIF.127ip link set dev lag1 nomaster128sleep 1129local rifs_occ_t2=$(devlink_resource_occ_get rifs)130local expected_rifs=$((rifs_occ_t0))131132((expected_rifs == rifs_occ_t2))133check_err $? "After deslaving: Expected $expected_rifs RIFs, $rifs_occ_t2 are used"134135log_test "Add RIF for LAG on deslavement from bridge"136137__addr_add_del lag1 del 192.0.2.65/28138ip link set dev lag1 master br1139sleep 1140}141142bridge_rif_nomaster_port()143{144RET=0145146local rifs_occ_t0=$(devlink_resource_occ_get rifs)147ip link set dev $swp1 nomaster148sleep 1149local rifs_occ_t1=$(devlink_resource_occ_get rifs)150local expected_rifs=$((rifs_occ_t0 - 1))151152((expected_rifs == rifs_occ_t1))153check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"154155log_test "Drop RIF for bridge on deslavement of port from LAG"156}157158bridge_rif_remaster_port()159{160RET=0161162local rifs_occ_t0=$(devlink_resource_occ_get rifs)163ip link set dev $swp1 down164ip link set dev $swp1 master lag1165ip link set dev $swp1 up166setup_wait_dev $swp1167local rifs_occ_t1=$(devlink_resource_occ_get rifs)168local expected_rifs=$((rifs_occ_t0 + 1))169170((expected_rifs == rifs_occ_t1))171check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"172173log_test "Add RIF for bridge on reenslavement of port to LAG"174}175176trap cleanup EXIT177178setup_prepare179setup_wait180181tests_run182183exit $EXIT_STATUS184185186