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