• Ido Schimmel's avatar
    mlxsw: spectrum: Introduce support for router interfaces · 99724c18
    Ido Schimmel authored
    Up until now we only supported bridged interfaces. Packets ingressing
    through the switch ports were either classified to FIDs (in the case of
    the VLAN-aware bridge) or vFIDs (in the case of VLAN-unaware bridges).
    The packets were then forwarded according to the FDB. Routing was done
    entirely in slowpath, by splitting the vFID range in two and using the
    lower 0.5K vFIDs as dummy bridges that simply flooded all incoming
    traffic to the CPU.
    
    Instead, allow packets to be routed in the device by creating router
    interfaces (RIFs) that will direct them to the router block.
    Specifically, the RIFs introduced here are Sub-port RIFs used for VLAN
    devices and port netdevs. Packets ingressing from the {Port / LAG ID, VID}
    with which the RIF was programmed with will be assigned to a special
    kind of FIDs called rFIDs and from there directed to the router.
    
    Create a RIF whenever the first IPv4 address was programmed on a VLAN /
    LAG / port netdev. Destroy it upon removal of the last IPv4 address.
    Receive these notifications by registering for the 'inetaddr'
    notification chain. A non-zero (10) priority is used for the
    notification block, so that RIFs will be created before routes are
    offloaded via FIB code.
    
    Note that another trigger for RIF destruction are CHANGEUPPER
    notifications causing the underlying FID's reference count to go down to
    zero. This can happen, for example, when a VLAN netdev with an IP address
    is put under bridge. While this configuration doesn't make sense it does
    cause the device and the kernel to get out of sync when the netdev is
    unbridged. We intend to address this in the future, hopefully in current
    cycle.
    
    Finally, Remove the lower 0.5K vFIDs, as they are deprecated by the RIFs,
    which will trap packets according to their DIP.
    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>
    99724c18
spectrum.h 14.1 KB