xref: /openbmc/linux/tools/testing/selftests/drivers/net/mlxsw/extack.sh (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
11ba1daedSPetr Machata#!/bin/bash
21ba1daedSPetr Machata# SPDX-License-Identifier: GPL-2.0
31ba1daedSPetr Machata#
41ba1daedSPetr Machata# Test operations that we expect to report extended ack.
51ba1daedSPetr Machata
61ba1daedSPetr Machatalib_dir=$(dirname $0)/../../../net/forwarding
71ba1daedSPetr Machata
81ba1daedSPetr MachataALL_TESTS="
91ba1daedSPetr Machata	netdev_pre_up_test
10b498dc7dSPetr Machata	vxlan_vlan_add_test
11bdc58beaSIdo Schimmel	vxlan_bridge_create_test
126c4e61ffSIdo Schimmel	bridge_create_test
131ba1daedSPetr Machata"
141ba1daedSPetr MachataNUM_NETIFS=2
151ba1daedSPetr Machatasource $lib_dir/lib.sh
161ba1daedSPetr Machata
171ba1daedSPetr Machatasetup_prepare()
181ba1daedSPetr Machata{
191ba1daedSPetr Machata	swp1=${NETIFS[p1]}
201ba1daedSPetr Machata	swp2=${NETIFS[p2]}
211ba1daedSPetr Machata
221ba1daedSPetr Machata	ip link set dev $swp1 up
231ba1daedSPetr Machata	ip link set dev $swp2 up
241ba1daedSPetr Machata}
251ba1daedSPetr Machata
261ba1daedSPetr Machatacleanup()
271ba1daedSPetr Machata{
281ba1daedSPetr Machata	pre_cleanup
291ba1daedSPetr Machata
301ba1daedSPetr Machata	ip link set dev $swp2 down
311ba1daedSPetr Machata	ip link set dev $swp1 down
321ba1daedSPetr Machata}
331ba1daedSPetr Machata
341ba1daedSPetr Machatanetdev_pre_up_test()
351ba1daedSPetr Machata{
361ba1daedSPetr Machata	RET=0
371ba1daedSPetr Machata
38*a758dc46SPetr Machata	ip link add name br1 type bridge vlan_filtering 0 mcast_snooping 0
39*a758dc46SPetr Machata	ip link set dev br1 addrgenmode none
40*a758dc46SPetr Machata	ip link set dev br1 up
411ba1daedSPetr Machata	ip link add name vx1 up type vxlan id 1000 \
421ba1daedSPetr Machata		local 192.0.2.17 remote 192.0.2.18 \
431ba1daedSPetr Machata		dstport 4789 nolearning noudpcsum tos inherit ttl 100
441ba1daedSPetr Machata
451ba1daedSPetr Machata	ip link set dev vx1 master br1
461ba1daedSPetr Machata	check_err $?
471ba1daedSPetr Machata
481ba1daedSPetr Machata	ip link set dev $swp1 master br1
491ba1daedSPetr Machata	check_err $?
501ba1daedSPetr Machata
51*a758dc46SPetr Machata	ip link add name br2 type bridge vlan_filtering 0 mcast_snooping 0
52*a758dc46SPetr Machata	ip link set dev br2 addrgenmode none
53*a758dc46SPetr Machata	ip link set dev br2 up
541ba1daedSPetr Machata	ip link add name vx2 up type vxlan id 2000 \
551ba1daedSPetr Machata		local 192.0.2.17 remote 192.0.2.18 \
561ba1daedSPetr Machata		dstport 4789 nolearning noudpcsum tos inherit ttl 100
571ba1daedSPetr Machata
581ba1daedSPetr Machata	ip link set dev vx2 master br2
591ba1daedSPetr Machata	check_err $?
601ba1daedSPetr Machata
611ba1daedSPetr Machata	ip link set dev $swp2 master br2
621ba1daedSPetr Machata	check_err $?
631ba1daedSPetr Machata
641ba1daedSPetr Machata	# Unsupported configuration: mlxsw demands that all offloaded VXLAN
651ba1daedSPetr Machata	# devices have the same TTL.
661ba1daedSPetr Machata	ip link set dev vx2 down
671ba1daedSPetr Machata	ip link set dev vx2 type vxlan ttl 200
681ba1daedSPetr Machata
691ba1daedSPetr Machata	ip link set dev vx2 up &>/dev/null
701ba1daedSPetr Machata	check_fail $?
711ba1daedSPetr Machata
721ba1daedSPetr Machata	ip link set dev vx2 up 2>&1 >/dev/null | grep -q mlxsw_spectrum
731ba1daedSPetr Machata	check_err $?
741ba1daedSPetr Machata
751ba1daedSPetr Machata	log_test "extack - NETDEV_PRE_UP"
761ba1daedSPetr Machata
771ba1daedSPetr Machata	ip link del dev vx2
781ba1daedSPetr Machata	ip link del dev br2
791ba1daedSPetr Machata
801ba1daedSPetr Machata	ip link del dev vx1
811ba1daedSPetr Machata	ip link del dev br1
821ba1daedSPetr Machata}
831ba1daedSPetr Machata
84b498dc7dSPetr Machatavxlan_vlan_add_test()
85b498dc7dSPetr Machata{
86b498dc7dSPetr Machata	RET=0
87b498dc7dSPetr Machata
88*a758dc46SPetr Machata	ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0
89*a758dc46SPetr Machata	ip link set dev br1 addrgenmode none
90*a758dc46SPetr Machata	ip link set dev br1 up
91b498dc7dSPetr Machata
92b498dc7dSPetr Machata	# Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
93b498dc7dSPetr Machata	ip link add name vx1 up type vxlan id 1000 \
94b498dc7dSPetr Machata		local 192.0.2.17 remote 192.0.2.18 \
95b498dc7dSPetr Machata		dstport 4789 tos inherit ttl 100
96b498dc7dSPetr Machata
97b498dc7dSPetr Machata	ip link set dev vx1 master br1
98b498dc7dSPetr Machata	check_err $?
99b498dc7dSPetr Machata
100b498dc7dSPetr Machata	bridge vlan add dev vx1 vid 1
101b498dc7dSPetr Machata	check_err $?
102b498dc7dSPetr Machata
103b498dc7dSPetr Machata	ip link set dev $swp1 master br1
104b498dc7dSPetr Machata	check_err $?
105b498dc7dSPetr Machata
106b498dc7dSPetr Machata	bridge vlan add dev vx1 vid 1 pvid untagged 2>&1 >/dev/null \
107b498dc7dSPetr Machata		| grep -q mlxsw_spectrum
108b498dc7dSPetr Machata	check_err $?
109b498dc7dSPetr Machata
110b498dc7dSPetr Machata	log_test "extack - map VLAN at VXLAN device"
111b498dc7dSPetr Machata
112b498dc7dSPetr Machata	ip link del dev vx1
113b498dc7dSPetr Machata	ip link del dev br1
114b498dc7dSPetr Machata}
115b498dc7dSPetr Machata
116bdc58beaSIdo Schimmelvxlan_bridge_create_test()
117bdc58beaSIdo Schimmel{
118bdc58beaSIdo Schimmel	RET=0
119bdc58beaSIdo Schimmel
120bdc58beaSIdo Schimmel	# Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
121bdc58beaSIdo Schimmel	ip link add name vx1 up type vxlan id 1000 \
122bdc58beaSIdo Schimmel		local 192.0.2.17 remote 192.0.2.18 \
123bdc58beaSIdo Schimmel		dstport 4789 tos inherit ttl 100
124bdc58beaSIdo Schimmel
125bdc58beaSIdo Schimmel	# Test with VLAN-aware bridge.
126*a758dc46SPetr Machata	ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0
127*a758dc46SPetr Machata	ip link set dev br1 addrgenmode none
128*a758dc46SPetr Machata	ip link set dev br1 up
129bdc58beaSIdo Schimmel
130bdc58beaSIdo Schimmel	ip link set dev vx1 master br1
131bdc58beaSIdo Schimmel
132bdc58beaSIdo Schimmel	ip link set dev $swp1 master br1 2>&1 > /dev/null \
133bdc58beaSIdo Schimmel		| grep -q mlxsw_spectrum
134bdc58beaSIdo Schimmel	check_err $?
135bdc58beaSIdo Schimmel
136bdc58beaSIdo Schimmel	# Test with VLAN-unaware bridge.
137bdc58beaSIdo Schimmel	ip link set dev br1 type bridge vlan_filtering 0
138bdc58beaSIdo Schimmel
139bdc58beaSIdo Schimmel	ip link set dev $swp1 master br1 2>&1 > /dev/null \
140bdc58beaSIdo Schimmel		| grep -q mlxsw_spectrum
141bdc58beaSIdo Schimmel	check_err $?
142bdc58beaSIdo Schimmel
143bdc58beaSIdo Schimmel	log_test "extack - bridge creation with VXLAN"
144bdc58beaSIdo Schimmel
145bdc58beaSIdo Schimmel	ip link del dev br1
146bdc58beaSIdo Schimmel	ip link del dev vx1
147bdc58beaSIdo Schimmel}
148bdc58beaSIdo Schimmel
1496c4e61ffSIdo Schimmelbridge_create_test()
1506c4e61ffSIdo Schimmel{
1516c4e61ffSIdo Schimmel	RET=0
1526c4e61ffSIdo Schimmel
153*a758dc46SPetr Machata	ip link add name br1 type bridge vlan_filtering 1
154*a758dc46SPetr Machata	ip link set dev br1 addrgenmode none
155*a758dc46SPetr Machata	ip link set dev br1 up
156*a758dc46SPetr Machata	ip link add name br2 type bridge vlan_filtering 1
157*a758dc46SPetr Machata	ip link set dev br2 addrgenmode none
158*a758dc46SPetr Machata	ip link set dev br2 up
1596c4e61ffSIdo Schimmel
1606c4e61ffSIdo Schimmel	ip link set dev $swp1 master br1
1616c4e61ffSIdo Schimmel	check_err $?
1626c4e61ffSIdo Schimmel
1636c4e61ffSIdo Schimmel	# Only one VLAN-aware bridge is supported, so this should fail with
1646c4e61ffSIdo Schimmel	# an extack.
1656c4e61ffSIdo Schimmel	ip link set dev $swp2 master br2 2>&1 > /dev/null \
1666c4e61ffSIdo Schimmel		| grep -q mlxsw_spectrum
1676c4e61ffSIdo Schimmel	check_err $?
1686c4e61ffSIdo Schimmel
1696c4e61ffSIdo Schimmel	log_test "extack - multiple VLAN-aware bridges creation"
1706c4e61ffSIdo Schimmel
1716c4e61ffSIdo Schimmel	ip link del dev br2
1726c4e61ffSIdo Schimmel	ip link del dev br1
1736c4e61ffSIdo Schimmel}
1746c4e61ffSIdo Schimmel
1751ba1daedSPetr Machatatrap cleanup EXIT
1761ba1daedSPetr Machata
1771ba1daedSPetr Machatasetup_prepare
1781ba1daedSPetr Machatasetup_wait
1791ba1daedSPetr Machata
1801ba1daedSPetr Machatatests_run
1811ba1daedSPetr Machata
1821ba1daedSPetr Machataexit $EXIT_STATUS
183