net: Batch network namespace destruction.
[safe/jmp/linux-2.6] / net / 8021q / vlan_core.c
index 971d375..e75a2f3 100644 (file)
@@ -31,7 +31,7 @@ EXPORT_SYMBOL(__vlan_hwaccel_rx);
 int vlan_hwaccel_do_receive(struct sk_buff *skb)
 {
        struct net_device *dev = skb->dev;
-       struct net_device_stats *stats;
+       struct vlan_rx_stats     *rx_stats;
 
        skb->dev = vlan_dev_info(dev)->real_dev;
        netif_nit_deliver(skb);
@@ -40,15 +40,17 @@ int vlan_hwaccel_do_receive(struct sk_buff *skb)
        skb->priority = vlan_get_ingress_priority(dev, skb->vlan_tci);
        skb->vlan_tci = 0;
 
-       stats = &dev->stats;
-       stats->rx_packets++;
-       stats->rx_bytes += skb->len;
+       rx_stats = per_cpu_ptr(vlan_dev_info(dev)->vlan_rx_stats,
+                              smp_processor_id());
+
+       rx_stats->rx_packets++;
+       rx_stats->rx_bytes += skb->len;
 
        switch (skb->pkt_type) {
        case PACKET_BROADCAST:
                break;
        case PACKET_MULTICAST:
-               stats->multicast++;
+               rx_stats->multicast++;
                break;
        case PACKET_OTHERHOST:
                /* Our lower layer thinks this is not local, let's make sure.