net: vlan: make non-hw-accel rx path similar to hw-accel
authorJiri Pirko <jpirko@redhat.com>
Thu, 7 Apr 2011 19:48:33 +0000 (19:48 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 12 Apr 2011 21:15:19 +0000 (14:15 -0700)
commitbcc6d47903612c3861201cc3a866fb604f26b8b2
treebd02aeaa18984de46d09a1cb41b1f5e09ec89dbb
parent143780c6562080c1117cd9197ee1b33c0d838376
net: vlan: make non-hw-accel rx path similar to hw-accel

Now there are 2 paths for rx vlan frames. When rx-vlan-hw-accel is
enabled, skb is untagged by NIC, vlan_tci is set and the skb gets into
vlan code in __netif_receive_skb - vlan_hwaccel_do_receive.

For non-rx-vlan-hw-accel however, tagged skb goes thru whole
__netif_receive_skb, it's untagged in ptype_base hander and reinjected

This incosistency is fixed by this patch. Vlan untagging happens early in
__netif_receive_skb so the rest of code (ptype_all handlers, rx_handlers)
see the skb like it was untagged by hw.

Signed-off-by: Jiri Pirko <jpirko@redhat.com>
v1->v2:
remove "inline" from vlan_core.c functions
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/if_vlan.h
net/8021q/vlan.c
net/8021q/vlan.h
net/8021q/vlan_core.c
net/8021q/vlan_dev.c
net/core/dev.c