net: bridge: mst: Multiple Spanning Tree (MST) mode
authorTobias Waldekranz <tobias@waldekranz.com>
Wed, 16 Mar 2022 15:08:43 +0000 (16:08 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 17 Mar 2022 23:49:57 +0000 (16:49 -0700)
commitec7328b59176227216c461601c6bd0e922232a9b
tree42fbfdf30ce41467325b69236a234cc200154e6d
parent54744510fa9c056d388a019c4518a93956bc8db5
net: bridge: mst: Multiple Spanning Tree (MST) mode

Allow the user to switch from the current per-VLAN STP mode to an MST
mode.

Up to this point, per-VLAN STP states where always isolated from each
other. This is in contrast to the MSTP standard (802.1Q-2018, Clause
13.5), where VLANs are grouped into MST instances (MSTIs), and the
state is managed on a per-MSTI level, rather that at the per-VLAN
level.

Perhaps due to the prevalence of the standard, many switching ASICs
are built after the same model. Therefore, add a corresponding MST
mode to the bridge, which we can later add offloading support for in a
straight-forward way.

For now, all VLANs are fixed to MSTI 0, also called the Common
Spanning Tree (CST). That is, all VLANs will follow the port-global
state.

Upcoming changes will make this actually useful by allowing VLANs to
be mapped to arbitrary MSTIs and allow individual MSTI states to be
changed.

Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/uapi/linux/if_bridge.h
net/bridge/Makefile
net/bridge/br.c
net/bridge/br_input.c
net/bridge/br_mst.c [new file with mode: 0644]
net/bridge/br_private.h
net/bridge/br_stp.c
net/bridge/br_vlan.c
net/bridge/br_vlan_options.c