From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shannon Nelson Subject: Re: [Intel-wired-lan] [iwl next-queue PATCH 03/10] macvlan: Use software path for offloaded local, broadcast, and multicast traffic Date: Wed, 4 Apr 2018 09:53:26 -0700 Message-ID: References: <20180403211519.7880.70243.stgit@ahduyck-green-test.jf.intel.com> <20180403211609.7880.1015.stgit@ahduyck-green-test.jf.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org To: Alexander Duyck , intel-wired-lan@lists.osuosl.org, jeffrey.t.kirsher@intel.com Return-path: Received: from aserp2130.oracle.com ([141.146.126.79]:50906 "EHLO aserp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752475AbeDDQxc (ORCPT ); Wed, 4 Apr 2018 12:53:32 -0400 In-Reply-To: <20180403211609.7880.1015.stgit@ahduyck-green-test.jf.intel.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 4/3/2018 2:16 PM, Alexander Duyck wrote: > 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 > --- [...] > > @@ -4225,6 +4226,13 @@ static void ixgbe_configure_virtualization(struct ixgbe_adapter *adapter) > vmdctl |= IXGBE_VT_CTL_REPLEN; > IXGBE_WRITE_REG(hw, IXGBE_VT_CTL, vmdctl); > > + /* accept untagged packets until a vlan tag is > + * specifically set for the VMDQ queue/pool > + */ > + vmolr = IXGBE_VMOLR_AUPE; > + while (pool--) > + IXGBE_WRITE_REG(hw, IXGBE_VMOLR(VMDQ_P(pool)), vmolr); > + It took me a bit to figure out what untagged packets have to do with macvlan config. You might add to the comment that "no multicast or broadcast is configured for these queues". The driver part of this might be separated into a follow-on patch to make it clearer that this is done as a consequence of the macvlan.c changes. Or just roll them into your 4/10 patch. sln