xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/drivers/net/mlxsw/extack.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# Test operations that we expect to report extended ack.
5*4882a593Smuzhiyun
6*4882a593Smuzhiyunlib_dir=$(dirname $0)/../../../net/forwarding
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunALL_TESTS="
9*4882a593Smuzhiyun	netdev_pre_up_test
10*4882a593Smuzhiyun	vxlan_vlan_add_test
11*4882a593Smuzhiyun	vxlan_bridge_create_test
12*4882a593Smuzhiyun	bridge_create_test
13*4882a593Smuzhiyun"
14*4882a593SmuzhiyunNUM_NETIFS=2
15*4882a593Smuzhiyunsource $lib_dir/lib.sh
16*4882a593Smuzhiyun
17*4882a593Smuzhiyunsetup_prepare()
18*4882a593Smuzhiyun{
19*4882a593Smuzhiyun	swp1=${NETIFS[p1]}
20*4882a593Smuzhiyun	swp2=${NETIFS[p2]}
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun	ip link set dev $swp1 up
23*4882a593Smuzhiyun	ip link set dev $swp2 up
24*4882a593Smuzhiyun}
25*4882a593Smuzhiyun
26*4882a593Smuzhiyuncleanup()
27*4882a593Smuzhiyun{
28*4882a593Smuzhiyun	pre_cleanup
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun	ip link set dev $swp2 down
31*4882a593Smuzhiyun	ip link set dev $swp1 down
32*4882a593Smuzhiyun}
33*4882a593Smuzhiyun
34*4882a593Smuzhiyunnetdev_pre_up_test()
35*4882a593Smuzhiyun{
36*4882a593Smuzhiyun	RET=0
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun	ip link add name br1 up type bridge vlan_filtering 0 mcast_snooping 0
39*4882a593Smuzhiyun	ip link add name vx1 up type vxlan id 1000 \
40*4882a593Smuzhiyun		local 192.0.2.17 remote 192.0.2.18 \
41*4882a593Smuzhiyun		dstport 4789 nolearning noudpcsum tos inherit ttl 100
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun	ip link set dev vx1 master br1
44*4882a593Smuzhiyun	check_err $?
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun	ip link set dev $swp1 master br1
47*4882a593Smuzhiyun	check_err $?
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun	ip link add name br2 up type bridge vlan_filtering 0 mcast_snooping 0
50*4882a593Smuzhiyun	ip link add name vx2 up type vxlan id 2000 \
51*4882a593Smuzhiyun		local 192.0.2.17 remote 192.0.2.18 \
52*4882a593Smuzhiyun		dstport 4789 nolearning noudpcsum tos inherit ttl 100
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun	ip link set dev vx2 master br2
55*4882a593Smuzhiyun	check_err $?
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun	ip link set dev $swp2 master br2
58*4882a593Smuzhiyun	check_err $?
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun	# Unsupported configuration: mlxsw demands that all offloaded VXLAN
61*4882a593Smuzhiyun	# devices have the same TTL.
62*4882a593Smuzhiyun	ip link set dev vx2 down
63*4882a593Smuzhiyun	ip link set dev vx2 type vxlan ttl 200
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun	ip link set dev vx2 up &>/dev/null
66*4882a593Smuzhiyun	check_fail $?
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun	ip link set dev vx2 up 2>&1 >/dev/null | grep -q mlxsw_spectrum
69*4882a593Smuzhiyun	check_err $?
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun	log_test "extack - NETDEV_PRE_UP"
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun	ip link del dev vx2
74*4882a593Smuzhiyun	ip link del dev br2
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun	ip link del dev vx1
77*4882a593Smuzhiyun	ip link del dev br1
78*4882a593Smuzhiyun}
79*4882a593Smuzhiyun
80*4882a593Smuzhiyunvxlan_vlan_add_test()
81*4882a593Smuzhiyun{
82*4882a593Smuzhiyun	RET=0
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun	ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun	# Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
87*4882a593Smuzhiyun	ip link add name vx1 up type vxlan id 1000 \
88*4882a593Smuzhiyun		local 192.0.2.17 remote 192.0.2.18 \
89*4882a593Smuzhiyun		dstport 4789 tos inherit ttl 100
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun	ip link set dev vx1 master br1
92*4882a593Smuzhiyun	check_err $?
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun	bridge vlan add dev vx1 vid 1
95*4882a593Smuzhiyun	check_err $?
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun	ip link set dev $swp1 master br1
98*4882a593Smuzhiyun	check_err $?
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun	bridge vlan add dev vx1 vid 1 pvid untagged 2>&1 >/dev/null \
101*4882a593Smuzhiyun		| grep -q mlxsw_spectrum
102*4882a593Smuzhiyun	check_err $?
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun	log_test "extack - map VLAN at VXLAN device"
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun	ip link del dev vx1
107*4882a593Smuzhiyun	ip link del dev br1
108*4882a593Smuzhiyun}
109*4882a593Smuzhiyun
110*4882a593Smuzhiyunvxlan_bridge_create_test()
111*4882a593Smuzhiyun{
112*4882a593Smuzhiyun	RET=0
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun	# Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
115*4882a593Smuzhiyun	ip link add name vx1 up type vxlan id 1000 \
116*4882a593Smuzhiyun		local 192.0.2.17 remote 192.0.2.18 \
117*4882a593Smuzhiyun		dstport 4789 tos inherit ttl 100
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun	# Test with VLAN-aware bridge.
120*4882a593Smuzhiyun	ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun	ip link set dev vx1 master br1
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun	ip link set dev $swp1 master br1 2>&1 > /dev/null \
125*4882a593Smuzhiyun		| grep -q mlxsw_spectrum
126*4882a593Smuzhiyun	check_err $?
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun	# Test with VLAN-unaware bridge.
129*4882a593Smuzhiyun	ip link set dev br1 type bridge vlan_filtering 0
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun	ip link set dev $swp1 master br1 2>&1 > /dev/null \
132*4882a593Smuzhiyun		| grep -q mlxsw_spectrum
133*4882a593Smuzhiyun	check_err $?
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun	log_test "extack - bridge creation with VXLAN"
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun	ip link del dev br1
138*4882a593Smuzhiyun	ip link del dev vx1
139*4882a593Smuzhiyun}
140*4882a593Smuzhiyun
141*4882a593Smuzhiyunbridge_create_test()
142*4882a593Smuzhiyun{
143*4882a593Smuzhiyun	RET=0
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun	ip link add name br1 up type bridge vlan_filtering 1
146*4882a593Smuzhiyun	ip link add name br2 up type bridge vlan_filtering 1
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun	ip link set dev $swp1 master br1
149*4882a593Smuzhiyun	check_err $?
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun	# Only one VLAN-aware bridge is supported, so this should fail with
152*4882a593Smuzhiyun	# an extack.
153*4882a593Smuzhiyun	ip link set dev $swp2 master br2 2>&1 > /dev/null \
154*4882a593Smuzhiyun		| grep -q mlxsw_spectrum
155*4882a593Smuzhiyun	check_err $?
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun	log_test "extack - multiple VLAN-aware bridges creation"
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun	ip link del dev br2
160*4882a593Smuzhiyun	ip link del dev br1
161*4882a593Smuzhiyun}
162*4882a593Smuzhiyun
163*4882a593Smuzhiyuntrap cleanup EXIT
164*4882a593Smuzhiyun
165*4882a593Smuzhiyunsetup_prepare
166*4882a593Smuzhiyunsetup_wait
167*4882a593Smuzhiyun
168*4882a593Smuzhiyuntests_run
169*4882a593Smuzhiyun
170*4882a593Smuzhiyunexit $EXIT_STATUS
171