From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Miller Subject: Re: [PATCH net-next 0/2] net: dsa: cross-chip FDB support Date: Sat, 02 Dec 2017 21:22:00 -0500 (EST) Message-ID: <20171202.212200.1559874215512257002.davem@davemloft.net> References: <20171130175643.14022-1-vivien.didelot@savoirfairelinux.com> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@savoirfairelinux.com, f.fainelli@gmail.com, andrew@lunn.ch To: vivien.didelot@savoirfairelinux.com Return-path: In-Reply-To: <20171130175643.14022-1-vivien.didelot@savoirfairelinux.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org From: Vivien Didelot 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.