diff options
author | David S. Miller <davem@davemloft.net> | 2011-06-04 13:38:31 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-06-04 13:38:31 -0700 |
commit | e990b37b906b6137d353ef2a918e15e5763d70ec (patch) | |
tree | e802458ee43d4b0a2b6d39eb25929858ceb7fd61 /net/packet/af_packet.c | |
parent | 34624d6631b6b3a1df16407a847286bb6233a96b (diff) | |
parent | 23c79d31a3dd2602ee1a5ff31303b2d7a2d3c159 (diff) | |
download | linux-e990b37b906b6137d353ef2a918e15e5763d70ec.tar.bz2 |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Diffstat (limited to 'net/packet/af_packet.c')
-rw-r--r-- | net/packet/af_packet.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 925f715686a5..ba248d93399a 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -798,7 +798,12 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, getnstimeofday(&ts); h.h2->tp_sec = ts.tv_sec; h.h2->tp_nsec = ts.tv_nsec; - h.h2->tp_vlan_tci = vlan_tx_tag_get(skb); + if (vlan_tx_tag_present(skb)) { + h.h2->tp_vlan_tci = vlan_tx_tag_get(skb); + status |= TP_STATUS_VLAN_VALID; + } else { + h.h2->tp_vlan_tci = 0; + } hdrlen = sizeof(*h.h2); break; default: @@ -1725,8 +1730,12 @@ static int packet_recvmsg(struct kiocb *iocb, struct socket *sock, aux.tp_snaplen = skb->len; aux.tp_mac = 0; aux.tp_net = skb_network_offset(skb); - aux.tp_vlan_tci = vlan_tx_tag_get(skb); - + if (vlan_tx_tag_present(skb)) { + aux.tp_vlan_tci = vlan_tx_tag_get(skb); + aux.tp_status |= TP_STATUS_VLAN_VALID; + } else { + aux.tp_vlan_tci = 0; + } put_cmsg(msg, SOL_PACKET, PACKET_AUXDATA, sizeof(aux), &aux); } |