]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/8021q/vlan_dev.c
net: rx_dropped accounting
[net-next-2.6.git] / net / 8021q / vlan_dev.c
index 3bccdd12a2642a06e1c5078b5c4065419a57428a..94a1feddeb4961482e26cc4b23ce3911de35d65a 100644 (file)
@@ -225,7 +225,10 @@ int vlan_skb_recv(struct sk_buff *skb, struct net_device *dev,
                }
        }
 
-       netif_rx(skb);
+       if (unlikely(netif_rx(skb) == NET_RX_DROP)) {
+               if (rx_stats)
+                       rx_stats->rx_dropped++;
+       }
        rcu_read_unlock();
        return NET_RX_SUCCESS;
 
@@ -843,13 +846,15 @@ static struct rtnl_link_stats64 *vlan_dev_get_stats64(struct net_device *dev, st
                        accum.rx_packets += rxpackets;
                        accum.rx_bytes   += rxbytes;
                        accum.rx_multicast += rxmulticast;
-                       /* rx_errors is an ulong, not protected by syncp */
+                       /* rx_errors, rx_dropped are ulong, not protected by syncp */
                        accum.rx_errors  += p->rx_errors;
+                       accum.rx_dropped += p->rx_dropped;
                }
                stats->rx_packets = accum.rx_packets;
                stats->rx_bytes   = accum.rx_bytes;
                stats->rx_errors  = accum.rx_errors;
                stats->multicast  = accum.rx_multicast;
+               stats->rx_dropped = accum.rx_dropped;
        }
        return stats;
 }