mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: Vivien Didelot <vivien.didelot@savoirfairelinux.com>,
	netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kernel@savoirfairelinux.com,
	"David S. Miller" <davem@davemloft.net>,
	Andrew Lunn <andrew@lunn.ch>
Subject: Re: [PATCH net-next 00/20] net: dsa: distribute switch events
Date: Mon, 22 May 2017 13:01:06 -0700	[thread overview]
Message-ID: <ce634f83-35b0-abbf-a18b-61d3feccc097@gmail.com> (raw)
In-Reply-To: <20170519210055.9366-1-vivien.didelot@savoirfairelinux.com>

Yo Vivien,

On 05/19/2017 02:00 PM, Vivien Didelot wrote:
> DSA is by nature the support for a switch fabric, which can be composed
> of a single, or multiple interconnected Ethernet switch chips.
> 
> The current DSA core behavior is to identify the slave port targeted by
> a request (e.g. adding a VLAN entry), and program the switch chip to
> which it belongs accordingly.
> 
> This is problematic in a multi-chip environment, since all chips of a
> fabric must be aware of most configuration changes. Here are some
> concrete examples in a 3-chip environment:
> 
>          [CPU].................... (mdio)
>     (eth0) |   :       :          :
>           _|_____    _______    _______
>          [__sw0__]--[__sw1__]--[__sw2__]
>           |  |  |    |  |  |    |  |  |
>           v  v  v    v  v  v    v  v  v
>           p1 p2 p3   p4 p5 p6   p7 p8 p9
> 
> If you add a VLAN entry on p7, sw2 gets programmed, but frames won't
> reach the CPU interface in a VLAN filtered setup. sw0 and sw1 also need
> to be programmed. The same problem comes with MAC addresses (FDB, MDB),
> or ageing time changes for instance.
> 
> This patch series uses the notification chain introduced for bridging,
> to notify not only bridge, but switchdev attributes and objects events
> to all switch chips of the fabric.
> 
> An ugly debug message printing the ignored event and switch info in the
> code handling the switch VLAN events would give us:
> 
>     # bridge vlan add dev p7 vid 42
>     sw0: ignoring DSA_NOTIFIER_VLAN_ADD for sw2 (prepare phase)
>     sw1: ignoring DSA_NOTIFIER_VLAN_ADD for sw2 (prepare phase)
>     sw0: ignoring DSA_NOTIFIER_VLAN_ADD for sw2 (commit phase)
>     sw1: ignoring DSA_NOTIFIER_VLAN_ADD for sw2 (commit phase)
> 
> To achieve that, patches 1-8 change the scope of the bridge and
> switchdev callbacks from the DSA slave device to the generic DSA port,
> so that the port-wide API can be used later for switch ports not exposed
> to userspace, such as CPU and DSA links.
> 
> Patches 9-15 move the DSA port specific functions in a new port.c file.
> 
> Patches 16-20 introduce new events to notify the fabric about switchdev
> attributes and objects manipulation.
> 
> This patch series only adds the plumbing to support a distributed
> configuration, but for the moment, each switch chip ignores events from
> other chips of the fabric, to keep the current behavior.
> 
> The next patch series will add support for cross-chip configuration of
> bridge ageing time, VLAN and MAC address databases operations, etc.

For this entire series:

Tested-by: Florian Fainelli <f.fainelli@gmail.com>

on a 7445 (bcm-sf2), normal bridging still worked, and bridging with
VLAN filtering also did, just like adding VLANs to user-facing ports
also did.

Great job!

> 
> 
> Vivien Didelot (20):
>   net: dsa: change scope of STP state setter
>   net: dsa: change scope of notifier call chain
>   net: dsa: change scope of bridging code
>   net: dsa: change scope of FDB handlers
>   net: dsa: change scope of MDB handlers
>   net: dsa: change scope of VLAN handlers
>   net: dsa: change scope of VLAN filtering setter
>   net: dsa: change scope of ageing time setter
>   net: dsa: move port state setters
>   net: dsa: move bridging routines
>   net: dsa: move VLAN filtering setter
>   net: dsa: move ageing time setter
>   net: dsa: move FDB handlers
>   net: dsa: move MDB handlers
>   net: dsa: move VLAN handlers
>   net: dsa: move notifier info to private header
>   net: dsa: add notifier for ageing time
>   net: dsa: add FDB notifier
>   net: dsa: add MDB notifier
>   net: dsa: add VLAN notifier
> 
>  include/net/dsa.h  |  10 --
>  net/dsa/Makefile   |   2 +-
>  net/dsa/dsa_priv.h |  83 +++++++++++++
>  net/dsa/port.c     | 260 +++++++++++++++++++++++++++++++++++++++
>  net/dsa/slave.c    | 354 +++++------------------------------------------------
>  net/dsa/switch.c   | 175 ++++++++++++++++++++++++++
>  6 files changed, 547 insertions(+), 337 deletions(-)
>  create mode 100644 net/dsa/port.c
> 


-- 
Florian

  parent reply	other threads:[~2017-05-22 20:01 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-19 21:00 Vivien Didelot
2017-05-19 21:00 ` [PATCH net-next 01/20] net: dsa: change scope of STP state setter Vivien Didelot
2017-05-22 19:23   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 02/20] net: dsa: change scope of notifier call chain Vivien Didelot
2017-05-22 19:24   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 03/20] net: dsa: change scope of bridging code Vivien Didelot
2017-05-22 19:24   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 04/20] net: dsa: change scope of FDB handlers Vivien Didelot
2017-05-22 19:25   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 05/20] net: dsa: change scope of MDB handlers Vivien Didelot
2017-05-22 19:26   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 06/20] net: dsa: change scope of VLAN handlers Vivien Didelot
2017-05-22 19:27   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 07/20] net: dsa: change scope of VLAN filtering setter Vivien Didelot
2017-05-22 19:27   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 08/20] net: dsa: change scope of ageing time setter Vivien Didelot
2017-05-22 19:29   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 09/20] net: dsa: move port state setters Vivien Didelot
2017-05-22 19:31   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 10/20] net: dsa: move bridging routines Vivien Didelot
2017-05-22 19:32   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 11/20] net: dsa: move VLAN filtering setter Vivien Didelot
2017-05-22 19:33   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 12/20] net: dsa: move ageing time setter Vivien Didelot
2017-05-22 19:34   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 13/20] net: dsa: move FDB handlers Vivien Didelot
2017-05-22 19:34   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 14/20] net: dsa: move MDB handlers Vivien Didelot
2017-05-22 19:35   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 15/20] net: dsa: move VLAN handlers Vivien Didelot
2017-05-22 19:36   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 16/20] net: dsa: move notifier info to private header Vivien Didelot
2017-05-22 19:37   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 17/20] net: dsa: add notifier for ageing time Vivien Didelot
2017-05-22 19:38   ` Florian Fainelli
2017-05-22 20:45     ` Vivien Didelot
2017-05-19 21:00 ` [PATCH net-next 18/20] net: dsa: add FDB notifier Vivien Didelot
2017-05-22 19:39   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 19/20] net: dsa: add MDB notifier Vivien Didelot
2017-05-22 19:39   ` Florian Fainelli
2017-05-19 21:00 ` [PATCH net-next 20/20] net: dsa: add VLAN notifier Vivien Didelot
2017-05-22 19:41   ` Florian Fainelli
2017-05-22 14:45 ` [PATCH net-next 00/20] net: dsa: distribute switch events David Miller
2017-05-22 14:48   ` Andrew Lunn
2017-05-22 20:01 ` Florian Fainelli [this message]
2017-05-22 23:31   ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ce634f83-35b0-abbf-a18b-61d3feccc097@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=kernel@savoirfairelinux.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=vivien.didelot@savoirfairelinux.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome