]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/net/wireless/ray_cs.c
pcmcia: re-work pcmcia_request_irq()
[mirror_ubuntu-artful-kernel.git] / drivers / net / wireless / ray_cs.c
index 88e1e4e32b22d0cee237ba0c8964ed3dda327ac7..fe4642a49bfb208200c7572a4b57cc14bb44d600 100644 (file)
@@ -35,7 +35,6 @@
 #include <linux/proc_fs.h>
 #include <linux/ptrace.h>
 #include <linux/seq_file.h>
-#include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/timer.h>
 #include <linux/init.h>
@@ -322,10 +321,6 @@ static int ray_probe(struct pcmcia_device *p_dev)
        p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
        p_dev->io.IOAddrLines = 5;
 
-       /* Interrupt setup. For PCMCIA, driver takes what's given */
-       p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
-       p_dev->irq.Handler = &ray_interrupt;
-
        /* General socket configuration */
        p_dev->conf.Attributes = CONF_ENABLE_IRQ;
        p_dev->conf.IntType = INT_MEMORY_AND_IO;
@@ -418,10 +413,10 @@ static int ray_config(struct pcmcia_device *link)
        /* Now allocate an interrupt line.  Note that this does not
           actually assign a handler to the interrupt.
         */
-       ret = pcmcia_request_irq(link, &link->irq);
+       ret = pcmcia_request_irq(link, ray_interrupt);
        if (ret)
                goto failed;
-       dev->irq = link->irq.AssignedIRQ;
+       dev->irq = link->irq;
 
        /* This actually configures the PCMCIA socket -- setting up
           the I/O windows and the interrupt mapping.
@@ -1871,10 +1866,8 @@ static void ray_update_parm(struct net_device *dev, UCHAR objid, UCHAR *value,
 /*===========================================================================*/
 static void ray_update_multi_list(struct net_device *dev, int all)
 {
-       struct dev_mc_list *dmi, **dmip;
        int ccsindex;
        struct ccs __iomem *pccs;
-       int i = 0;
        ray_dev_t *local = netdev_priv(dev);
        struct pcmcia_device *link = local->finder;
        void __iomem *p = local->sram + HOST_TO_ECF_BASE;
@@ -1895,9 +1888,11 @@ static void ray_update_multi_list(struct net_device *dev, int all)
                writeb(0xff, &pccs->var);
                local->num_multi = 0xff;
        } else {
+               struct dev_mc_list *dmi;
+               int i = 0;
+
                /* Copy the kernel's list of MC addresses to card */
-               for (dmip = &dev->mc_list; (dmi = *dmip) != NULL;
-                    dmip = &dmi->next) {
+               netdev_for_each_mc_addr(dmi, dev) {
                        memcpy_toio(p, dmi->dmi_addr, ETH_ALEN);
                        dev_dbg(&link->dev,
                              "ray_update_multi add addr %02x%02x%02x%02x%02x%02x\n",
@@ -1950,7 +1945,7 @@ static void set_multicast_list(struct net_device *dev)
        if (dev->flags & IFF_ALLMULTI)
                ray_update_multi_list(dev, 1);
        else {
-               if (local->num_multi != dev->mc_count)
+               if (local->num_multi != netdev_mc_count(dev))
                        ray_update_multi_list(dev, 0);
        }
 } /* end set_multicast_list */