• Ido Schimmel's avatar
    mlxsw: spectrum: Refactor FDB flushing logic · fe3f6d14
    Ido Schimmel authored
    FDB entries are learned using {Port / LAG ID, FID} and therefore should
    be flushed whenever a port (vPort) leaves its FID (vFID).
    
    However, when the bridge port is a LAG device (or a VLAN device on top),
    then FDB flushing is conditional. Ports removed from such LAG
    configurations must not trigger flushing, as other ports might still be
    members in the LAG and therefore the bridge port is still active.
    
    The decision whether to flush or not was previously computed in the
    netdevice notification block, but in order to flush the entries when a
    port leaves its FID this decision should be computed there.
    
    Strip the notification block from this logic and instead move it to one
    FDB flushing function that is invoked from both the FID / vFID leave
    functions.
    
    When port isn't member in LAG, FDB flushing should always occur.
    Otherwise, it should occur only when the last port (vPort) member in the
    LAG leaves the FID (vFID).
    
    This will allow us - in the next patch - to simplify the cleanup code
    paths that are hit whenever the topology above the port netdevs changes.
    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>
    fe3f6d14
spectrum.c 91.5 KB