Skip to content

Commit f31b6c6

Browse files
committed
Merge branch 'selftests-preparations-for-out-of-order-operations-patches-in-mlxsw'
Petr Machata says: ==================== selftests: Preparations for out-of-order-operations patches in mlxsw The mlxsw driver currently makes the assumption that the user applies configuration in a bottom-up manner. Thus netdevices need to be added to the bridge before IP addresses are configured on that bridge or SVI added on top of it. Enslaving a netdevice to another netdevice that already has uppers is in fact forbidden by mlxsw for this reason. Despite this safety, it is rather easy to get into situations where the offloaded configuration is just plain wrong. Over the course of the following several patchsets, mlxsw code is going to be adjusted to diminish the space of wrongly offloaded configurations. Ideally the offload state will reflect the actual state, regardless of the sequence of operation used to construct that state. Several selftests build configurations that will not be offloadable in the future on some systems. The reason is that what will get offloaded is the actual configuration, not the configuration steps. For example, when a port is added to a bridge that has an IP address, that bridge will get a RIF, which it would not have with the current code. But on Nvidia Spectrum-1 machines, MAC addresses of all RIFs need to have the same prefix, which the bridge will violate. The RIF thus couldn't be created, and the enslavement is therefore canceled, because it would lead to an unoffloadable configuration. This breaks some selftests. In this patchset, adjust selftests to avoid the configurations that mlxsw would be incapable of offloading, while maintaining relevance with regards to the feature that is being tested. There are generally two cases of fixes: - Disabling IPv6 autogen on bridges that do not participate in routing, either because of the abovementioned requirement to keep the same MAC prefix on all in-HW router interfaces, or, on 802.1ad bridges, because in-HW router interfaces are not supported at all. - Setting the bridge MAC address to what it will become after the first member port is attached, so that the in-HW router interface is created with a supported MAC address. The patchset is then split thus: - Patches #1-#7 adjust generic selftests - Patches #8-#16 adjust mlxsw-specific selftests ==================== Link: https://lore.kernel.org/r/cover.1687265905.git.petrm@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2 parents cc75549 + 664bc72 commit f31b6c6

19 files changed

Lines changed: 88 additions & 25 deletions

tools/testing/selftests/drivers/net/mlxsw/extack.sh

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ netdev_pre_up_test()
3535
{
3636
RET=0
3737

38-
ip link add name br1 up type bridge vlan_filtering 0 mcast_snooping 0
38+
ip link add name br1 type bridge vlan_filtering 0 mcast_snooping 0
39+
ip link set dev br1 addrgenmode none
40+
ip link set dev br1 up
3941
ip link add name vx1 up type vxlan id 1000 \
4042
local 192.0.2.17 remote 192.0.2.18 \
4143
dstport 4789 nolearning noudpcsum tos inherit ttl 100
@@ -46,7 +48,9 @@ netdev_pre_up_test()
4648
ip link set dev $swp1 master br1
4749
check_err $?
4850

49-
ip link add name br2 up type bridge vlan_filtering 0 mcast_snooping 0
51+
ip link add name br2 type bridge vlan_filtering 0 mcast_snooping 0
52+
ip link set dev br2 addrgenmode none
53+
ip link set dev br2 up
5054
ip link add name vx2 up type vxlan id 2000 \
5155
local 192.0.2.17 remote 192.0.2.18 \
5256
dstport 4789 nolearning noudpcsum tos inherit ttl 100
@@ -81,7 +85,9 @@ vxlan_vlan_add_test()
8185
{
8286
RET=0
8387

84-
ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0
88+
ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0
89+
ip link set dev br1 addrgenmode none
90+
ip link set dev br1 up
8591

8692
# Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
8793
ip link add name vx1 up type vxlan id 1000 \
@@ -117,7 +123,9 @@ vxlan_bridge_create_test()
117123
dstport 4789 tos inherit ttl 100
118124

119125
# Test with VLAN-aware bridge.
120-
ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0
126+
ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0
127+
ip link set dev br1 addrgenmode none
128+
ip link set dev br1 up
121129

122130
ip link set dev vx1 master br1
123131

@@ -142,8 +150,12 @@ bridge_create_test()
142150
{
143151
RET=0
144152

145-
ip link add name br1 up type bridge vlan_filtering 1
146-
ip link add name br2 up type bridge vlan_filtering 1
153+
ip link add name br1 type bridge vlan_filtering 1
154+
ip link set dev br1 addrgenmode none
155+
ip link set dev br1 up
156+
ip link add name br2 type bridge vlan_filtering 1
157+
ip link set dev br2 addrgenmode none
158+
ip link set dev br2 up
147159

148160
ip link set dev $swp1 master br1
149161
check_err $?

tools/testing/selftests/drivers/net/mlxsw/mirror_gre_scale.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ mirror_gre_setup_prepare()
165165
simple_if_init $h3
166166

167167
ip link add name br1 type bridge vlan_filtering 1
168+
ip link set dev br1 addrgenmode none
168169
ip link set dev br1 up
169170

170171
ip link set dev $swp1 master br1

tools/testing/selftests/drivers/net/mlxsw/one_armed_router.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ h2_destroy()
8383

8484
switch_create()
8585
{
86-
ip link add name br0 type bridge mcast_snooping 0
86+
ip link add name br0 address $(mac_get $swp1) \
87+
type bridge mcast_snooping 0
8788
ip link set dev br0 up
8889

8990
ip link set dev $swp1 master br0

tools/testing/selftests/drivers/net/mlxsw/q_in_q_veto.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ create_vlan_upper_on_top_of_bridge()
4848

4949
ip link add dev br0 type bridge vlan_filtering 1 \
5050
vlan_protocol $bridge_proto vlan_default_pvid 0 mcast_snooping 0
51+
ip link set dev br0 addrgenmode none
5152

5253
ip link set dev br0 up
5354
ip link set dev $swp1 master br0
@@ -88,6 +89,7 @@ create_8021ad_vlan_upper_on_top_bridge_port()
8889

8990
ip link add dev br0 type bridge vlan_filtering 1 \
9091
vlan_default_pvid 0 mcast_snooping 0
92+
ip link set dev br0 addrgenmode none
9193

9294
ip link set dev $swp1 master br0
9395
ip link set dev br0 up
@@ -155,6 +157,7 @@ create_vlan_upper_on_top_front_panel_enslaved_to_8021ad_bridge()
155157

156158
ip link add dev br0 type bridge vlan_filtering 1 \
157159
vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
160+
ip link set dev br0 addrgenmode none
158161
ip link set dev br0 up
159162

160163
ip link set dev $swp1 master br0
@@ -177,6 +180,7 @@ create_vlan_upper_on_top_lag_enslaved_to_8021ad_bridge()
177180

178181
ip link add dev br0 type bridge vlan_filtering 1 \
179182
vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
183+
ip link set dev br0 addrgenmode none
180184
ip link set dev br0 up
181185

182186
ip link add name bond1 type bond mode 802.3ad
@@ -203,6 +207,7 @@ enslave_front_panel_with_vlan_upper_to_8021ad_bridge()
203207

204208
ip link add dev br0 type bridge vlan_filtering 1 \
205209
vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
210+
ip link set dev br0 addrgenmode none
206211
ip link set dev br0 up
207212

208213
ip link add name $swp1.100 link $swp1 type vlan id 100
@@ -225,6 +230,7 @@ enslave_lag_with_vlan_upper_to_8021ad_bridge()
225230

226231
ip link add dev br0 type bridge vlan_filtering 1 \
227232
vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
233+
ip link set dev br0 addrgenmode none
228234
ip link set dev br0 up
229235

230236
ip link add name bond1 type bond mode 802.3ad
@@ -252,6 +258,7 @@ add_ip_address_to_8021ad_bridge()
252258

253259
ip link add dev br0 type bridge vlan_filtering 1 \
254260
vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
261+
ip link set dev br0 addrgenmode none
255262

256263
ip link set dev br0 up
257264
ip link set dev $swp1 master br0
@@ -273,6 +280,7 @@ switch_bridge_protocol_from_8021q_to_8021ad()
273280

274281
ip link add dev br0 type bridge vlan_filtering 1 \
275282
vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
283+
ip link set dev br0 addrgenmode none
276284

277285
ip link set dev br0 up
278286
ip link set dev $swp1 master br0

tools/testing/selftests/drivers/net/mlxsw/qos_dscp_bridge.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ h2_destroy()
6565
switch_create()
6666
{
6767
ip link add name br1 type bridge vlan_filtering 1
68+
ip link set dev br1 addrgenmode none
6869
ip link set dev br1 up
6970
ip link set dev $swp1 master br1
7071
ip link set dev $swp1 up

tools/testing/selftests/drivers/net/mlxsw/qos_ets_strict.sh

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,15 @@ switch_create()
138138
vlan_create $swp3 111
139139
vlan_create $swp3 222
140140

141-
ip link add name br111 up type bridge vlan_filtering 0
141+
ip link add name br111 type bridge vlan_filtering 0
142+
ip link set dev br111 addrgenmode none
143+
ip link set dev br111 up
142144
ip link set dev $swp1.111 master br111
143145
ip link set dev $swp3.111 master br111
144146

145-
ip link add name br222 up type bridge vlan_filtering 0
147+
ip link add name br222 type bridge vlan_filtering 0
148+
ip link set dev br222 addrgenmode none
149+
ip link set dev br222 up
146150
ip link set dev $swp2.222 master br222
147151
ip link set dev $swp3.222 master br222
148152

tools/testing/selftests/drivers/net/mlxsw/qos_mc_aware.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,13 @@ switch_create()
135135
prio bands 8 priomap 7 7 7 7 7 7 7 7
136136

137137
ip link add name br1 type bridge vlan_filtering 0
138+
ip link set dev br1 addrgenmode none
138139
ip link set dev br1 up
139140
ip link set dev $swp1 master br1
140141
ip link set dev $swp3 master br1
141142

142143
ip link add name br111 type bridge vlan_filtering 0
144+
ip link set dev br111 addrgenmode none
143145
ip link set dev br111 up
144146
ip link set dev $swp2.111 master br111
145147
ip link set dev $swp3.111 master br111

tools/testing/selftests/drivers/net/mlxsw/spectrum/q_in_vni_veto.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ create_vxlan_on_top_of_8021ad_bridge()
3434

3535
ip link add dev br0 type bridge vlan_filtering 1 vlan_protocol 802.1ad \
3636
vlan_default_pvid 0 mcast_snooping 0
37+
ip link set dev br0 addrgenmode none
3738
ip link set dev br0 up
3839

3940
ip link add name vx100 type vxlan id 1000 local 192.0.2.17 dstport \

tools/testing/selftests/drivers/net/mlxsw/vxlan.sh

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -444,8 +444,12 @@ offload_indication_setup_create()
444444
{
445445
# Create a simple setup with two bridges, each with a VxLAN device
446446
# and one local port
447-
ip link add name br0 up type bridge mcast_snooping 0
448-
ip link add name br1 up type bridge mcast_snooping 0
447+
ip link add name br0 type bridge mcast_snooping 0
448+
ip link set dev br0 addrgenmode none
449+
ip link set dev br0 up
450+
ip link add name br1 type bridge mcast_snooping 0
451+
ip link set dev br1 addrgenmode none
452+
ip link set dev br1 up
449453

450454
ip link set dev $swp1 master br0
451455
ip link set dev $swp2 master br1
@@ -646,8 +650,12 @@ offload_indication_decap_route_test()
646650

647651
RET=0
648652

649-
ip link add name br0 up type bridge mcast_snooping 0
650-
ip link add name br1 up type bridge mcast_snooping 0
653+
ip link add name br0 type bridge mcast_snooping 0
654+
ip link set dev br0 addrgenmode none
655+
ip link set dev br0 up
656+
ip link add name br1 type bridge mcast_snooping 0
657+
ip link set dev br1 addrgenmode none
658+
ip link set dev br1 up
651659
ip link set dev $swp1 master br0
652660
ip link set dev $swp2 master br1
653661
ip link set dev vxlan0 master br0
@@ -780,7 +788,9 @@ __offload_indication_join_vxlan_first()
780788

781789
offload_indication_join_vxlan_first()
782790
{
783-
ip link add dev br0 up type bridge mcast_snooping 0
791+
ip link add dev br0 type bridge mcast_snooping 0
792+
ip link set dev br0 addrgenmode none
793+
ip link set dev br0 up
784794
ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \
785795
ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789
786796

@@ -815,7 +825,9 @@ __offload_indication_join_vxlan_last()
815825

816826
offload_indication_join_vxlan_last()
817827
{
818-
ip link add dev br0 up type bridge mcast_snooping 0
828+
ip link add dev br0 type bridge mcast_snooping 0
829+
ip link set dev br0 addrgenmode none
830+
ip link set dev br0 up
819831
ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \
820832
ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789
821833

@@ -842,6 +854,7 @@ sanitization_vlan_aware_test()
842854
RET=0
843855

844856
ip link add dev br0 type bridge mcast_snooping 0 vlan_filtering 1
857+
ip link set dev br0 addrgenmode none
845858

846859
ip link add name vxlan10 up master br0 type vxlan id 10 nolearning \
847860
$UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789
@@ -915,8 +928,10 @@ offload_indication_vlan_aware_setup_create()
915928
{
916929
# Create a simple setup with two VxLAN devices and a single VLAN-aware
917930
# bridge
918-
ip link add name br0 up type bridge mcast_snooping 0 vlan_filtering 1 \
931+
ip link add name br0 type bridge mcast_snooping 0 vlan_filtering 1 \
919932
vlan_default_pvid 0
933+
ip link set dev br0 addrgenmode none
934+
ip link set dev br0 up
920935

921936
ip link set dev $swp1 master br0
922937

@@ -1060,8 +1075,10 @@ offload_indication_vlan_aware_decap_route_test()
10601075

10611076
offload_indication_vlan_aware_join_vxlan_first()
10621077
{
1063-
ip link add dev br0 up type bridge mcast_snooping 0 \
1078+
ip link add dev br0 type bridge mcast_snooping 0 \
10641079
vlan_filtering 1 vlan_default_pvid 1
1080+
ip link set dev br0 addrgenmode none
1081+
ip link set dev br0 up
10651082
ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \
10661083
ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789
10671084

@@ -1073,8 +1090,10 @@ offload_indication_vlan_aware_join_vxlan_first()
10731090

10741091
offload_indication_vlan_aware_join_vxlan_last()
10751092
{
1076-
ip link add dev br0 up type bridge mcast_snooping 0 \
1093+
ip link add dev br0 type bridge mcast_snooping 0 \
10771094
vlan_filtering 1 vlan_default_pvid 1
1095+
ip link set dev br0 addrgenmode none
1096+
ip link set dev br0 up
10781097
ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \
10791098
ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789
10801099

@@ -1091,8 +1110,10 @@ offload_indication_vlan_aware_l3vni_test()
10911110
RET=0
10921111

10931112
sysctl_set net.ipv6.conf.default.disable_ipv6 1
1094-
ip link add dev br0 up type bridge mcast_snooping 0 \
1113+
ip link add dev br0 type bridge mcast_snooping 0 \
10951114
vlan_filtering 1 vlan_default_pvid 0
1115+
ip link set dev br0 addrgenmode none
1116+
ip link set dev br0 up
10961117
ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \
10971118
ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789
10981119

tools/testing/selftests/net/forwarding/dual_vxlan_bridge.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ switch_create()
132132
#### BR1 ####
133133
ip link add name br1 type bridge vlan_filtering 1 \
134134
vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
135+
ip link set dev br1 addrgenmode none
135136
# Make sure the bridge uses the MAC address of the local port and not
136137
# that of the VxLAN's device.
137138
ip link set dev br1 address $(mac_get $swp1)

0 commit comments

Comments
 (0)