linux_dsm_epyc7002/drivers/net/ethernet/mellanox/mlxsw
Yotam Gigi c011ec1bbf mlxsw: spectrum: Add the multicast routing offloading logic
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: Yotam Gigi <yotamg@mellanox.com>
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-09-27 11:33:28 -07:00
..
cmd.h mlxsw: pci: Remove unused bit 2017-03-08 23:17:38 -08:00
core_acl_flex_actions.c mlxsw: spectrum_acl: Propagate errors from mlxsw_afa_block_jump/continue 2017-09-26 20:26:45 -07:00
core_acl_flex_actions.h mlxsw: spectrum_acl: Propagate errors from mlxsw_afa_block_jump/continue 2017-09-26 20:26:45 -07:00
core_acl_flex_keys.c mlxsw: core: Introduce flexible keys support 2017-02-03 16:35:41 -05:00
core_acl_flex_keys.h mlxsw: acl: Add ip tos acl element 2017-07-17 09:18:23 -07:00
core_hwmon.c mlxsw: core: Zero payload buffers for couple of registers 2016-10-30 16:50:17 -04:00
core_thermal.c mlxsw: core: Implement thermal zone 2016-11-22 10:04:19 -05:00
core.c mlxsw: core: Use correct EMAD transaction ID in debug message 2017-08-02 16:58:49 -07:00
core.h mlxsw: core: Create the mlxsw_fw_rev struct 2017-05-25 17:46:17 -04:00
emad.h mlxsw: Add interface to access registers and process events 2015-07-30 00:05:00 -07:00
i2c.c mlxsw: Fix mlxsw_i2c_write return value 2017-01-09 14:35:13 -05:00
i2c.h mlxsw: Introduce support for I2C bus 2016-11-16 23:29:04 -05:00
ib.h mlxsw: switchx2: Add IB port support 2016-10-30 16:50:17 -04:00
item.h mlxsw: item: Add helpers for getting pointer into payload for char buffer item 2017-02-03 16:35:38 -05:00
Kconfig mlxsw: spectrum_router: Add support for IPv6 routes addition / deletion 2017-08-03 15:36:00 -07:00
Makefile mlxsw: spectrum: Add the multicast routing offloading logic 2017-09-27 11:33:28 -07:00
minimal.c mlxsw: minimal: Add I2C support for Mellanox ASICs 2016-11-16 23:29:04 -05:00
pci_hw.h mlxsw: pci: Fix size of trap_id field in CQE 2017-06-06 12:45:23 -04:00
pci.c mlxsw: convert to pci_alloc_irq_vectors 2017-04-11 11:16:03 -04:00
pci.h mlxsw: switchib: Introduce SwitchIB and SwitchIB silicon driver 2016-10-30 16:50:17 -04:00
port.h mlxsw: Query maximum number of ports from firmware 2017-03-24 13:53:28 -07:00
reg.h mlxsw: reg: Add support for counters on RATR 2017-09-26 20:04:35 -07:00
resources.h mlxsw: resources: Add multicast ERIF list entries resource 2017-09-19 14:21:40 -07:00
spectrum_acl_flex_actions.c mlxsw: spectrum: Move ACL flexible actions instance to spectrum 2017-09-19 14:21:40 -07:00
spectrum_acl_flex_actions.h mlxsw: spectrum: Move ACL flexible actions instance to spectrum 2017-09-19 14:21:40 -07:00
spectrum_acl_flex_keys.h mlxsw: spectrum: Add tos to the ipv4 acl block 2017-07-17 09:18:23 -07:00
spectrum_acl_tcam.c mlxsw: spectrum_acl: Propagate errors from mlxsw_afa_block_jump/continue 2017-09-26 20:26:45 -07:00
spectrum_acl.c mlxsw: spectrum_acl: Propagate errors from mlxsw_afa_block_jump/continue 2017-09-26 20:26:45 -07:00
spectrum_buffers.c mlxsw: spectrum_buffer: Reduce scope of shared buffer struct 2017-05-17 14:06:54 -04:00
spectrum_cnt.c mlxsw: spectrum: Support for counters on router interfaces 2017-03-28 17:11:55 -07:00
spectrum_cnt.h mlxsw: spectrum: Support for counters on router interfaces 2017-03-28 17:11:55 -07:00
spectrum_dcb.c mlxsw: spectrum: Do not override PAUSE settings 2016-08-08 12:57:27 -07:00
spectrum_dpipe.c mlxsw: spectrum_dpipe: Add support for controlling nexthop counters 2017-09-26 20:04:35 -07:00
spectrum_dpipe.h mlxsw: spectrum_dpipe: Add initial support for the router adjacency table 2017-09-26 20:04:35 -07:00
spectrum_fid.c mlxsw: spectrum: Improve IPv6 unregistered multicast flooding 2017-07-17 09:19:39 -07:00
spectrum_flower.c mlxsw: spectrum_flower: Offload "ok" termination action 2017-09-26 20:26:45 -07:00
spectrum_ipip.c mlxsw: spectrum_router: Support GRE tunnels 2017-09-03 20:23:26 -07:00
spectrum_ipip.h mlxsw: spectrum_router: Support GRE tunnels 2017-09-03 20:23:26 -07:00
spectrum_kvdl.c mlxsw: spectrum_kvdl: Cosmetic kvdl allocator API change 2017-03-25 19:56:15 -07:00
spectrum_mr.c mlxsw: spectrum: Add the multicast routing offloading logic 2017-09-27 11:33:28 -07:00
spectrum_mr.h mlxsw: spectrum: Add the multicast routing offloading logic 2017-09-27 11:33:28 -07:00
spectrum_router.c mlxsw: spectrum_dpipe: Add support for controlling nexthop counters 2017-09-26 20:04:35 -07:00
spectrum_router.h mlxsw: spectrum_dpipe: Add support for controlling nexthop counters 2017-09-26 20:04:35 -07:00
spectrum_switchdev.c mlxsw: spectrum_switchdev: Consider mrouter status for mdb changes 2017-09-20 18:03:13 -07:00
spectrum.c mlxsw: spectrum: Add multicast router traps and trap groups 2017-09-19 14:21:40 -07:00
spectrum.h mlxsw: spectrum: Add the multicast routing offloading logic 2017-09-27 11:33:28 -07:00
switchib.c mlxsw: make mlxsw_config_profile const 2017-08-11 14:57:04 -07:00
switchx2.c mlxsw: make mlxsw_config_profile const 2017-08-11 14:57:04 -07:00
trap.h mlxsw: spectrum: Add multicast router traps and trap groups 2017-09-19 14:21:40 -07:00
txheader.h mlxsw: spectrum: Add initial support for Spectrum ASIC 2015-10-16 07:15:23 -07:00