• Amit Cohen's avatar
    mlxsw: Add support for 802.1Q FID family · bf73904f
    Amit Cohen authored
    Using the legacy bridge model, there is no VID classification at egress
    for 802.1Q FIDs, which means that the VID is maintained.
    
    This behavior cause the limitation that 802.1Q FIDs cannot work with VXLAN.
    This limitation stems from the fact that a decapsulated VXLAN packet should
    not contain a VLAN tag. If such a packet was to egress from a local port
    using a 802.1Q FID, it would "maintain" its VLAN on egress, which is no
    VLAN at all.
    
    Currently 802.1Q FIDs are emulated in mlxsw driver using 802.1D FIDs. Using
    unified bridge model, there is a FID->VID mapping, so it is possible to
    stop emulating 802.1Q FIDs.
    
    The main changes are:
    1. Use 'SFGC.bridge_type' = 0, to separate between 802.1Q FIDs and
       802.1D FIDs.
    2. Use VLAN RIF instead of the emulated one (VLAN_EMU which is emulated
       using FID RIF).
    3. Create VID->FID mapping when the FID is created. Then when a new port
       is mapped to the FID, if it not in virtual mode, no new mapping is
       needed. Save the new port in 'port_vid_list', to be able to update a
       RIF in all {Port, VID}->FID mappings in case that the port will be in
       virtual mode later.
    4. Add a dedicated operation function per FID family to update RIF for
       VID->FID mappings. For 802.1d and rFID families, just return. For
       802.1q family, handle the global mapping which is created for new 802.1q
       FID.
    Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
    Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    bf73904f
spectrum_router.c 285 KB