diff options
author | Jiri Pirko <jpirko@redhat.com> | 2011-06-10 06:56:58 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-06-11 16:15:50 -0700 |
commit | 0b5c9db1b11d3175bb42b80663a9f072f801edf5 (patch) | |
tree | 555113c578a8c4372902512514f323128c494278 /net/core/dev.c | |
parent | 06866bf5c5ad8989119a145fdb54a9fbcafa702d (diff) | |
download | linux-stable-0b5c9db1b11d3175bb42b80663a9f072f801edf5.tar.gz linux-stable-0b5c9db1b11d3175bb42b80663a9f072f801edf5.tar.bz2 linux-stable-0b5c9db1b11d3175bb42b80663a9f072f801edf5.zip |
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>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index a54c9f87ddbb..9c58c1ec41a9 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3114,7 +3114,7 @@ static int __netif_receive_skb(struct sk_buff *skb) skb_reset_network_header(skb); skb_reset_transport_header(skb); - skb->mac_len = skb->network_header - skb->mac_header; + skb_reset_mac_len(skb); pt_prev = NULL; |