vlan: Fix the ingress VLAN_FLAG_REORDER_HDR check
authorJiri Pirko <jpirko@redhat.com>
Fri, 10 Jun 2011 06:56:58 +0000 (06:56 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 11 Jun 2011 23:15:50 +0000 (16:15 -0700)
commit0b5c9db1b11d3175bb42b80663a9f072f801edf5
tree555113c578a8c4372902512514f323128c494278
parent06866bf5c5ad8989119a145fdb54a9fbcafa702d
vlan: Fix the ingress VLAN_FLAG_REORDER_HDR check

Testing of VLAN_FLAG_REORDER_HDR does not belong in vlan_untag
but rather in vlan_do_receive.  Otherwise the vlan header
will not be properly put on the packet in the case of
vlan header accelleration.

As we remove the check from vlan_check_reorder_header
rename it vlan_reorder_header to keep the naming clean.

Fix up the skb->pkt_type early so we don't look at the packet
after adding the vlan tag, which guarantees we don't goof
and look at the wrong field.

Use a simple if statement instead of a complicated switch
statement to decided that we need to increment rx_stats
for a multicast packet.

Hopefully at somepoint we will just declare the case where
VLAN_FLAG_REORDER_HDR is cleared as unsupported and remove
the code.  Until then this keeps it working correctly.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Acked-by: Changli Gao <xiaosuo@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/if_vlan.h
include/linux/skbuff.h
net/8021q/vlan_core.c
net/core/dev.c