• Petr Machata's avatar
    mlxsw: spectrum_fid: Add support for rFID family in CFF flood mode · 72a4cedb
    Petr Machata authored
    In this patch, add the artifacts for the rFID family that works in CFF
    flood mode.
    
    The same that was said about PGT organization and lookup in bridge FID
    families applies for the rFID family as well. The main difference lies in
    the fact that in the controlled flood mode, the FW was taking care of
    maintaining the PGT tables for rFIDs. In CFF mode, the responsibility
    shifts to the driver.
    
    All rFIDs are based off either a front panel port, or a LAG port. For those
    based off ports, we need to maintain at worst one PGT block for each port,
    for those based off LAGs, one PGT block per LAG. This reflects in the
    pgt_size callback, which determines the PGT footprint based on number of
    ports and the LAG capacity.
    
    A number of FIDs may end up using the same PGT base. Unlike with bridges,
    where membership of a port in a given FID is highly dynamic, an rFID based
    of a port will just always need to flood to that port.
    
    Both the port and the LAG subtables need to be actively maintained. To that
    end, the CFF rFID family implements fid_port_init and fid_port_fini
    callbacks, which toggle the necessary bits.
    
    Both FID-MID translation and SFMR packing then point into either the port
    or the LAG subtable, to the block that corresponds to a given port or a
    given LAG, depending on what port the RIF bound to the rFID uses.
    
    As in the previous patch, the way CFF flood mode organizes PGT accesses
    allows for much more smarts and dynamism. As in the previous patch, we
    rather aim to keep things simple and static.
    Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
    Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Link: https://lore.kernel.org/r/962deb4367585d38250e80c685a34735c0c7f3ad.1701183892.git.petrm@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    72a4cedb
spectrum_fid.c 67.4 KB