Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

+88 -25
+18 -6
tools/testing/selftests/drivers/net/mlxsw/extack.sh
··· 35 35 { 36 36 RET=0 37 37 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 39 41 ip link add name vx1 up type vxlan id 1000 \ 40 42 local 192.0.2.17 remote 192.0.2.18 \ 41 43 dstport 4789 nolearning noudpcsum tos inherit ttl 100 ··· 48 46 ip link set dev $swp1 master br1 49 47 check_err $? 50 48 51 - ip link add name br2 up type bridge vlan_filtering 0 mcast_snooping 0 49 + ip link add name br2 type bridge vlan_filtering 0 mcast_snooping 0 50 + ip link set dev br2 addrgenmode none 51 + ip link set dev br2 up 52 52 ip link add name vx2 up type vxlan id 2000 \ 53 53 local 192.0.2.17 remote 192.0.2.18 \ 54 54 dstport 4789 nolearning noudpcsum tos inherit ttl 100 ··· 85 81 { 86 82 RET=0 87 83 88 - ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0 84 + ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0 85 + ip link set dev br1 addrgenmode none 86 + ip link set dev br1 up 89 87 90 88 # Unsupported configuration: mlxsw demands VXLAN with "noudpcsum". 91 89 ip link add name vx1 up type vxlan id 1000 \ ··· 123 117 dstport 4789 tos inherit ttl 100 124 118 125 119 # Test with VLAN-aware bridge. 126 - ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0 120 + ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0 121 + ip link set dev br1 addrgenmode none 122 + ip link set dev br1 up 127 123 128 124 ip link set dev vx1 master br1 129 125 ··· 150 142 { 151 143 RET=0 152 144 153 - ip link add name br1 up type bridge vlan_filtering 1 154 - ip link add name br2 up type bridge vlan_filtering 1 145 + ip link add name br1 type bridge vlan_filtering 1 146 + ip link set dev br1 addrgenmode none 147 + ip link set dev br1 up 148 + ip link add name br2 type bridge vlan_filtering 1 149 + ip link set dev br2 addrgenmode none 150 + ip link set dev br2 up 155 151 156 152 ip link set dev $swp1 master br1 157 153 check_err $?
+1
tools/testing/selftests/drivers/net/mlxsw/mirror_gre_scale.sh
··· 165 165 simple_if_init $h3 166 166 167 167 ip link add name br1 type bridge vlan_filtering 1 168 + ip link set dev br1 addrgenmode none 168 169 ip link set dev br1 up 169 170 170 171 ip link set dev $swp1 master br1
+2 -1
tools/testing/selftests/drivers/net/mlxsw/one_armed_router.sh
··· 83 83 84 84 switch_create() 85 85 { 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 87 88 ip link set dev br0 up 88 89 89 90 ip link set dev $swp1 master br0
+8
tools/testing/selftests/drivers/net/mlxsw/q_in_q_veto.sh
··· 48 48 49 49 ip link add dev br0 type bridge vlan_filtering 1 \ 50 50 vlan_protocol $bridge_proto vlan_default_pvid 0 mcast_snooping 0 51 + ip link set dev br0 addrgenmode none 51 52 52 53 ip link set dev br0 up 53 54 ip link set dev $swp1 master br0 ··· 89 88 90 89 ip link add dev br0 type bridge vlan_filtering 1 \ 91 90 vlan_default_pvid 0 mcast_snooping 0 91 + ip link set dev br0 addrgenmode none 92 92 93 93 ip link set dev $swp1 master br0 94 94 ip link set dev br0 up ··· 157 155 158 156 ip link add dev br0 type bridge vlan_filtering 1 \ 159 157 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0 158 + ip link set dev br0 addrgenmode none 160 159 ip link set dev br0 up 161 160 162 161 ip link set dev $swp1 master br0 ··· 180 177 181 178 ip link add dev br0 type bridge vlan_filtering 1 \ 182 179 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0 180 + ip link set dev br0 addrgenmode none 183 181 ip link set dev br0 up 184 182 185 183 ip link add name bond1 type bond mode 802.3ad ··· 207 203 208 204 ip link add dev br0 type bridge vlan_filtering 1 \ 209 205 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0 206 + ip link set dev br0 addrgenmode none 210 207 ip link set dev br0 up 211 208 212 209 ip link add name $swp1.100 link $swp1 type vlan id 100 ··· 230 225 231 226 ip link add dev br0 type bridge vlan_filtering 1 \ 232 227 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0 228 + ip link set dev br0 addrgenmode none 233 229 ip link set dev br0 up 234 230 235 231 ip link add name bond1 type bond mode 802.3ad ··· 258 252 259 253 ip link add dev br0 type bridge vlan_filtering 1 \ 260 254 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0 255 + ip link set dev br0 addrgenmode none 261 256 262 257 ip link set dev br0 up 263 258 ip link set dev $swp1 master br0 ··· 280 273 281 274 ip link add dev br0 type bridge vlan_filtering 1 \ 282 275 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0 276 + ip link set dev br0 addrgenmode none 283 277 284 278 ip link set dev br0 up 285 279 ip link set dev $swp1 master br0
+1
tools/testing/selftests/drivers/net/mlxsw/qos_dscp_bridge.sh
··· 65 65 switch_create() 66 66 { 67 67 ip link add name br1 type bridge vlan_filtering 1 68 + ip link set dev br1 addrgenmode none 68 69 ip link set dev br1 up 69 70 ip link set dev $swp1 master br1 70 71 ip link set dev $swp1 up
+6 -2
tools/testing/selftests/drivers/net/mlxsw/qos_ets_strict.sh
··· 138 138 vlan_create $swp3 111 139 139 vlan_create $swp3 222 140 140 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 142 144 ip link set dev $swp1.111 master br111 143 145 ip link set dev $swp3.111 master br111 144 146 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 146 150 ip link set dev $swp2.222 master br222 147 151 ip link set dev $swp3.222 master br222 148 152
+2
tools/testing/selftests/drivers/net/mlxsw/qos_mc_aware.sh
··· 135 135 prio bands 8 priomap 7 7 7 7 7 7 7 7 136 136 137 137 ip link add name br1 type bridge vlan_filtering 0 138 + ip link set dev br1 addrgenmode none 138 139 ip link set dev br1 up 139 140 ip link set dev $swp1 master br1 140 141 ip link set dev $swp3 master br1 141 142 142 143 ip link add name br111 type bridge vlan_filtering 0 144 + ip link set dev br111 addrgenmode none 143 145 ip link set dev br111 up 144 146 ip link set dev $swp2.111 master br111 145 147 ip link set dev $swp3.111 master br111
+1
tools/testing/selftests/drivers/net/mlxsw/spectrum/q_in_vni_veto.sh
··· 34 34 35 35 ip link add dev br0 type bridge vlan_filtering 1 vlan_protocol 802.1ad \ 36 36 vlan_default_pvid 0 mcast_snooping 0 37 + ip link set dev br0 addrgenmode none 37 38 ip link set dev br0 up 38 39 39 40 ip link add name vx100 type vxlan id 1000 local 192.0.2.17 dstport \
+31 -10
tools/testing/selftests/drivers/net/mlxsw/vxlan.sh
··· 444 444 { 445 445 # Create a simple setup with two bridges, each with a VxLAN device 446 446 # 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 449 453 450 454 ip link set dev $swp1 master br0 451 455 ip link set dev $swp2 master br1 ··· 650 646 651 647 RET=0 652 648 653 - ip link add name br0 up type bridge mcast_snooping 0 654 - ip link add name br1 up type bridge mcast_snooping 0 649 + ip link add name br0 type bridge mcast_snooping 0 650 + ip link set dev br0 addrgenmode none 651 + ip link set dev br0 up 652 + ip link add name br1 type bridge mcast_snooping 0 653 + ip link set dev br1 addrgenmode none 654 + ip link set dev br1 up 655 655 ip link set dev $swp1 master br0 656 656 ip link set dev $swp2 master br1 657 657 ip link set dev vxlan0 master br0 ··· 788 780 789 781 offload_indication_join_vxlan_first() 790 782 { 791 - ip link add dev br0 up type bridge mcast_snooping 0 783 + ip link add dev br0 type bridge mcast_snooping 0 784 + ip link set dev br0 addrgenmode none 785 + ip link set dev br0 up 792 786 ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 793 787 ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 794 788 ··· 825 815 826 816 offload_indication_join_vxlan_last() 827 817 { 828 - ip link add dev br0 up type bridge mcast_snooping 0 818 + ip link add dev br0 type bridge mcast_snooping 0 819 + ip link set dev br0 addrgenmode none 820 + ip link set dev br0 up 829 821 ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 830 822 ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 831 823 ··· 854 842 RET=0 855 843 856 844 ip link add dev br0 type bridge mcast_snooping 0 vlan_filtering 1 845 + ip link set dev br0 addrgenmode none 857 846 858 847 ip link add name vxlan10 up master br0 type vxlan id 10 nolearning \ 859 848 $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 ··· 928 915 { 929 916 # Create a simple setup with two VxLAN devices and a single VLAN-aware 930 917 # bridge 931 - ip link add name br0 up type bridge mcast_snooping 0 vlan_filtering 1 \ 918 + ip link add name br0 type bridge mcast_snooping 0 vlan_filtering 1 \ 932 919 vlan_default_pvid 0 920 + ip link set dev br0 addrgenmode none 921 + ip link set dev br0 up 933 922 934 923 ip link set dev $swp1 master br0 935 924 ··· 1075 1060 1076 1061 offload_indication_vlan_aware_join_vxlan_first() 1077 1062 { 1078 - ip link add dev br0 up type bridge mcast_snooping 0 \ 1063 + ip link add dev br0 type bridge mcast_snooping 0 \ 1079 1064 vlan_filtering 1 vlan_default_pvid 1 1065 + ip link set dev br0 addrgenmode none 1066 + ip link set dev br0 up 1080 1067 ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 1081 1068 ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 1082 1069 ··· 1090 1073 1091 1074 offload_indication_vlan_aware_join_vxlan_last() 1092 1075 { 1093 - ip link add dev br0 up type bridge mcast_snooping 0 \ 1076 + ip link add dev br0 type bridge mcast_snooping 0 \ 1094 1077 vlan_filtering 1 vlan_default_pvid 1 1078 + ip link set dev br0 addrgenmode none 1079 + ip link set dev br0 up 1095 1080 ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 1096 1081 ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 1097 1082 ··· 1110 1091 RET=0 1111 1092 1112 1093 sysctl_set net.ipv6.conf.default.disable_ipv6 1 1113 - ip link add dev br0 up type bridge mcast_snooping 0 \ 1094 + ip link add dev br0 type bridge mcast_snooping 0 \ 1114 1095 vlan_filtering 1 vlan_default_pvid 0 1096 + ip link set dev br0 addrgenmode none 1097 + ip link set dev br0 up 1115 1098 ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 1116 1099 ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 1117 1100
+1
tools/testing/selftests/net/forwarding/dual_vxlan_bridge.sh
··· 132 132 #### BR1 #### 133 133 ip link add name br1 type bridge vlan_filtering 1 \ 134 134 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0 135 + ip link set dev br1 addrgenmode none 135 136 # Make sure the bridge uses the MAC address of the local port and not 136 137 # that of the VxLAN's device. 137 138 ip link set dev br1 address $(mac_get $swp1)
+1
tools/testing/selftests/net/forwarding/mirror_gre_bound.sh
··· 98 98 # Bridge between H1 and H2. 99 99 100 100 ip link add name br1 type bridge vlan_filtering 1 101 + ip link set dev br1 addrgenmode none 101 102 ip link set dev br1 up 102 103 103 104 ip link set dev $swp1 master br1
+2 -1
tools/testing/selftests/net/forwarding/mirror_gre_bridge_1d.sh
··· 65 65 vrf_prepare 66 66 mirror_gre_topo_create 67 67 68 - ip link add name br2 type bridge vlan_filtering 0 68 + ip link add name br2 address $(mac_get $swp3) \ 69 + type bridge vlan_filtering 0 69 70 ip link set dev br2 up 70 71 71 72 ip link set dev $swp3 master br2
+2 -1
tools/testing/selftests/net/forwarding/mirror_gre_bridge_1d_vlan.sh
··· 35 35 vrf_prepare 36 36 mirror_gre_topo_create 37 37 38 - ip link add name br2 type bridge vlan_filtering 0 38 + ip link add name br2 address $(mac_get $swp3) \ 39 + type bridge vlan_filtering 0 39 40 ip link set dev br2 up 40 41 41 42 vlan_create $swp3 555
+2 -1
tools/testing/selftests/net/forwarding/mirror_gre_bridge_1q_lag.sh
··· 140 140 ip link set dev $swp3 up 141 141 ip link set dev $swp4 up 142 142 143 - ip link add name br1 type bridge vlan_filtering 1 143 + ip link add name br1 address $(mac_get $swp3) \ 144 + type bridge vlan_filtering 1 144 145 145 146 team_create lag loadbalance $swp3 $swp4 146 147 ip link set dev lag master br1
+1
tools/testing/selftests/net/forwarding/mirror_topo_lib.sh
··· 60 60 ip link set dev $swp3 up 61 61 62 62 ip link add name br1 type bridge vlan_filtering 1 63 + ip link set dev br1 addrgenmode none 63 64 ip link set dev br1 up 64 65 65 66 ip link set dev $swp1 master br1
+3 -1
tools/testing/selftests/net/forwarding/pedit_dsfield.sh
··· 60 60 61 61 switch_create() 62 62 { 63 - ip link add name br1 up type bridge vlan_filtering 1 63 + ip link add name br1 type bridge vlan_filtering 1 64 + ip link set dev br1 addrgenmode none 65 + ip link set dev br1 up 64 66 ip link set dev $swp1 master br1 65 67 ip link set dev $swp1 up 66 68 ip link set dev $swp2 master br1
+1
tools/testing/selftests/net/forwarding/q_in_vni.sh
··· 137 137 { 138 138 ip link add name br1 type bridge vlan_filtering 1 vlan_protocol 802.1ad \ 139 139 vlan_default_pvid 0 mcast_snooping 0 140 + ip link set dev br1 addrgenmode none 140 141 # Make sure the bridge uses the MAC address of the local port and not 141 142 # that of the VxLAN's device. 142 143 ip link set dev br1 address $(mac_get $swp1)
+2 -1
tools/testing/selftests/net/forwarding/router_bridge.sh
··· 38 38 39 39 router_create() 40 40 { 41 - ip link add name br1 type bridge vlan_filtering 1 41 + ip link add name br1 address $(mac_get $swp1) \ 42 + type bridge vlan_filtering 1 42 43 ip link set dev br1 up 43 44 44 45 ip link set dev $swp1 master br1
+3 -1
tools/testing/selftests/net/forwarding/skbedit_priority.sh
··· 54 54 55 55 switch_create() 56 56 { 57 - ip link add name br1 up type bridge vlan_filtering 1 57 + ip link add name br1 type bridge vlan_filtering 1 58 + ip link set dev br1 addrgenmode none 59 + ip link set dev br1 up 58 60 ip link set dev $swp1 master br1 59 61 ip link set dev $swp1 up 60 62 ip link set dev $swp2 master br1