macvlan: Use software path for offloaded local, broadcast, and multicast traffic
authorAlexander Duyck <alexander.h.duyck@intel.com>
Tue, 3 Apr 2018 21:16:09 +0000 (17:16 -0400)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 25 Apr 2018 15:26:19 +0000 (08:26 -0700)
commit81d4e91cd599ed7fd378ca5463d6d9b05214b8b2
treec02f50fca0ed14ab028413f16abd79967d82ad93
parent7d775f63470c3b6ddf34c770c973293ab925a7bb
macvlan: Use software path for offloaded local, broadcast, and multicast traffic

This change makes it so that we use a software path for packets that are
going to be locally switched between two macvlan interfaces on the same
device. In addition we resort to software replication of broadcast and
multicast packets instead of offloading that to hardware.

The general idea is that using the device for east/west traffic local to
the system is extremely inefficient. We can only support up to whatever the
PCIe limit is for any given device so this caps us at somewhere around 20G
for devices supported by ixgbe. This is compounded even further when you
take broadcast and multicast into account as a single 10G port can come to
a crawl as a packet is replicated up to 60+ times in some cases. In order
to get away from that I am implementing changes so that we handle
broadcast/multicast replication and east/west local traffic all in
software.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
drivers/net/macvlan.c