aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/lib8390.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/lib8390.c')
-rw-r--r--drivers/net/lib8390.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/net/lib8390.c b/drivers/net/lib8390.c
index 57f25848fe80..56f66f485400 100644
--- a/drivers/net/lib8390.c
+++ b/drivers/net/lib8390.c
@@ -907,15 +907,8 @@ static inline void make_mc_bits(u8 *bits, struct net_device *dev)
907{ 907{
908 struct dev_mc_list *dmi; 908 struct dev_mc_list *dmi;
909 909
910 for (dmi=dev->mc_list; dmi; dmi=dmi->next) 910 netdev_for_each_mc_addr(dmi, dev) {
911 { 911 u32 crc = ether_crc(ETH_ALEN, dmi->dmi_addr);
912 u32 crc;
913 if (dmi->dmi_addrlen != ETH_ALEN)
914 {
915 printk(KERN_INFO "%s: invalid multicast address length given.\n", dev->name);
916 continue;
917 }
918 crc = ether_crc(ETH_ALEN, dmi->dmi_addr);
919 /* 912 /*
920 * The 8390 uses the 6 most significant bits of the 913 * The 8390 uses the 6 most significant bits of the
921 * CRC to index the multicast table. 914 * CRC to index the multicast table.
@@ -941,7 +934,7 @@ static void do_set_multicast_list(struct net_device *dev)
941 if (!(dev->flags&(IFF_PROMISC|IFF_ALLMULTI))) 934 if (!(dev->flags&(IFF_PROMISC|IFF_ALLMULTI)))
942 { 935 {
943 memset(ei_local->mcfilter, 0, 8); 936 memset(ei_local->mcfilter, 0, 8);
944 if (dev->mc_list) 937 if (!netdev_mc_empty(dev))
945 make_mc_bits(ei_local->mcfilter, dev); 938 make_mc_bits(ei_local->mcfilter, dev);
946 } 939 }
947 else 940 else
@@ -975,7 +968,7 @@ static void do_set_multicast_list(struct net_device *dev)
975 968
976 if(dev->flags&IFF_PROMISC) 969 if(dev->flags&IFF_PROMISC)
977 ei_outb_p(E8390_RXCONFIG | 0x18, e8390_base + EN0_RXCR); 970 ei_outb_p(E8390_RXCONFIG | 0x18, e8390_base + EN0_RXCR);
978 else if(dev->flags&IFF_ALLMULTI || dev->mc_list) 971 else if (dev->flags & IFF_ALLMULTI || !netdev_mc_empty(dev))
979 ei_outb_p(E8390_RXCONFIG | 0x08, e8390_base + EN0_RXCR); 972 ei_outb_p(E8390_RXCONFIG | 0x08, e8390_base + EN0_RXCR);
980 else 973 else
981 ei_outb_p(E8390_RXCONFIG, e8390_base + EN0_RXCR); 974 ei_outb_p(E8390_RXCONFIG, e8390_base + EN0_RXCR);