linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / net / core / dev_mcast.c
index eb674ea..05d6085 100644 (file)
@@ -21,6 +21,7 @@
  *     2 of the License, or (at your option) any later version.
  */
 
+#include <linux/config.h> 
 #include <linux/module.h> 
 #include <asm/uaccess.h>
 #include <asm/system.h>
@@ -61,7 +62,7 @@
  *     Device mc lists are changed by bh at least if IPv6 is enabled,
  *     so that it must be bh protected.
  *
- *     We block accesses to device mc filters with netif_tx_lock.
+ *     We block accesses to device mc filters with dev->xmit_lock.
  */
 
 /*
@@ -92,9 +93,9 @@ static void __dev_mc_upload(struct net_device *dev)
 
 void dev_mc_upload(struct net_device *dev)
 {
-       netif_tx_lock_bh(dev);
+       spin_lock_bh(&dev->xmit_lock);
        __dev_mc_upload(dev);
-       netif_tx_unlock_bh(dev);
+       spin_unlock_bh(&dev->xmit_lock);
 }
 
 /*
@@ -106,7 +107,7 @@ int dev_mc_delete(struct net_device *dev, void *addr, int alen, int glbl)
        int err = 0;
        struct dev_mc_list *dmi, **dmip;
 
-       netif_tx_lock_bh(dev);
+       spin_lock_bh(&dev->xmit_lock);
 
        for (dmip = &dev->mc_list; (dmi = *dmip) != NULL; dmip = &dmi->next) {
                /*
@@ -138,13 +139,13 @@ int dev_mc_delete(struct net_device *dev, void *addr, int alen, int glbl)
                         */
                        __dev_mc_upload(dev);
                        
-                       netif_tx_unlock_bh(dev);
+                       spin_unlock_bh(&dev->xmit_lock);
                        return 0;
                }
        }
        err = -ENOENT;
 done:
-       netif_tx_unlock_bh(dev);
+       spin_unlock_bh(&dev->xmit_lock);
        return err;
 }
 
@@ -159,7 +160,7 @@ int dev_mc_add(struct net_device *dev, void *addr, int alen, int glbl)
 
        dmi1 = kmalloc(sizeof(*dmi), GFP_ATOMIC);
 
-       netif_tx_lock_bh(dev);
+       spin_lock_bh(&dev->xmit_lock);
        for (dmi = dev->mc_list; dmi != NULL; dmi = dmi->next) {
                if (memcmp(dmi->dmi_addr, addr, dmi->dmi_addrlen) == 0 &&
                    dmi->dmi_addrlen == alen) {
@@ -175,7 +176,7 @@ int dev_mc_add(struct net_device *dev, void *addr, int alen, int glbl)
        }
 
        if ((dmi = dmi1) == NULL) {
-               netif_tx_unlock_bh(dev);
+               spin_unlock_bh(&dev->xmit_lock);
                return -ENOMEM;
        }
        memcpy(dmi->dmi_addr, addr, alen);
@@ -188,11 +189,11 @@ int dev_mc_add(struct net_device *dev, void *addr, int alen, int glbl)
 
        __dev_mc_upload(dev);
        
-       netif_tx_unlock_bh(dev);
+       spin_unlock_bh(&dev->xmit_lock);
        return 0;
 
 done:
-       netif_tx_unlock_bh(dev);
+       spin_unlock_bh(&dev->xmit_lock);
        kfree(dmi1);
        return err;
 }
@@ -203,7 +204,7 @@ done:
 
 void dev_mc_discard(struct net_device *dev)
 {
-       netif_tx_lock_bh(dev);
+       spin_lock_bh(&dev->xmit_lock);
        
        while (dev->mc_list != NULL) {
                struct dev_mc_list *tmp = dev->mc_list;
@@ -214,7 +215,7 @@ void dev_mc_discard(struct net_device *dev)
        }
        dev->mc_count = 0;
 
-       netif_tx_unlock_bh(dev);
+       spin_unlock_bh(&dev->xmit_lock);
 }
 
 #ifdef CONFIG_PROC_FS
@@ -249,7 +250,7 @@ static int dev_mc_seq_show(struct seq_file *seq, void *v)
        struct dev_mc_list *m;
        struct net_device *dev = v;
 
-       netif_tx_lock_bh(dev);
+       spin_lock_bh(&dev->xmit_lock);
        for (m = dev->mc_list; m; m = m->next) {
                int i;
 
@@ -261,7 +262,7 @@ static int dev_mc_seq_show(struct seq_file *seq, void *v)
 
                seq_putc(seq, '\n');
        }
-       netif_tx_unlock_bh(dev);
+       spin_unlock_bh(&dev->xmit_lock);
        return 0;
 }