• Amit Cohen's avatar
    mlxsw: Configure ingress RIF classification · fea20547
    Amit Cohen authored
    Before layer 2 forwarding, the device classifies an incoming packet to
    a FID. The classification is done based on one of the following keys:
    
    1. FID
    2. VNI (after decapsulation)
    3. VID / {Port, VID}
    
    After classification, the FID is known, but also all the attributes of
    the FID, such as the router interface (RIF) via which a packet that
    needs to be routed will ingress the router block.
    
    In the legacy model, when a RIF was created / destroyed, it was
    firmware's responsibility to update it in the previously mentioned FID
    classification records. In the unified bridge model, this responsibility
    moved to software.
    
    The third classification requires to iterate over the FID's {Port, VID}
    list and issue SVFA write with the correct mapping table according to the
    port's mode (virtual or not). We never map multiple VLANs to the same FID
    using VID->FID mapping, so such a mapping needs to be performed once.
    
    When a new FID classification entry is configured and the FID already has
    a RIF, set the RIF as part of SVFA configuration.
    
    The reverse needs to be done when clearing a RIF from a FID. Currently,
    clearing is done by issuing mlxsw_sp_fid_rif_set() with a NULL RIF pointer.
    Instead, introduce mlxsw_sp_fid_rif_unset().
    
    Note that mlxsw_sp_fid_rif_set() is called after the RIF is fully
    operational, so it conforms to the internal requirement regarding
    SVFA.irif_v: "Must not be set for a non-enabled RIF".
    
    Do not set the ingress RIF for rFIDs, as the {Port, VID}->rFID entry is
    configured by firmware when legacy model is used, a next patch will
    handle this configuration for rFIDs and unified bridge model.
    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>
    fea20547
spectrum_fid.c 42.2 KB