• Yotam Gigi's avatar
    mlxsw: spectrum: Add the multicast routing offloading logic · c011ec1b
    Yotam Gigi authored
    Add the multicast router offloading logic, which is in charge of handling
    the VIF and MFC notifications and translating it to the hardware logic API.
    
    The offloading logic has to overcome several obstacles in order to safely
    comply with the kernel multicast router user API:
     - It must keep track of the mapping between VIFs to netdevices. The user
       can add an MFC cache entry pointing to a VIF, delete the VIF and add
       re-add it with a different netdevice. The offloading logic has to handle
       this in order to be compatible with the kernel logic.
     - It must keep track of the mapping between netdevices to spectrum RIFs,
       as the current hardware implementation assume having a RIF for every
       port in a multicast router.
     - It must handle routes pointing to pimreg device to be trapped to the
       kernel, as the packet should be delivered to userspace.
     - It must handle routes pointing tunnel VIFs. The current implementation
       does not support multicast forwarding to tunnels, thus routes that point
       to a tunnel should be trapped to the kernel.
     - It must be aware of proxy multicast routes, which include both (*,*)
       routes and duplicate routes. Currently proxy routes are not offloaded
       and trigger the abort mechanism: removal of all routes from hardware and
       triggering the traffic to go through the kernel.
    
    The multicast routing offloading logic also updates the counters of the
    offloaded MFC routes in a periodic work.
    Signed-off-by: default avatarYotam Gigi <yotamg@mellanox.com>
    Reviewed-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>
    c011ec1b
spectrum_mr.c 28.8 KB