All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/6] net: dsa: add fabric notifier
@ 2017-02-03 18:20 Vivien Didelot
  2017-02-03 18:20 ` [PATCH net-next 1/6] net: dsa: move netdevice notifier registration Vivien Didelot
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Vivien Didelot @ 2017-02-03 18:20 UTC (permalink / raw)
  To: netdev
  Cc: linux-kernel, kernel, David S. Miller, Florian Fainelli,
	Andrew Lunn, cphealy, Vivien Didelot

When a switch fabric is composed of multiple switch chips, these chips
must be programmed accordingly when an event occurred on one of them.

Examples of such event include hardware bridging: when a Linux bridge
spans interconnected chips, they must be programmed to allow external
ports to ingress frames on their internal ports.

Another example is cross-chip hardware VLANs. Switch chips in-between
interconnected bridge ports must also configure a given VLAN to allow
packets to pass through them.

In order to support that, this patchset introduces a non-intrusive
notifier mechanism. It adds a notifier head in every DSA switch tree
(the said fabric), and a notifier block in every DSA switch chip.

When an even occurs, it is chained to all notifiers of the fabric.
Switch chips can react accordingly if they are cross-chip capable.

On a dynamic debug enabled system, bridging a port in a multi-chip
fabric will print something like this (ZII Rev B board):

    # brctl addif br0 lan3
    mv88e6085 0.1:00: crosschip DSA port 1.0 bridged to br0
    mv88e6085 0.4:00: crosschip DSA port 1.0 bridged to br0
    # brctl delif br0 lan3
    mv88e6085 0.1:00: crosschip DSA port 1.0 unbridged from br0
    mv88e6085 0.4:00: crosschip DSA port 1.0 unbridged from br0

Currently only bridging events are added. A patchset introducing support
for cross-chip hardware bridging configuration in mv88e6xxx will follow
right after. Then events for switchdev operations are next on the line.

We should note that non-switchdev events do not support rolling-back
switch-wide operations. We'll have to work on closer integration with
switchdev for that, like introducing new attributes or objects, to
benefit from the prepare and commit phases.

Vivien Didelot (6):
  net: dsa: move netdevice notifier registration
  net: dsa: simplify netdevice events handling
  net: dsa: rollback bridging on error
  net: dsa: change state setter scope
  net: dsa: add switch notifier
  net: dsa: introduce bridge notifier

 include/net/dsa.h  |  17 ++++++++
 net/dsa/Makefile   |   1 +
 net/dsa/dsa.c      |  16 ++++---
 net/dsa/dsa2.c     |   6 +++
 net/dsa/dsa_priv.h |   8 +++-
 net/dsa/slave.c    | 121 +++++++++++++++++++++++++++++++++++------------------
 net/dsa/switch.c   |  85 +++++++++++++++++++++++++++++++++++++
 7 files changed, 205 insertions(+), 49 deletions(-)
 create mode 100644 net/dsa/switch.c

-- 
2.11.0

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2017-02-06 21:56 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-03 18:20 [PATCH net-next 0/6] net: dsa: add fabric notifier Vivien Didelot
2017-02-03 18:20 ` [PATCH net-next 1/6] net: dsa: move netdevice notifier registration Vivien Didelot
2017-02-03 18:20 ` [PATCH net-next 2/6] net: dsa: simplify netdevice events handling Vivien Didelot
2017-02-04  2:43   ` Florian Fainelli
2017-02-04 16:13     ` Vivien Didelot
2017-02-03 18:20 ` [PATCH net-next 3/6] net: dsa: rollback bridging on error Vivien Didelot
2017-02-03 18:20 ` [PATCH net-next 4/6] net: dsa: change state setter scope Vivien Didelot
2017-02-03 18:20 ` [PATCH net-next 5/6] net: dsa: add switch notifier Vivien Didelot
2017-02-03 18:20 ` [PATCH net-next 6/6] net: dsa: introduce bridge notifier Vivien Didelot
2017-02-04 17:55   ` Andrew Lunn
2017-02-04 18:26     ` Vivien Didelot
2017-02-04 18:30       ` Andrew Lunn
2017-02-06 21:56 ` [PATCH net-next 0/6] net: dsa: add fabric notifier David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.