diff options
Diffstat (limited to 'drivers/net/eexpress.c')
-rw-r--r-- | drivers/net/eexpress.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/net/eexpress.c b/drivers/net/eexpress.c index d804ff18eda8..7013dc8a6cbc 100644 --- a/drivers/net/eexpress.c +++ b/drivers/net/eexpress.c | |||
@@ -1588,23 +1588,19 @@ static void eexp_setup_filter(struct net_device *dev) | |||
1588 | 1588 | ||
1589 | outw(CONF_NR_MULTICAST & ~31, ioaddr+SM_PTR); | 1589 | outw(CONF_NR_MULTICAST & ~31, ioaddr+SM_PTR); |
1590 | outw(6*count, ioaddr+SHADOW(CONF_NR_MULTICAST)); | 1590 | outw(6*count, ioaddr+SHADOW(CONF_NR_MULTICAST)); |
1591 | for (i = 0, dmi = dev->mc_list; i < count; i++, dmi = dmi->next) { | 1591 | i = 0; |
1592 | unsigned short *data; | 1592 | netdev_for_each_mc_addr(dmi, dev) { |
1593 | if (!dmi) { | 1593 | unsigned short *data = (unsigned short *) dmi->dmi_addr; |
1594 | printk(KERN_INFO "%s: too few multicast addresses\n", dev->name); | 1594 | |
1595 | if (i == count) | ||
1595 | break; | 1596 | break; |
1596 | } | ||
1597 | if (dmi->dmi_addrlen != ETH_ALEN) { | ||
1598 | printk(KERN_INFO "%s: invalid multicast address length given.\n", dev->name); | ||
1599 | continue; | ||
1600 | } | ||
1601 | data = (unsigned short *)dmi->dmi_addr; | ||
1602 | outw((CONF_MULTICAST+(6*i)) & ~31, ioaddr+SM_PTR); | 1597 | outw((CONF_MULTICAST+(6*i)) & ~31, ioaddr+SM_PTR); |
1603 | outw(data[0], ioaddr+SHADOW(CONF_MULTICAST+(6*i))); | 1598 | outw(data[0], ioaddr+SHADOW(CONF_MULTICAST+(6*i))); |
1604 | outw((CONF_MULTICAST+(6*i)+2) & ~31, ioaddr+SM_PTR); | 1599 | outw((CONF_MULTICAST+(6*i)+2) & ~31, ioaddr+SM_PTR); |
1605 | outw(data[1], ioaddr+SHADOW(CONF_MULTICAST+(6*i)+2)); | 1600 | outw(data[1], ioaddr+SHADOW(CONF_MULTICAST+(6*i)+2)); |
1606 | outw((CONF_MULTICAST+(6*i)+4) & ~31, ioaddr+SM_PTR); | 1601 | outw((CONF_MULTICAST+(6*i)+4) & ~31, ioaddr+SM_PTR); |
1607 | outw(data[2], ioaddr+SHADOW(CONF_MULTICAST+(6*i)+4)); | 1602 | outw(data[2], ioaddr+SHADOW(CONF_MULTICAST+(6*i)+4)); |
1603 | i++; | ||
1608 | } | 1604 | } |
1609 | } | 1605 | } |
1610 | 1606 | ||