]> Pileus Git - ~andy/linux/blobdiff - drivers/net/sonic.c
ath5k: Use high bitrates for ACK/CTS
[~andy/linux] / drivers / net / sonic.c
index 9599ce77ef85858fb993d088ef51c483fd3482ed..287c251075e5ddec1eb48de335bdc7086815efb4 100644 (file)
@@ -531,7 +531,7 @@ static void sonic_multicast_list(struct net_device *dev)
 {
        struct sonic_local *lp = netdev_priv(dev);
        unsigned int rcr;
-       struct dev_mc_list *dmi = dev->mc_list;
+       struct dev_mc_list *dmi;
        unsigned char *addr;
        int i;
 
@@ -541,19 +541,22 @@ static void sonic_multicast_list(struct net_device *dev)
        if (dev->flags & IFF_PROMISC) { /* set promiscuous mode */
                rcr |= SONIC_RCR_PRO;
        } else {
-               if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 15)) {
+               if ((dev->flags & IFF_ALLMULTI) ||
+                   (netdev_mc_count(dev) > 15)) {
                        rcr |= SONIC_RCR_AMC;
                } else {
                        if (sonic_debug > 2)
-                               printk("sonic_multicast_list: mc_count %d\n", dev->mc_count);
+                               printk("sonic_multicast_list: mc_count %d\n",
+                                      netdev_mc_count(dev));
                        sonic_set_cam_enable(dev, 1);  /* always enable our own address */
-                       for (i = 1; i <= dev->mc_count; i++) {
+                       i = 1;
+                       netdev_for_each_mc_addr(dmi, dev) {
                                addr = dmi->dmi_addr;
-                               dmi = dmi->next;
                                sonic_cda_put(dev, i, SONIC_CD_CAP0, addr[1] << 8 | addr[0]);
                                sonic_cda_put(dev, i, SONIC_CD_CAP1, addr[3] << 8 | addr[2]);
                                sonic_cda_put(dev, i, SONIC_CD_CAP2, addr[5] << 8 | addr[4]);
                                sonic_set_cam_enable(dev, sonic_get_cam_enable(dev) | (1 << i));
+                               i++;
                        }
                        SONIC_WRITE(SONIC_CDC, 16);
                        /* issue Load CAM command */