All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nicolas de Pesloüan" <nicolas.2p.debian@gmail.com>
To: Jesse Gross <jesse@nicira.com>
Cc: Changli Gao <xiaosuo@gmail.com>, Jiri Pirko <jpirko@redhat.com>,
	David Miller <davem@davemloft.net>,
	netdev@vger.kernel.org, shemminger@linux-foundation.org,
	kaber@trash.net, fubar@us.ibm.com, eric.dumazet@gmail.com,
	andy@greyhouse.net, ebiederm@xmission.com
Subject: Re: [patch net-next-2.6 v2] net: vlan: make non-hw-accel rx path similar to hw-accel
Date: Sun, 22 May 2011 04:59:49 +0200	[thread overview]
Message-ID: <4DD87C25.4030701@gmail.com> (raw)
In-Reply-To: <BANLkTinqFJa-B7E7tonzOKGV4etZHUkUug@mail.gmail.com>

Le 21/05/2011 19:54, Jesse Gross a écrit :
> On Sat, May 21, 2011 at 6:17 AM, Nicolas de Pesloüan
> <nicolas.2p.debian@gmail.com>  wrote:
>> Le 21/05/2011 12:43, Changli Gao a écrit :
>>>
>>> On Sat, May 21, 2011 at 3:29 PM, Jiri Pirko<jpirko@redhat.com>    wrote:
>>>>
>>>> I do not see a reason why to not emulate that. To make paths as much
>>>> similar as they can be, that is the point of this patch.
>>>>
>>>> I think it would be better to fix an issue you are pointing at
>>>> rather that revert this.
>>>>
>>>
>>> In my opinion, the hardware accelerated VLAN RX is just a special case
>>> of the non hardware accelerated VLAN RX with header reordering. For
>>> promiscuous NICs and bridges, hw-accel-vlan-rx is just disabled.
>>
>> I strongly agree with that.
>>
>> The fact that a skb holds a VLAN tag is not a good enough reason to always
>> remove this tag before giving the skb to protocol handlers.
>>
>> If the user ask for VLAN tag removal, we should remove the tag, possibly
>> using hw-accel untagging if available else software untagging. And if the
>> user doesn't ask for tag removal, we should not untag.
>>
>> In other words, if the user doesn't setup any vlan interface on top of
>> another interface, there is no reason to untag the skb : both hw-accel
>> untagging and software untagging should be disabled.
>
> The problem is that for most hardware vlan stripping is actually the
> common case, not the exception.  When you try to disable it frequently
> there are hidden restrictions that cause problems.  A few examples:
> * Some NICs can't disable stripping at all.
> * Some NICs can only do tag insertion if stripping is configured on receive.
> * Some NICs can only do hardware offloads (checksum, TSO) if tag
> insertion is used on transmit.
>
> So if you are using vlans then acceleration is pretty much a fact of
> life and the best possible way we can deal with it is to make the
> accelerated and non-accelerated cases behave as similarly as possible.
>
> Before we were trying to dynamically enable/disable vlan acceleration
> based on whether a vlan group was configured and that worked fine for
> vlan devices because acceleration was enabled for it.  However, it
> caused an endless series of problems for other devices (such as
> bridging while trunking vlans) due to lost tags, driver bugs, and the
> restrictions above.  Some of these can be fixed with driver changes
> but the fact is that dynamically changing behavior just leads to
> problems for the less common cases that are supposedly being fixed.
> It's much better to do the same thing all the time.

Thanks for clarifying.

So, because many limited/buggy hardware exist, we must mimic the behavior in software. 'Sounds good 
to me.

And because some setups may still require the skb not to be untagged, may be we need the ability to 
re-tag the skb in some situations... When a protocol handler or rx_handler is explicitly registered 
on a net_device which expect to receive tagged skb, we should deliver tagged skb to it... Arguably, 
this may sound incredible for the general case, but may be required for not-so-special cases like 
bridge or protocol analyzer.

Of course, I don't say we should always re-tag: if no protocol handler nor rx_handler were 
registered on the parent interface, we don't need the extra work of re-tagging.

What I say is that it shouldn't be the job of protocol handlers or rx_handlers that expect the skb 
to be tagged to fix the improper untagging. A generic feature should do it when necessary.

And all this being said, it doesn't mean that we should pollute __netif_receive_skb with special 
code for vlan handling.

May be, as suggested by Eric W. Biederman in the V1 thread for this patch, software untagging for 
the first level of header should happen before __netif_receive_skb if we only try to mimic hardware 
behavior.

And possible later untagging (due to vlan nesting) should be done generically inside 
__netif_receive_skb, using rx_handler when appropriate. This would cleanup the general case where no 
vlan is involved at all.

	Nicolas.

  parent reply	other threads:[~2011-05-22  2:59 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-08  5:48 [patch net-next-2.6 v2] net: vlan: make non-hw-accel rx path similar to hw-accel Jiri Pirko
2011-04-12 21:16 ` David Miller
2011-05-21  1:11   ` Changli Gao
2011-05-21  7:29     ` Jiri Pirko
2011-05-21 10:43       ` Changli Gao
2011-05-21 13:17         ` Nicolas de Pesloüan
2011-05-21 17:54           ` Jesse Gross
2011-05-21 22:15             ` Stephen Hemminger
2011-05-22  2:59             ` Nicolas de Pesloüan [this message]
2011-05-22  6:29               ` Jiri Pirko
2011-05-22  6:34                 ` Eric W. Biederman
2011-05-22  8:34                   ` Nicolas de Pesloüan
2011-05-22  8:52                     ` Michał Mirosław
2011-05-22  9:10                       ` Nicolas de Pesloüan
2011-05-22  9:20                         ` Michał Mirosław
2011-05-22  9:36                           ` Jiri Pirko
2011-05-22  9:53                             ` Nicolas de Pesloüan
2011-05-22 10:04                               ` Michał Mirosław
2011-05-22 16:11                   ` Jesse Gross
2011-05-22 18:24                     ` Eric W. Biederman
2011-05-22 19:33                       ` Eric W. Biederman
2011-05-22 19:39                     ` [PATCH 1/3] vlan: Do not support clearing VLAN_FLAG_REORDER_HDR Eric W. Biederman
2011-05-22 19:40                       ` [PATCH 2/3] vlan: Always strip the vlan header in vlan_untag Eric W. Biederman
2011-05-22 19:42                         ` [PATCH 3/3] vlan: Simplify the code now that VLAN_FLAG_REORDER_HDR is always set Eric W. Biederman
2011-06-09 10:59                           ` Jiri Pirko
2011-06-12  6:17                             ` Eric W. Biederman
2011-05-22 21:04                       ` [PATCH 1/3] vlan: Do not support clearing VLAN_FLAG_REORDER_HDR Ben Greear
2011-05-22 22:38                         ` Eric W. Biederman
2011-05-23  0:38                           ` Changli Gao
2011-05-23  1:26                             ` Changli Gao
2011-05-23  1:45                               ` Eric W. Biederman
2011-05-23  2:14                                 ` Changli Gao
2011-05-23  9:41                                   ` Eric W. Biederman
2011-05-23 10:43                                     ` Jiri Pirko
2011-05-23 19:48                                       ` Nicolas de Pesloüan
2011-05-24  5:58                                         ` Jiri Pirko
2011-05-24  7:19                                           ` Nicolas de Pesloüan
2011-05-23  1:39                             ` Eric W. Biederman
2011-05-23  6:01                           ` Ben Greear
2011-05-23  9:00                             ` Eric W. Biederman
2011-05-23 16:33                               ` Ben Greear
2011-05-23 19:36                                 ` Nicolas de Pesloüan
2011-05-23 20:24                                   ` Ben Greear
2011-05-23 21:00                                     ` Stephen Hemminger
2011-05-23 21:20                                       ` David Miller
2011-05-23 22:05                                         ` Eric W. Biederman
2011-05-23 22:16                                           ` Stephen Hemminger
2011-05-23 22:48                                             ` Eric W. Biederman
2011-05-23 22:23                                           ` Ben Greear
2011-05-23 23:02                                             ` Eric W. Biederman
2011-05-24  4:20                                               ` Ben Greear
2011-05-24  7:11                                                 ` Nicolas de Pesloüan
2011-05-24  7:44                                                   ` Michał Mirosław
2011-05-24 15:17                                                   ` Ben Greear
2011-05-24  5:19                                           ` David Miller
2011-05-24  7:56                                             ` Eric W. Biederman
2011-05-24 15:44                                             ` Ben Greear
2011-05-24  0:11                                         ` [PATCH] vlan: Fix the b0rked ingress VLAN_FLAG_REORDER_HDR check Eric W. Biederman
2011-05-24  4:54                                           ` David Miller
2011-05-24  6:18                                             ` Eric W. Biederman
2011-05-24  6:24                                               ` David Miller
2011-05-24  7:38                                                 ` Eric W. Biederman
2011-06-02  3:59                                                   ` David Miller
2011-06-02 13:03                                                     ` [PATCH] vlan: Fix the ingress VLAN_FLAG_REORDER_HDR check v2 Eric W. Biederman
2011-06-02 13:15                                                       ` Jiri Pirko
2011-06-02 14:54                                                       ` Changli Gao
2011-06-02 15:26                                                         ` Eric W. Biederman
2011-06-02 23:18                                                           ` Changli Gao
2011-06-06 14:48                                                           ` Jiri Pirko
2011-06-03  3:34                                                       ` padmanabh ratnakar
2011-06-03  3:59                                                         ` Changli Gao
2011-06-05 21:14                                                           ` David Miller
2011-06-10  8:35                                                             ` [PATCH v3] vlan: Fix the ingress VLAN_FLAG_REORDER_HDR check Jiri Pirko
2011-06-10  9:26                                                               ` Changli Gao
2011-06-10  9:34                                                                 ` Jiri Pirko
2011-06-10  9:49                                                                   ` Changli Gao
2011-06-10 10:35                                                                     ` Jiri Pirko
2011-06-10 11:20                                                                       ` Changli Gao
2011-06-10 12:12                                                                         ` Jiri Pirko
2011-06-10 16:56                                                                         ` Jiri Pirko
2011-06-11  0:05                                                                           ` Changli Gao
2011-06-11 23:16                                                                             ` David Miller
2011-06-08 16:28                                                       ` [PATCH] vlan: Fix the ingress VLAN_FLAG_REORDER_HDR check v2 Jiri Pirko
2011-06-08 23:08                                                         ` Changli Gao
2011-06-09  6:01                                                           ` Jiri Pirko
2011-06-09 11:00                       ` [PATCH 1/3] vlan: Do not support clearing VLAN_FLAG_REORDER_HDR Jiri Pirko
2011-05-22  8:38                 ` [patch net-next-2.6 v2] net: vlan: make non-hw-accel rx path similar to hw-accel Changli Gao
2011-05-22  9:37                   ` Jiri Pirko
2011-05-22 10:17                     ` Changli Gao
2011-05-22 10:26                       ` Eric W. Biederman
2011-05-22 10:40                         ` Changli Gao
2011-05-22 13:16                       ` Jiri Pirko

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=4DD87C25.4030701@gmail.com \
    --to=nicolas.2p.debian@gmail.com \
    --cc=andy@greyhouse.net \
    --cc=davem@davemloft.net \
    --cc=ebiederm@xmission.com \
    --cc=eric.dumazet@gmail.com \
    --cc=fubar@us.ibm.com \
    --cc=jesse@nicira.com \
    --cc=jpirko@redhat.com \
    --cc=kaber@trash.net \
    --cc=netdev@vger.kernel.org \
    --cc=shemminger@linux-foundation.org \
    --cc=xiaosuo@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.