netdev: Add addr_list_lock to struct net_device.
David S. Miller [Tue, 15 Jul 2008 07:08:33 +0000 (00:08 -0700)]
This will be used to protect the per-device unicast and multicast
address lists, as well as the callbacks into the drivers which
configure such state such as ->set_rx_mode() and ->set_multicast_list().

Signed-off-by: David S. Miller <davem@davemloft.net>

include/linux/netdevice.h
net/core/dev.c

index ba5c463..fd03652 100644 (file)
@@ -609,6 +609,7 @@ struct net_device
        unsigned char           addr_len;       /* hardware address length      */
        unsigned short          dev_id;         /* for shared network cards */
 
+       spinlock_t              addr_list_lock;
        struct dev_addr_list    *uc_list;       /* Secondary unicast mac addresses */
        int                     uc_count;       /* Number of installed ucasts   */
        int                     uc_promisc;
index feaab48..d933d1b 100644 (file)
@@ -3836,6 +3836,7 @@ int register_netdevice(struct net_device *dev)
        BUG_ON(!dev_net(dev));
        net = dev_net(dev);
 
+       spin_lock_init(&dev->addr_list_lock);
        netdev_init_queue_locks(dev);
 
        dev->iflink = -1;