linux/drivers/net
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
..
appletalk drivers: net: appletalk: use setup_timer() helper. 2017-09-21 11:44:43 -07:00
arcnet drivers: net: arcnet: use setup_timer() helper. 2017-09-21 11:44:42 -07:00
bonding net: bonding: fix tlb_dynamic_lb default value 2017-09-12 20:58:12 -07:00
caif drivers: net: caif: use setup_timer() helper. 2017-09-21 11:44:43 -07:00
can drivers: net: can: sja1000: use setup_timer() helper. 2017-09-21 11:44:43 -07:00
cris net/{mii, smsc}: Make mii_ethtool_get_link_ksettings and smc_netdev_get_ecmd return void 2017-06-05 11:00:42 -04:00
dsa net: dsa: use dedicated CPU port 2017-09-21 15:15:58 -07:00
ethernet mlxsw: spectrum: Add the multicast routing offloading logic 2017-09-27 11:33:28 -07:00
fddi net: defxx: constify eisa_device_id 2017-08-19 17:13:41 -07:00
fjes networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
hamradio drivers: net: hamradio: use setup_timer() helper. 2017-09-21 11:44:43 -07:00
hippi drivers: net: hippi: use setup_timer() helper. 2017-09-21 11:44:41 -07:00
hyperv hv_netvsc: Fix the real number of queues of non-vRSS cases 2017-09-25 20:20:51 -07:00
ieee802154 ieee802154: atusb: Driver for Busware HUL dongle 2017-09-20 13:37:16 +02:00
ipvlan Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next 2017-09-03 17:08:42 -07:00
phy Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-09-23 10:16:53 -07:00
plip
ppp ppp: fix xmit recursion detection on ppp channels 2017-08-08 21:06:11 -07:00
slip drivers: net: slip: use setup_timer() helper. 2017-09-21 11:44:40 -07:00
team team: fall back to hash if table entry is empty 2017-09-19 16:18:58 -07:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-09-23 10:16:53 -07:00
vmxnet3 vmxnet3: avoid format strint overflow warning 2017-07-14 09:03:11 -07:00
wan net: wan : hdlc: use setup_timer() helper 2017-09-21 15:48:46 -07:00
wimax networking: make skb_push & __skb_push return void pointers 2017-06-16 11:48:40 -04:00
wireless drivers: net: ath6kl: use setup_timer() helper. 2017-09-21 11:44:42 -07:00
xen-netback drivers: net: xen-netback: use setup_timer() helper. 2017-09-21 11:44:41 -07:00
dummy.c net: remove MTU limits for dummy and ifb device 2017-09-25 16:26:09 -07:00
eql.c drivers: net: eql: use setup_timer() helper. 2017-09-21 11:44:42 -07:00
geneve.c geneve: use netlink_ext_ack for error reporting in rtnl operations 2017-08-11 13:45:02 -07:00
gtp.c gtp: Initialize 64-bit per-cpu stats correctly 2017-08-01 20:06:07 -07:00
ifb.c net: remove MTU limits for dummy and ifb device 2017-09-25 16:26:09 -07:00
Kconfig x86/lguest: Remove lguest support 2017-08-24 09:57:28 +02:00
LICENSE.SRC
loopback.c net: Fix inconsistent teardown and release of private netdev state. 2017-06-07 15:53:24 -04:00
macsec.c macsec: add genl family module alias 2017-08-22 14:25:50 -07:00
macvlan.c macvlan: code refine to check data before using 2017-09-20 13:46:45 -07:00
macvtap.c macvlan/macvtap: Remove NETIF_F_UFO advertisement. 2017-07-17 09:52:57 -07:00
Makefile irda: move drivers/net/irda to drivers/staging/irda/drivers 2017-08-28 16:42:57 -07:00
mdio.c
mii.c net/{mii, smsc}: Make mii_ethtool_get_link_ksettings and smc_netdev_get_ecmd return void 2017-06-05 11:00:42 -04:00
netconsole.c netconsole: Remove duplicate "netconsole: " logging prefix 2017-06-13 12:57:40 -04:00
nlmon.c net: add netlink_ext_ack argument to rtnl_link_ops.validate 2017-06-26 23:13:22 -04:00
ntb_netdev.c ntb_netdev: set the net_device's parent 2017-07-06 11:30:08 -04:00
rionet.c net: convert sk_buff.users from atomic_t to refcount_t 2017-07-01 07:39:07 -07:00
sb1000.c
Space.c
sungem_phy.c drivers/net/sungem: add const to mii_phy_ops structures 2017-06-08 15:32:47 -04:00
tap.c tun/tap: use paren's with sizeof 2017-08-16 11:01:57 -07:00
tun.c bpf: add meta pointer for direct access 2017-09-26 13:36:44 -07:00
veth.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-06-30 12:43:08 -04:00
virtio_net. virtio-net: support XDP_REDIRECT 2017-09-20 14:27:52 -07:00
virtio_net.c bpf: add meta pointer for direct access 2017-09-26 13:36:44 -07:00
vrf.c net: vrf: remove skb_dst_force() after skb_dst_set() 2017-09-21 20:36:32 -07:00
vsockmon.c net: Fix inconsistent teardown and release of private netdev state. 2017-06-07 15:53:24 -04:00
vxlan.c vxlan: factor out VXLAN-GPE next protocol 2017-08-29 15:16:52 -07:00
xen-netfront.c xen-netfront: be more drop monitor friendly 2017-08-30 15:56:16 -07:00