Re: [PATCH net-next 0/2] net: dsa: cross-chip FDB support

From: David Miller
Date: Sat Dec 02 2017 - 21:22:09 EST


From: Vivien Didelot <vivien.didelot@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 30 Nov 2017 12:56:41 -0500

> DSA can have interconnected switches. For instance, the ZII Dev Rev B
> board described in arch/arm/boot/dts/vf610-zii-dev-rev-b.dts has a
> switch fabric composed of 3 switch devices like this:
>
> lan4 lan6
> CPU (eth1) | lan5 | lan7
> | | | | |
> [0 1 2 3 4 6 5]---[6 0 1 2 3 4 5]---[9 0 1 2 3 4 5 6 7 8]
> | | | | | | |
> lan0 | lan2 lan3 lan8 | optical4
> lan1 optical3
>
> One current issue with DSA is cross-chip FDB. If we add a static MAC
> address on lan3, only its parent switch 1 (the one in the middle) will
> be programmed. That is not correct in a cross-chip environment, because
> the DSA ports connecting to switch 1 of adjacent switch 0 (on the left)
> and switch 2 (on the right) must be programmed too.
>
> Without this patchset, a dump of the hardware FDB of switches 0, 1 and 2
> after programming a MAC address on lan3 looks like this (*):
>
> # bridge fdb add 11:22:33:44:55:66 dev lan3
> # cat /sys/kernel/debug/mv88e6xxx/sw*/atu/0 | grep -v FID
> 0 ff:ff:ff:ff:ff:ff MC_STATIC n 0 1 2 3 4 5 6
> 0 11:22:33:44:55:66 MC_STATIC_MGMT_PO n 0 - - - - - -
> 0 ff:ff:ff:ff:ff:ff MC_STATIC n 0 1 2 3 4 5 6
> 0 ff:ff:ff:ff:ff:ff MC_STATIC n 0 1 2 3 4 5 6 7 8 9
>
> With this patchset applied, adjacent DSA ports get programmed too:
>
> # bridge fdb add 11:22:33:44:55:66 dev lan3
> # cat /sys/kernel/debug/mv88e6xxx/sw*/atu/0 | grep -v FID
> 0 11:22:33:44:55:66 MC_STATIC_MGMT_PO n - - - - - 5 -
> 0 ff:ff:ff:ff:ff:ff MC_STATIC n 0 1 2 3 4 5 6
> 0 11:22:33:44:55:66 MC_STATIC_MGMT_PO n 0 - - - - - -
> 0 ff:ff:ff:ff:ff:ff MC_STATIC n 0 1 2 3 4 5 6
> 0 11:22:33:44:55:66 MC_STATIC_MGMT_PO n - - - - - - - - - 9
> 0 ff:ff:ff:ff:ff:ff MC_STATIC n 0 1 2 3 4 5 6 7 8 9
...

Series applied, thanks.