On Tue, Mar 01, 2022 at 11:03:12AM +0100, Tobias Waldekranz wrote: > 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@xxxxxxxxxxxxxx> > --- > +void br_mst_vlan_set_state(struct net_bridge_port *p, struct net_bridge_vlan *v, > + u8 state) Function can be static. > +{ > + struct net_bridge_vlan_group *vg = nbp_vlan_group(p); > + > + if (v->state == state) > + return; > + > + br_vlan_set_state(v, state); > + > + if (v->vid == vg->pvid) > + br_vlan_set_pvid_state(vg, state); > +}