linux/drivers/net/ethernet/mellanox/mlxsw
Ido Schimmel 1c6c6d221e mlxsw: spectrum: Mirror certain packets to CPU
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: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-08-26 13:13:37 -07:00
..
cmd.h mlxsw: pci: Add resources query implementation. 2016-07-24 23:11:58 -07:00
core_hwmon.c mlxsw: core: remove an unnecessary condition 2016-01-06 15:07:47 -05:00
core.c mlxsw: pci: Add resources query implementation. 2016-07-24 23:11:58 -07:00
core.h mlxsw: spectrum: Allow different traps to have different actions 2016-08-26 13:13:36 -07:00
emad.h mlxsw: Add interface to access registers and process events 2015-07-30 00:05:00 -07:00
item.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-10-20 06:08:27 -07:00
Kconfig mlxsw: spectrum: Introduce support for Data Center Bridging (DCB) 2016-04-06 17:24:18 -04:00
Makefile mlxsw: Introduce simplistic KVD linear area manager 2016-07-05 09:06:30 -07:00
pci.c mlxsw: pci: Add max span resources to resources query 2016-07-24 23:11:59 -07:00
pci.h mlxsw: pci: Implement reset done check 2016-03-13 22:30:01 -04:00
port.h mlxsw: spectrum: Introduce port splitting 2016-03-01 16:07:31 -05:00
reg.h mlxsw: spectrum: Limit number of FDB records per learning session 2016-08-24 09:41:11 -07:00
spectrum_buffers.c mlxsw: spectrum: Allow packets to be trapped from any PG 2016-08-17 19:18:28 -04:00
spectrum_dcb.c mlxsw: spectrum: Do not override PAUSE settings 2016-08-08 12:57:27 -07:00
spectrum_kvdl.c mlxsw: Introduce simplistic KVD linear area manager 2016-07-05 09:06:30 -07:00
spectrum_router.c mlxsw: spectrum_router: Fix use after free 2016-08-14 21:32:05 -07:00
spectrum_switchdev.c mlxsw: spectrum: Remove unnecessary check in FDB processing 2016-08-24 09:41:12 -07:00
spectrum.c mlxsw: spectrum: Mirror certain packets to CPU 2016-08-26 13:13:37 -07:00
spectrum.h mlxsw: spectrum: Configure learning for VLAN-aware bridge port 2016-08-24 09:41:12 -07:00
switchx2.c mlxsw: pci: Add resources query implementation. 2016-07-24 23:11:58 -07:00
trap.h mlxsw: spectrum: Trap loop-backed packets 2016-08-17 19:18:27 -04:00
txheader.h mlxsw: spectrum: Add initial support for Spectrum ASIC 2015-10-16 07:15:23 -07:00