• Ido Schimmel's avatar
    mlxsw: spectrum: Replace vPorts with Port-VLAN · c57529e1
    Ido Schimmel authored
    As explained in the cover letter, since the introduction of the bridge
    offload in the mlxsw driver, information related to the offloaded bridge
    and bridge ports was stored in the individual port struct,
    mlxsw_sp_port.
    
    This lead to a bloated struct storing both physical properties of the
    port (e.g., autoneg status) as well as logical properties of an upper
    bridge port (e.g., learning, mrouter indication). While this might work
    well for simple devices, it proved to be hard to extend when stacked
    devices were taken into account and more advanced use-cases (e.g., IGMP
    snooping) considered.
    
    This patch removes the excess information from the above struct and
    instead stores it in more appropriate structs that represent the bridge
    port, the bridge itself and a VLAN configured on the bridge port.
    
    The membership of a port in a bridge is denoted using the Port-VLAN
    struct, which points to the bridge port and also member in the bridge
    VLAN group of the VLAN it represents. This allows us to completely
    remove the vPort abstraction and consolidate many of the code paths
    relating to VLAN-aware and unaware bridges.
    
    Note that the FID / vFID code is currently duplicated, but this will
    soon go away when the common FID core will be introduced.
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c57529e1
spectrum_switchdev.c 64 KB