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