• Ido Schimmel's avatar
    mlxsw: spectrum: Mirror certain packets to CPU · 1c6c6d22
    Ido Schimmel authored
    Instead of trapping certain packets to the CPU and then relying on it to
    flood them we can instead make the device mirror them.
    
    The following packet types are mirrored:
    
    * DHCP: Broadcast packets that should be flooded by the device, but also
    trapped in case CPU is running the DHCP server.
    
    * IGMP query: Multicast packets that need to be forwarded to other
    bridge ports, but also trapped so that receiving netdev will be marked
    as a router port by the bridge driver.
    
    * ARP request: Broadcast packets that should be forwarded to other
    bridge ports, but also trapped in case requested IP is of the local
    machine.
    
    * ARP response: Unicast packets that should be forwarded by the bridge
    but also trapped in case response is directed at us.
    
    Set the trap action of such packets to mirror and mark them using
    'offload_fwd_mark' to prevent the bridge driver from forwarding them
    itself.
    
    Note that OSPF packets are also marked despite their action being trap.
    The reason for this is that the device traps such packets in the
    pipeline after they were already flooded.
    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>
    1c6c6d22
spectrum.c 118 KB