From: ebiederm@xmission•com (Eric W. Biederman)
To: Ben Greear <greearb@candelatech•com>
Cc: Ben Hutchings <bhutchings@solarflare•com>,
John Fastabend <john.r.fastabend@intel•com>,
David Miller <davem@davemloft•net>,
netdev@vger•kernel.org, Shradha Shah <sshah@solarflare•com>,
Patrick McHardy <kaber@trash•net>
Subject: Re: [PATCH net] macvlan: Disable LRO on lowerdev; warn if it's turned back on
Date: Sat, 25 Feb 2012 14:07:55 -0800 [thread overview]
Message-ID: <87fwdytvlw.fsf@xmission.com> (raw)
In-Reply-To: <4F4410C7.2000500@candelatech.com> (Ben Greear's message of "Tue, 21 Feb 2012 13:46:47 -0800")
Ben Greear <greearb@candelatech•com> writes:
> On 02/21/2012 12:28 PM, Ben Hutchings wrote:
>> On Tue, 2012-02-21 at 12:01 -0800, John Fastabend wrote:
>>> On 2/21/2012 11:13 AM, Ben Hutchings wrote:
>>>> Large Receive Offload (LRO) is only appropriate for packets that are
>>>> destined for the host, and should be disabled if received packets may
>>>> be forwarded.
>>>>
>>>> Further, macvtap_skb_to_vnet_hdr() will BUG() on a packet received
>>>> with LRO (but not GRO).
>>>>
>>>> Signed-off-by: Ben Hutchings<bhutchings@solarflare•com>
>>>> ---
>>>> I'm not really familiar with macvlan so I'm not certain that this should
>>>> be applied to all modes.
>>>>
>>>> Ben.
>>>>
>>>> drivers/net/macvlan.c | 7 +++++++
>>>> 1 files changed, 7 insertions(+), 0 deletions(-)
>>>>
>>>
>>> But this patch assumes the macvlan is forwarding traffic to a guest
>>> via macvtap. Which is an assumption that may not be true.
>>>
>>> It seems more appropriate for the macvtap driver to do these checks
>>> after all its the driver that may BUG() with LRO.
>>
>> That's what I thought at first, but then I looked through what macvlan
>> was doing and it certainly appears to re-transmit skbs in all modes.
>> That's not valid when gso_size != 0 and gso_type == 0.
>
> You can put an IP on a mac-vlan and receive packets on it like
> normal Ethernet interfaces. They wouldn't be re-transmitted
> in that case, would they?
Long story short.
With the macvlan driver the normal case is not to turn packets around
but to go directly to the nic or to come directly from the nic.
In the case where packets are turned around and packets go from one
software interface the design is that the drivers are supposed to
do software emulation of hardware features like gro so that we don't
have to take a performance hit when it happens.
If we are not doing proper software emulation of features like gro
in macvtap that is a problem.
I am fuzzy about all of the details but last I looked we were doing
proper software emulation of the features when just macvlan was
involved. I also remember that the macvtap driver really wanted
gro so that it could work efficiently with emulated hardware.
So I don't know why people are having a problem, but the correct
solution is not to give up but to fix the silly software side of
the drivers to actually handle things properly.
Disabling LRO on the lowerdev just so we can avoid writing the
support in macvtap just sounds sad.
Eric
next prev parent reply other threads:[~2012-02-25 22:08 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-21 19:13 [PATCH net] macvlan: Disable LRO on lowerdev; warn if it's turned back on Ben Hutchings
2012-02-21 20:01 ` John Fastabend
2012-02-21 20:28 ` Ben Hutchings
2012-02-21 21:46 ` Ben Greear
2012-02-25 22:07 ` Eric W. Biederman [this message]
2012-02-25 22:49 ` Ben Hutchings
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87fwdytvlw.fsf@xmission.com \
--to=ebiederm@xmission$(echo .)com \
--cc=bhutchings@solarflare$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=greearb@candelatech$(echo .)com \
--cc=john.r.fastabend@intel$(echo .)com \
--cc=kaber@trash$(echo .)net \
--cc=netdev@vger$(echo .)kernel.org \
--cc=sshah@solarflare$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox