• Tobias Waldekranz's avatar
    net: dsa: mv88e6xxx: Disentangle STU from VTU · 49c98c1d
    Tobias Waldekranz authored
    In early LinkStreet silicon (e.g. 6095/6185), the per-VLAN STP states
    were kept in the VTU - there was no concept of a SID. Later, the
    information was split into two tables, where the VTU only tracked
    memberships and deferred the STP state tracking to the STU via a
    pointer (SID). This meant that a group of VLANs could share the same
    STU entry. Most likely, this was done to align with MSTP (802.1Q-2018,
    Clause 13), which is built on this principle.
    
    While the VTU is still 4k lines on most devices, the STU is capped at
    64 entries. This means that the current stategy, updating STU info
    whenever a VTU entry is updated, can not easily support MSTP because:
    
    - The maximum number of VIDs would also be capped at 64, as we would
      have to allocate one SID for every VTU entry - even if many VLANs
      would effectively share the same MST.
    
    - MSTP updates would be unnecessarily slow as you would have to
      iterate over all VLANs that share the same MST.
    
    In order to support MSTP offloading in the future, manage the STU as a
    separate entity from the VTU.
    
    Only add support for newer hardware with separate VTU and
    STU. VTU-only devices can also be supported, but essentially this
    requires a software implementation of an STU (fanning out state
    changed to all VLANs tied to the same MST).
    Signed-off-by: default avatarTobias Waldekranz <tobias@waldekranz.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    49c98c1d
global1.h 15.6 KB