Subject: Re: [patch net-next] mlxsw: spectrum_switchdev: Allow port enslavement to a VLAN-unaware bridge

From: David Ahern <[email-masked]>
Date: Wed, 21 Feb 2018 11:16:35 -0700

On 2/20/18 12:45 AM, Jiri Pirko wrote:
> From: Ido Schimmel <[email-masked]>
> 
> Up until now we only allowed VLAN devices to be put in a VLAN-unaware
> bridge, but some users need the ability to enslave physical ports as
> well.
> 
> This is achieved by mapping the port and VID 1 to the bridge's vFID,
> instead of the port and the VID used by the VLAN device.
> 
> The above is valid because as long as the port is not enslaved to a
> bridge, VID 1 is guaranteed to be configured as PVID and egress
> untagged.
> 
> Signed-off-by: Ido Schimmel <[email-masked]>
> Signed-off-by: Jiri Pirko <[email-masked]>
> ---
>  drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c | 12 +++++-------
>  1 file changed, 5 insertions(+), 7 deletions(-)
> 

Maybe I am missing something in the setup, but I am not getting
host-to-host connectivity. I booted a switch with this patch, configured
a bridge:

# ip a sh dev br0
44: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state
UP group default qlen 1000
    link/ether 7c:fe:90:e8:3a:79 brd ff:ff:ff:ff:ff:ff
    inet6 3000:1000:1000:1000::1/80 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::7efe:90ff:fee8:3a79/64 scope link
       valid_lft forever preferred_lft forever

Connected ports:
# ip li sh master br0
36: swp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 7c:fe:90:e8:3a:7d brd ff:ff:ff:ff:ff:ff
37: swp1s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 7c:fe:90:e8:3a:7e brd ff:ff:ff:ff:ff:ff
38: swp1s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 7c:fe:90:e8:3a:7f brd ff:ff:ff:ff:ff:ff
39: swp1s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 7c:fe:90:e8:3a:80 brd ff:ff:ff:ff:ff:ff
40: swp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 7c:fe:90:e8:3a:79 brd ff:ff:ff:ff:ff:ff
41: swp3s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 7c:fe:90:e8:3a:7a brd ff:ff:ff:ff:ff:ff
42: swp3s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 7c:fe:90:e8:3a:7b brd ff:ff:ff:ff:ff:ff
43: swp3s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 7c:fe:90:e8:3a:7c brd ff:ff:ff:ff:ff:ff

The switch can see the hosts:
# net show lldp

LocalPort    Speed    Mode       RemotePort    RemoteHost
             Summary
-----------  -------  ---------  ------------
-------------------------------------  -----------------------
eth0         1G       Mgmt       swp37
pioneerMS16.mvlab.cumulusnetworks.com  IP: 10.0.3.155/22(DHCP)
swp1s0       10G      Access/L2  swp1          host1
             Untagged: br0
swp1s1       10G      Access/L2  swp1          host2
             Untagged: br0
swp1s2       10G      Access/L2  swp1          host3
             Untagged: br0
swp1s3       10G      Access/L2  swp1          host4
             Untagged: br0
swp3s0       10G      Access/L2  swp1          host5
             Untagged: br0
swp3s1       10G      Access/L2  swp1          host6
             Untagged: br0
swp3s2       10G      Access/L2  swp1          host7
             Untagged: br0
swp3s3       10G      Access/L2  swp1          host8
             Untagged: br0

and can talk to the hosts:
# ping6 ff02::2%br0
PING ff02::2%br0(ff02::2) 56 data bytes
64 bytes from fe80::7efe:90ff:fee8:3a79: icmp_seq=1 ttl=64 time=0.073 ms
64 bytes from fe80::202:ff:fe00:2: icmp_seq=1 ttl=64 time=0.661 ms (DUP!)
64 bytes from fe80::202:ff:fe00:5: icmp_seq=1 ttl=64 time=0.705 ms (DUP!)
64 bytes from fe80::202:ff:fe00:1: icmp_seq=1 ttl=64 time=0.720 ms (DUP!)
64 bytes from fe80::202:ff:fe00:3: icmp_seq=1 ttl=64 time=0.729 ms (DUP!)
64 bytes from fe80::202:ff:fe00:6: icmp_seq=1 ttl=64 time=0.739 ms (DUP!)
64 bytes from fe80::202:ff:fe00:4: icmp_seq=1 ttl=64 time=0.748 ms (DUP!)
64 bytes from fe80::202:ff:fe00:7: icmp_seq=1 ttl=64 time=0.757 ms (DUP!)
64 bytes from fe80::202:ff:fe00:8: icmp_seq=1 ttl=64 time=0.766 ms (DUP!)

but the hosts can not talk to each other:

cumulus@host3:~$ net show lldp

LocalPort  Speed  Mode          RemoteHost   RemotePort
---------  -----  ------------  -----------  ----------
swp1       10G    Interface/L3  mlx-2700-05  swp1s2

cumulus@host3:~$ ping6 3000:1000:1000:1000::2
PING 3000:1000:1000:1000::2(3000:1000:1000:1000::2) 56 data bytes
^C
--- 3000:1000:1000:1000::2 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms