]> Pileus Git - ~andy/linux/blobdiff - drivers/net/eexpress.c
ath5k: Use high bitrates for ACK/CTS
[~andy/linux] / drivers / net / eexpress.c
index d804ff18eda857a1aaab6ab162a8e0835f8ccac6..7013dc8a6cbcde21c52f338aa456f536b4633dc6 100644 (file)
@@ -1588,23 +1588,19 @@ static void eexp_setup_filter(struct net_device *dev)
 
        outw(CONF_NR_MULTICAST & ~31, ioaddr+SM_PTR);
        outw(6*count, ioaddr+SHADOW(CONF_NR_MULTICAST));
-       for (i = 0, dmi = dev->mc_list; i < count; i++, dmi = dmi->next) {
-               unsigned short *data;
-               if (!dmi) {
-                       printk(KERN_INFO "%s: too few multicast addresses\n", dev->name);
+       i = 0;
+       netdev_for_each_mc_addr(dmi, dev) {
+               unsigned short *data = (unsigned short *) dmi->dmi_addr;
+
+               if (i == count)
                        break;
-               }
-               if (dmi->dmi_addrlen != ETH_ALEN) {
-                       printk(KERN_INFO "%s: invalid multicast address length given.\n", dev->name);
-                       continue;
-               }
-               data = (unsigned short *)dmi->dmi_addr;
                outw((CONF_MULTICAST+(6*i)) & ~31, ioaddr+SM_PTR);
                outw(data[0], ioaddr+SHADOW(CONF_MULTICAST+(6*i)));
                outw((CONF_MULTICAST+(6*i)+2) & ~31, ioaddr+SM_PTR);
                outw(data[1], ioaddr+SHADOW(CONF_MULTICAST+(6*i)+2));
                outw((CONF_MULTICAST+(6*i)+4) & ~31, ioaddr+SM_PTR);
                outw(data[2], ioaddr+SHADOW(CONF_MULTICAST+(6*i)+4));
+               i++;
        }
 }