parisc: led: Use for_each_netdev_rcu()
authorEric Dumazet <eric.dumazet@gmail.com>
Mon, 9 Nov 2009 18:07:28 +0000 (18:07 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Nov 2009 04:54:43 +0000 (20:54 -0800)
Use for_each_netdev_rcu() and dont lock dev_base_lock anymore

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/parisc/led.c

index 9581d36..79caf1c 100644 (file)
@@ -352,11 +352,9 @@ static __inline__ int led_get_net_activity(void)
 
        rx_total = tx_total = 0;
        
-       /* we are running as a workqueue task, so locking dev_base 
-        * for reading should be OK */
-       read_lock(&dev_base_lock);
+       /* we are running as a workqueue task, so we can use an RCU lookup */
        rcu_read_lock();
-       for_each_netdev(&init_net, dev) {
+       for_each_netdev_rcu(&init_net, dev) {
            const struct net_device_stats *stats;
            struct in_device *in_dev = __in_dev_get_rcu(dev);
            if (!in_dev || !in_dev->ifa_list)
@@ -368,7 +366,6 @@ static __inline__ int led_get_net_activity(void)
            tx_total += stats->tx_packets;
        }
        rcu_read_unlock();
-       read_unlock(&dev_base_lock);
 
        retval = 0;