[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20170928173415.15551-1-jiri@resnulli.us>
Date: Thu, 28 Sep 2017 19:34:08 +0200
From: Jiri Pirko <jiri@...nulli.us>
To: netdev@...r.kernel.org
Cc: davem@...emloft.net, yotamg@...lanox.com, idosch@...lanox.com,
mlxsw@...lanox.com, nikolay@...ulusnetworks.com, andrew@...n.ch,
dsa@...ulusnetworks.com, edumazet@...gle.com, willemb@...gle.com,
johannes.berg@...el.com, dcaratti@...hat.com, pabeni@...hat.com,
daniel@...earbox.net, f.fainelli@...il.com, fw@...len.de,
gfree.wind@....163.com
Subject: [patch net-next 0/7] mlxsw: Add support for partial multicast route offload
From: Jiri Pirko <jiri@...lanox.com>
Yotam says:
Previous patchset introduced support for offloading multicast MFC routes to
the Spectrum hardware. As described in that patchset, no partial offloading
is supported, i.e if a route has one output interface which is not a valid
offloadable device (e.g. pimreg device, dummy device, management NIC), the
route is trapped to the CPU and the forwarding is done in slow-path.
Add support for partial offloading of multicast routes, by letting the
hardware to forward the packet to all the in-hardware devices, while the
kernel ipmr module will continue forwarding to all other interfaces.
Similarly to the bridge, the kernel ipmr module will forward a marked
packet to an interface only if the interface has a different parent ID than
the packet's ingress interfaces.
The first patch introduces the offload_mr_fwd_mark skb field, which can be
used by offloading drivers to indicate that a packet had already gone
through multicast forwarding in hardware, similarly to the offload_fwd_mark
field that indicates that a packet had already gone through L2 forwarding
in hardware.
Patches 2 and 3 change the ipmr module to not forward packets that had
already been forwarded by the hardware, i.e. packets that are marked with
offload_mr_fwd_mark and the ingress VIF shares the same parent ID with the
egress VIF.
Patches 4, 5, 6 and 7 add the support in the mlxsw Spectrum driver for trap
and forward routes, while marking the trapped packets with the
offload_mr_fwd_mark.
Yotam Gigi (7):
skbuff: Add the offload_mr_fwd_mark field
ipv4: ipmr: Add the parent ID field to VIF struct
ipv4: ipmr: Don't forward packets already forwarded by hardware
mlxsw: acl: Introduce ACL trap and forward action
mlxsw: spectrum: Add trap for multicast trap-and-forward routes
mlxsw: spectrum: mr_tcam: Add trap-and-forward multicast route
mlxsw: spectrum: mr: Support trap-and-forward routes
.../mellanox/mlxsw/core_acl_flex_actions.c | 17 ++++++++
.../mellanox/mlxsw/core_acl_flex_actions.h | 2 +
drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 13 ++++++
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.c | 17 ++++----
drivers/net/ethernet/mellanox/mlxsw/spectrum_mr.h | 1 +
.../net/ethernet/mellanox/mlxsw/spectrum_mr_tcam.c | 8 ++++
drivers/net/ethernet/mellanox/mlxsw/trap.h | 2 +
include/linux/mroute.h | 2 +
include/linux/skbuff.h | 1 +
net/ipv4/ipmr.c | 46 +++++++++++++++++++---
10 files changed, 95 insertions(+), 14 deletions(-)
--
2.9.5
Powered by blists - more mailing lists