projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net: add a core netdev->rx_dropped counter
[deliverable/linux.git]
/
net
/
8021q
/
vlan_core.c
diff --git
a/net/8021q/vlan_core.c
b/net/8021q/vlan_core.c
index 889f4ac4459abcf477210297b6572dc71cf25ca5..dee727ce0291ea3cf8887a894fb08185414ba48c 100644
(file)
--- a/
net/8021q/vlan_core.c
+++ b/
net/8021q/vlan_core.c
@@
-24,12
+24,16
@@
int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp,
if (vlan_dev)
skb->dev = vlan_dev;
if (vlan_dev)
skb->dev = vlan_dev;
- else if (vlan_id)
- goto drop;
+ else if (vlan_id) {
+ if (!(skb->dev->flags & IFF_PROMISC))
+ goto drop;
+ skb->pkt_type = PACKET_OTHERHOST;
+ }
- return
(polling ? netif_receive_skb(skb) : netif_rx(skb)
);
+ return
polling ? netif_receive_skb(skb) : netif_rx(skb
);
drop:
drop:
+ atomic_long_inc(&skb->dev->rx_dropped);
dev_kfree_skb_any(skb);
return NET_RX_DROP;
}
dev_kfree_skb_any(skb);
return NET_RX_DROP;
}
@@
-101,8
+105,11
@@
vlan_gro_common(struct napi_struct *napi, struct vlan_group *grp,
if (vlan_dev)
skb->dev = vlan_dev;
if (vlan_dev)
skb->dev = vlan_dev;
- else if (vlan_id)
- goto drop;
+ else if (vlan_id) {
+ if (!(skb->dev->flags & IFF_PROMISC))
+ goto drop;
+ skb->pkt_type = PACKET_OTHERHOST;
+ }
for (p = napi->gro_list; p; p = p->next) {
unsigned long diffs;
for (p = napi->gro_list; p; p = p->next) {
unsigned long diffs;
@@
-117,6
+124,7
@@
vlan_gro_common(struct napi_struct *napi, struct vlan_group *grp,
return dev_gro_receive(napi, skb);
drop:
return dev_gro_receive(napi, skb);
drop:
+ atomic_long_inc(&skb->dev->rx_dropped);
return GRO_DROP;
}
return GRO_DROP;
}
This page took
0.026254 seconds
and
5
git commands to generate.