diff options
Diffstat (limited to 'drivers/net/at1700.c')
-rw-r--r-- | drivers/net/at1700.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/net/at1700.c b/drivers/net/at1700.c index b14f4799d5d..309843ab886 100644 --- a/drivers/net/at1700.c +++ b/drivers/net/at1700.c | |||
@@ -839,21 +839,19 @@ set_rx_mode(struct net_device *dev) | |||
839 | if (dev->flags & IFF_PROMISC) { | 839 | if (dev->flags & IFF_PROMISC) { |
840 | memset(mc_filter, 0xff, sizeof(mc_filter)); | 840 | memset(mc_filter, 0xff, sizeof(mc_filter)); |
841 | outb(3, ioaddr + RX_MODE); /* Enable promiscuous mode */ | 841 | outb(3, ioaddr + RX_MODE); /* Enable promiscuous mode */ |
842 | } else if (dev->mc_count > MC_FILTERBREAK || | 842 | } else if (netdev_mc_count(dev) > MC_FILTERBREAK || |
843 | (dev->flags & IFF_ALLMULTI)) { | 843 | (dev->flags & IFF_ALLMULTI)) { |
844 | /* Too many to filter perfectly -- accept all multicasts. */ | 844 | /* Too many to filter perfectly -- accept all multicasts. */ |
845 | memset(mc_filter, 0xff, sizeof(mc_filter)); | 845 | memset(mc_filter, 0xff, sizeof(mc_filter)); |
846 | outb(2, ioaddr + RX_MODE); /* Use normal mode. */ | 846 | outb(2, ioaddr + RX_MODE); /* Use normal mode. */ |
847 | } else if (dev->mc_count == 0) { | 847 | } else if (netdev_mc_empty(dev)) { |
848 | memset(mc_filter, 0x00, sizeof(mc_filter)); | 848 | memset(mc_filter, 0x00, sizeof(mc_filter)); |
849 | outb(1, ioaddr + RX_MODE); /* Ignore almost all multicasts. */ | 849 | outb(1, ioaddr + RX_MODE); /* Ignore almost all multicasts. */ |
850 | } else { | 850 | } else { |
851 | struct dev_mc_list *mclist; | 851 | struct dev_mc_list *mclist; |
852 | int i; | ||
853 | 852 | ||
854 | memset(mc_filter, 0, sizeof(mc_filter)); | 853 | memset(mc_filter, 0, sizeof(mc_filter)); |
855 | for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count; | 854 | netdev_for_each_mc_addr(mclist, dev) { |
856 | i++, mclist = mclist->next) { | ||
857 | unsigned int bit = | 855 | unsigned int bit = |
858 | ether_crc_le(ETH_ALEN, mclist->dmi_addr) >> 26; | 856 | ether_crc_le(ETH_ALEN, mclist->dmi_addr) >> 26; |
859 | mc_filter[bit >> 3] |= (1 << bit); | 857 | mc_filter[bit >> 3] |= (1 << bit); |