diff options
author | Jiri Pirko <jpirko@redhat.com> | 2010-02-23 04:19:49 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-26 05:07:30 -0500 |
commit | f9dcbcc9e338d08c0f7de7eba4eaafbbb7f81249 (patch) | |
tree | 8a1d9a37bc057440220a5ad23231e0fe974b93f6 /drivers/net | |
parent | 52c793f24054f5dc30d228e37e0e19cc8313f086 (diff) |
net: convert multiple drivers to use netdev_for_each_mc_addr, part5 V2
removed some needless checks and also corrected bug in lp486e (dmi was passed
instead of dmi->dmi_addr)
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/jme.c | 6 | ||||
-rw-r--r-- | drivers/net/korina.c | 6 | ||||
-rw-r--r-- | drivers/net/ks8851.c | 5 | ||||
-rw-r--r-- | drivers/net/ks8851_mll.c | 3 | ||||
-rw-r--r-- | drivers/net/ksz884x.c | 4 | ||||
-rw-r--r-- | drivers/net/lib82596.c | 7 | ||||
-rw-r--r-- | drivers/net/lib8390.c | 15 | ||||
-rw-r--r-- | drivers/net/ll_temac_main.c | 7 | ||||
-rw-r--r-- | drivers/net/lp486e.c | 4 | ||||
-rw-r--r-- | drivers/net/mac89x0.c | 4 | ||||
-rw-r--r-- | drivers/net/macb.c | 7 | ||||
-rw-r--r-- | drivers/net/mace.c | 11 | ||||
-rw-r--r-- | drivers/net/macmace.c | 12 | ||||
-rw-r--r-- | drivers/net/mv643xx_eth.c | 2 | ||||
-rw-r--r-- | drivers/net/myri10ge/myri10ge.c | 2 | ||||
-rw-r--r-- | drivers/net/natsemi.c | 4 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_hw.c | 19 | ||||
-rw-r--r-- | drivers/net/ni5010.c | 3 | ||||
-rw-r--r-- | drivers/net/ni52.c | 8 | ||||
-rw-r--r-- | drivers/net/niu.c | 2 | ||||
-rw-r--r-- | drivers/net/pci-skeleton.c | 6 | ||||
-rw-r--r-- | drivers/net/pcnet32.c | 5 | ||||
-rw-r--r-- | drivers/net/ps3_gelic_net.c | 2 | ||||
-rw-r--r-- | drivers/net/qlcnic/qlcnic_hw.c | 3 | ||||
-rw-r--r-- | drivers/net/qlge/qlge_main.c | 6 | ||||
-rw-r--r-- | drivers/net/r6040.c | 30 | ||||
-rw-r--r-- | drivers/net/r8169.c | 4 |
27 files changed, 82 insertions, 105 deletions
diff --git a/drivers/net/jme.c b/drivers/net/jme.c index 558b6a0b15fc..0f31497833df 100644 --- a/drivers/net/jme.c +++ b/drivers/net/jme.c | |||
@@ -1997,7 +1997,6 @@ jme_set_multi(struct net_device *netdev) | |||
1997 | { | 1997 | { |
1998 | struct jme_adapter *jme = netdev_priv(netdev); | 1998 | struct jme_adapter *jme = netdev_priv(netdev); |
1999 | u32 mc_hash[2] = {}; | 1999 | u32 mc_hash[2] = {}; |
2000 | int i; | ||
2001 | 2000 | ||
2002 | spin_lock_bh(&jme->rxmcs_lock); | 2001 | spin_lock_bh(&jme->rxmcs_lock); |
2003 | 2002 | ||
@@ -2012,10 +2011,7 @@ jme_set_multi(struct net_device *netdev) | |||
2012 | int bit_nr; | 2011 | int bit_nr; |
2013 | 2012 | ||
2014 | jme->reg_rxmcs |= RXMCS_MULFRAME | RXMCS_MULFILTERED; | 2013 | jme->reg_rxmcs |= RXMCS_MULFRAME | RXMCS_MULFILTERED; |
2015 | for (i = 0, mclist = netdev->mc_list; | 2014 | netdev_for_each_mc_addr(mclist, netdev) { |
2016 | mclist && i < netdev_mc_count(netdev); | ||
2017 | ++i, mclist = mclist->next) { | ||
2018 | |||
2019 | bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) & 0x3F; | 2015 | bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) & 0x3F; |
2020 | mc_hash[bit_nr >> 5] |= 1 << (bit_nr & 0x1F); | 2016 | mc_hash[bit_nr >> 5] |= 1 << (bit_nr & 0x1F); |
2021 | } | 2017 | } |
diff --git a/drivers/net/korina.c b/drivers/net/korina.c index af0c764130e6..300c2249812d 100644 --- a/drivers/net/korina.c +++ b/drivers/net/korina.c | |||
@@ -482,7 +482,7 @@ static void korina_multicast_list(struct net_device *dev) | |||
482 | { | 482 | { |
483 | struct korina_private *lp = netdev_priv(dev); | 483 | struct korina_private *lp = netdev_priv(dev); |
484 | unsigned long flags; | 484 | unsigned long flags; |
485 | struct dev_mc_list *dmi = dev->mc_list; | 485 | struct dev_mc_list *dmi; |
486 | u32 recognise = ETH_ARC_AB; /* always accept broadcasts */ | 486 | u32 recognise = ETH_ARC_AB; /* always accept broadcasts */ |
487 | int i; | 487 | int i; |
488 | 488 | ||
@@ -502,11 +502,9 @@ static void korina_multicast_list(struct net_device *dev) | |||
502 | for (i = 0; i < 4; i++) | 502 | for (i = 0; i < 4; i++) |
503 | hash_table[i] = 0; | 503 | hash_table[i] = 0; |
504 | 504 | ||
505 | for (i = 0; i < netdev_mc_count(dev); i++) { | 505 | netdev_for_each_mc_addr(dmi, dev) { |
506 | char *addrs = dmi->dmi_addr; | 506 | char *addrs = dmi->dmi_addr; |
507 | 507 | ||
508 | dmi = dmi->next; | ||
509 | |||
510 | if (!(*addrs & 1)) | 508 | if (!(*addrs & 1)) |
511 | continue; | 509 | continue; |
512 | 510 | ||
diff --git a/drivers/net/ks8851.c b/drivers/net/ks8851.c index 9845ab1e5573..b5219cce12ed 100644 --- a/drivers/net/ks8851.c +++ b/drivers/net/ks8851.c | |||
@@ -966,13 +966,12 @@ static void ks8851_set_rx_mode(struct net_device *dev) | |||
966 | rxctrl.rxcr1 = (RXCR1_RXME | RXCR1_RXAE | | 966 | rxctrl.rxcr1 = (RXCR1_RXME | RXCR1_RXAE | |
967 | RXCR1_RXPAFMA | RXCR1_RXMAFMA); | 967 | RXCR1_RXPAFMA | RXCR1_RXMAFMA); |
968 | } else if (dev->flags & IFF_MULTICAST && !netdev_mc_empty(dev)) { | 968 | } else if (dev->flags & IFF_MULTICAST && !netdev_mc_empty(dev)) { |
969 | struct dev_mc_list *mcptr = dev->mc_list; | 969 | struct dev_mc_list *mcptr; |
970 | u32 crc; | 970 | u32 crc; |
971 | int i; | ||
972 | 971 | ||
973 | /* accept some multicast */ | 972 | /* accept some multicast */ |
974 | 973 | ||
975 | for (i = netdev_mc_count(dev); i > 0; i--) { | 974 | netdev_for_each_mc_addr(mcptr, dev) { |
976 | crc = ether_crc(ETH_ALEN, mcptr->dmi_addr); | 975 | crc = ether_crc(ETH_ALEN, mcptr->dmi_addr); |
977 | crc >>= (32 - 6); /* get top six bits */ | 976 | crc >>= (32 - 6); /* get top six bits */ |
978 | 977 | ||
diff --git a/drivers/net/ks8851_mll.c b/drivers/net/ks8851_mll.c index ffffb3889704..84b0e15831f9 100644 --- a/drivers/net/ks8851_mll.c +++ b/drivers/net/ks8851_mll.c | |||
@@ -1196,7 +1196,8 @@ static void ks_set_rx_mode(struct net_device *netdev) | |||
1196 | if ((netdev->flags & IFF_MULTICAST) && netdev_mc_count(netdev)) { | 1196 | if ((netdev->flags & IFF_MULTICAST) && netdev_mc_count(netdev)) { |
1197 | if (netdev_mc_count(netdev) <= MAX_MCAST_LST) { | 1197 | if (netdev_mc_count(netdev) <= MAX_MCAST_LST) { |
1198 | int i = 0; | 1198 | int i = 0; |
1199 | for (ptr = netdev->mc_list; ptr; ptr = ptr->next) { | 1199 | |
1200 | netdev_for_each_mc_addr(ptr, netdev) { | ||
1200 | if (!(*ptr->dmi_addr & 1)) | 1201 | if (!(*ptr->dmi_addr & 1)) |
1201 | continue; | 1202 | continue; |
1202 | if (i >= MAX_MCAST_LST) | 1203 | if (i >= MAX_MCAST_LST) |
diff --git a/drivers/net/ksz884x.c b/drivers/net/ksz884x.c index 6f187c7e61fa..7264a3e5c2c0 100644 --- a/drivers/net/ksz884x.c +++ b/drivers/net/ksz884x.c | |||
@@ -5777,7 +5777,7 @@ static void netdev_set_rx_mode(struct net_device *dev) | |||
5777 | if (hw_priv->hw.dev_count > 1) | 5777 | if (hw_priv->hw.dev_count > 1) |
5778 | return; | 5778 | return; |
5779 | 5779 | ||
5780 | if ((dev->flags & IFF_MULTICAST) && dev->mc_count) { | 5780 | if ((dev->flags & IFF_MULTICAST) && !netdev_mc_empty(dev)) { |
5781 | int i = 0; | 5781 | int i = 0; |
5782 | 5782 | ||
5783 | /* List too big to support so turn on all multicast mode. */ | 5783 | /* List too big to support so turn on all multicast mode. */ |
@@ -5790,7 +5790,7 @@ static void netdev_set_rx_mode(struct net_device *dev) | |||
5790 | return; | 5790 | return; |
5791 | } | 5791 | } |
5792 | 5792 | ||
5793 | for (mc_ptr = dev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) { | 5793 | netdev_for_each_mc_addr(mc_ptr, dev) { |
5794 | if (!(*mc_ptr->dmi_addr & 1)) | 5794 | if (!(*mc_ptr->dmi_addr & 1)) |
5795 | continue; | 5795 | continue; |
5796 | if (i >= MAX_MULTICAST_LIST) | 5796 | if (i >= MAX_MULTICAST_LIST) |
diff --git a/drivers/net/lib82596.c b/drivers/net/lib82596.c index 371b58b1d151..443c39a3732f 100644 --- a/drivers/net/lib82596.c +++ b/drivers/net/lib82596.c | |||
@@ -1396,15 +1396,16 @@ static void set_multicast_list(struct net_device *dev) | |||
1396 | cmd->cmd.command = SWAP16(CmdMulticastList); | 1396 | cmd->cmd.command = SWAP16(CmdMulticastList); |
1397 | cmd->mc_cnt = SWAP16(netdev_mc_count(dev) * 6); | 1397 | cmd->mc_cnt = SWAP16(netdev_mc_count(dev) * 6); |
1398 | cp = cmd->mc_addrs; | 1398 | cp = cmd->mc_addrs; |
1399 | for (dmi = dev->mc_list; | 1399 | netdev_for_each_mc_addr(dmi, dev) { |
1400 | cnt && dmi != NULL; | 1400 | if (!cnt--) |
1401 | dmi = dmi->next, cnt--, cp += 6) { | 1401 | break; |
1402 | memcpy(cp, dmi->dmi_addr, 6); | 1402 | memcpy(cp, dmi->dmi_addr, 6); |
1403 | if (i596_debug > 1) | 1403 | if (i596_debug > 1) |
1404 | DEB(DEB_MULTI, | 1404 | DEB(DEB_MULTI, |
1405 | printk(KERN_DEBUG | 1405 | printk(KERN_DEBUG |
1406 | "%s: Adding address %pM\n", | 1406 | "%s: Adding address %pM\n", |
1407 | dev->name, cp)); | 1407 | dev->name, cp)); |
1408 | cp += 6; | ||
1408 | } | 1409 | } |
1409 | DMA_WBACK_INV(dev, &dma->mc_cmd, sizeof(struct mc_cmd)); | 1410 | DMA_WBACK_INV(dev, &dma->mc_cmd, sizeof(struct mc_cmd)); |
1410 | i596_add_cmd(dev, &cmd->cmd); | 1411 | i596_add_cmd(dev, &cmd->cmd); |
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); |
diff --git a/drivers/net/ll_temac_main.c b/drivers/net/ll_temac_main.c index e53440253748..a18e3485476e 100644 --- a/drivers/net/ll_temac_main.c +++ b/drivers/net/ll_temac_main.c | |||
@@ -250,9 +250,10 @@ static void temac_set_multicast_list(struct net_device *ndev) | |||
250 | temac_indirect_out32(lp, XTE_AFM_OFFSET, XTE_AFM_EPPRM_MASK); | 250 | temac_indirect_out32(lp, XTE_AFM_OFFSET, XTE_AFM_EPPRM_MASK); |
251 | dev_info(&ndev->dev, "Promiscuous mode enabled.\n"); | 251 | dev_info(&ndev->dev, "Promiscuous mode enabled.\n"); |
252 | } else if (!netdev_mc_empty(ndev)) { | 252 | } else if (!netdev_mc_empty(ndev)) { |
253 | struct dev_mc_list *mclist = ndev->mc_list; | 253 | struct dev_mc_list *mclist; |
254 | for (i = 0; mclist && i < netdev_mc_count(ndev); i++) { | ||
255 | 254 | ||
255 | i = 0; | ||
256 | netdev_for_each_mc_addr(mclist, ndev) { | ||
256 | if (i >= MULTICAST_CAM_TABLE_NUM) | 257 | if (i >= MULTICAST_CAM_TABLE_NUM) |
257 | break; | 258 | break; |
258 | multi_addr_msw = ((mclist->dmi_addr[3] << 24) | | 259 | multi_addr_msw = ((mclist->dmi_addr[3] << 24) | |
@@ -265,7 +266,7 @@ static void temac_set_multicast_list(struct net_device *ndev) | |||
265 | (mclist->dmi_addr[4]) | (i << 16)); | 266 | (mclist->dmi_addr[4]) | (i << 16)); |
266 | temac_indirect_out32(lp, XTE_MAW1_OFFSET, | 267 | temac_indirect_out32(lp, XTE_MAW1_OFFSET, |
267 | multi_addr_lsw); | 268 | multi_addr_lsw); |
268 | mclist = mclist->next; | 269 | i++; |
269 | } | 270 | } |
270 | } else { | 271 | } else { |
271 | val = temac_indirect_in32(lp, XTE_AFM_OFFSET); | 272 | val = temac_indirect_in32(lp, XTE_AFM_OFFSET); |
diff --git a/drivers/net/lp486e.c b/drivers/net/lp486e.c index b1f5d79af61f..3e3cc04defd0 100644 --- a/drivers/net/lp486e.c +++ b/drivers/net/lp486e.c | |||
@@ -1267,8 +1267,8 @@ static void set_multicast_list(struct net_device *dev) { | |||
1267 | cmd->command = CmdMulticastList; | 1267 | cmd->command = CmdMulticastList; |
1268 | *((unsigned short *) (cmd + 1)) = netdev_mc_count(dev) * 6; | 1268 | *((unsigned short *) (cmd + 1)) = netdev_mc_count(dev) * 6; |
1269 | cp = ((char *)(cmd + 1))+2; | 1269 | cp = ((char *)(cmd + 1))+2; |
1270 | for (dmi = dev->mc_list; dmi != NULL; dmi = dmi->next) { | 1270 | netdev_for_each_mc_addr(dmi, dev) { |
1271 | memcpy(cp, dmi,6); | 1271 | memcpy(cp, dmi->dmi_addr, 6); |
1272 | cp += 6; | 1272 | cp += 6; |
1273 | } | 1273 | } |
1274 | if (i596_debug & LOG_SRCDST) | 1274 | if (i596_debug & LOG_SRCDST) |
diff --git a/drivers/net/mac89x0.c b/drivers/net/mac89x0.c index 23b633e2ac42..c292a608f9a9 100644 --- a/drivers/net/mac89x0.c +++ b/drivers/net/mac89x0.c | |||
@@ -568,9 +568,7 @@ static void set_multicast_list(struct net_device *dev) | |||
568 | if(dev->flags&IFF_PROMISC) | 568 | if(dev->flags&IFF_PROMISC) |
569 | { | 569 | { |
570 | lp->rx_mode = RX_ALL_ACCEPT; | 570 | lp->rx_mode = RX_ALL_ACCEPT; |
571 | } | 571 | } else if ((dev->flags & IFF_ALLMULTI) || !netdev_mc_empty(dev)) { |
572 | else if((dev->flags&IFF_ALLMULTI)||dev->mc_list) | ||
573 | { | ||
574 | /* The multicast-accept list is initialized to accept-all, and we | 572 | /* The multicast-accept list is initialized to accept-all, and we |
575 | rely on higher-level filtering for now. */ | 573 | rely on higher-level filtering for now. */ |
576 | lp->rx_mode = RX_MULTCAST_ACCEPT; | 574 | lp->rx_mode = RX_MULTCAST_ACCEPT; |
diff --git a/drivers/net/macb.c b/drivers/net/macb.c index 7a5f89728a81..c8a18a6203c8 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c | |||
@@ -884,15 +884,12 @@ static void macb_sethashtable(struct net_device *dev) | |||
884 | { | 884 | { |
885 | struct dev_mc_list *curr; | 885 | struct dev_mc_list *curr; |
886 | unsigned long mc_filter[2]; | 886 | unsigned long mc_filter[2]; |
887 | unsigned int i, bitnr; | 887 | unsigned int bitnr; |
888 | struct macb *bp = netdev_priv(dev); | 888 | struct macb *bp = netdev_priv(dev); |
889 | 889 | ||
890 | mc_filter[0] = mc_filter[1] = 0; | 890 | mc_filter[0] = mc_filter[1] = 0; |
891 | 891 | ||
892 | curr = dev->mc_list; | 892 | netdev_for_each_mc_addr(curr, dev) { |
893 | for (i = 0; i < netdev_mc_count(dev); i++, curr = curr->next) { | ||
894 | if (!curr) break; /* unexpected end of list */ | ||
895 | |||
896 | bitnr = hash_get_index(curr->dmi_addr); | 893 | bitnr = hash_get_index(curr->dmi_addr); |
897 | mc_filter[bitnr >> 5] |= 1 << (bitnr & 31); | 894 | mc_filter[bitnr >> 5] |= 1 << (bitnr & 31); |
898 | } | 895 | } |
diff --git a/drivers/net/mace.c b/drivers/net/mace.c index fdb0bbdd6782..57534f0e906d 100644 --- a/drivers/net/mace.c +++ b/drivers/net/mace.c | |||
@@ -588,7 +588,7 @@ static void mace_set_multicast(struct net_device *dev) | |||
588 | { | 588 | { |
589 | struct mace_data *mp = netdev_priv(dev); | 589 | struct mace_data *mp = netdev_priv(dev); |
590 | volatile struct mace __iomem *mb = mp->mace; | 590 | volatile struct mace __iomem *mb = mp->mace; |
591 | int i, j; | 591 | int i; |
592 | u32 crc; | 592 | u32 crc; |
593 | unsigned long flags; | 593 | unsigned long flags; |
594 | 594 | ||
@@ -598,7 +598,7 @@ static void mace_set_multicast(struct net_device *dev) | |||
598 | mp->maccc |= PROM; | 598 | mp->maccc |= PROM; |
599 | } else { | 599 | } else { |
600 | unsigned char multicast_filter[8]; | 600 | unsigned char multicast_filter[8]; |
601 | struct dev_mc_list *dmi = dev->mc_list; | 601 | struct dev_mc_list *dmi; |
602 | 602 | ||
603 | if (dev->flags & IFF_ALLMULTI) { | 603 | if (dev->flags & IFF_ALLMULTI) { |
604 | for (i = 0; i < 8; i++) | 604 | for (i = 0; i < 8; i++) |
@@ -606,11 +606,10 @@ static void mace_set_multicast(struct net_device *dev) | |||
606 | } else { | 606 | } else { |
607 | for (i = 0; i < 8; i++) | 607 | for (i = 0; i < 8; i++) |
608 | multicast_filter[i] = 0; | 608 | multicast_filter[i] = 0; |
609 | for (i = 0; i < netdev_mc_count(dev); i++) { | 609 | netdev_for_each_mc_addr(dmi, dev) { |
610 | crc = ether_crc_le(6, dmi->dmi_addr); | 610 | crc = ether_crc_le(6, dmi->dmi_addr); |
611 | j = crc >> 26; /* bit number in multicast_filter */ | 611 | i = crc >> 26; /* bit number in multicast_filter */ |
612 | multicast_filter[j >> 3] |= 1 << (j & 7); | 612 | multicast_filter[i >> 3] |= 1 << (i & 7); |
613 | dmi = dmi->next; | ||
614 | } | 613 | } |
615 | } | 614 | } |
616 | #if 0 | 615 | #if 0 |
diff --git a/drivers/net/macmace.c b/drivers/net/macmace.c index 740accbf0806..4e4eac0ba176 100644 --- a/drivers/net/macmace.c +++ b/drivers/net/macmace.c | |||
@@ -496,7 +496,7 @@ static void mace_set_multicast(struct net_device *dev) | |||
496 | { | 496 | { |
497 | struct mace_data *mp = netdev_priv(dev); | 497 | struct mace_data *mp = netdev_priv(dev); |
498 | volatile struct mace *mb = mp->mace; | 498 | volatile struct mace *mb = mp->mace; |
499 | int i, j; | 499 | int i; |
500 | u32 crc; | 500 | u32 crc; |
501 | u8 maccc; | 501 | u8 maccc; |
502 | unsigned long flags; | 502 | unsigned long flags; |
@@ -509,7 +509,7 @@ static void mace_set_multicast(struct net_device *dev) | |||
509 | mb->maccc |= PROM; | 509 | mb->maccc |= PROM; |
510 | } else { | 510 | } else { |
511 | unsigned char multicast_filter[8]; | 511 | unsigned char multicast_filter[8]; |
512 | struct dev_mc_list *dmi = dev->mc_list; | 512 | struct dev_mc_list *dmi; |
513 | 513 | ||
514 | if (dev->flags & IFF_ALLMULTI) { | 514 | if (dev->flags & IFF_ALLMULTI) { |
515 | for (i = 0; i < 8; i++) { | 515 | for (i = 0; i < 8; i++) { |
@@ -518,11 +518,11 @@ static void mace_set_multicast(struct net_device *dev) | |||
518 | } else { | 518 | } else { |
519 | for (i = 0; i < 8; i++) | 519 | for (i = 0; i < 8; i++) |
520 | multicast_filter[i] = 0; | 520 | multicast_filter[i] = 0; |
521 | for (i = 0; i < netdev_mc_count(dev); i++) { | 521 | netdev_for_each_mc_addr(dmi, dev) { |
522 | crc = ether_crc_le(6, dmi->dmi_addr); | 522 | crc = ether_crc_le(6, dmi->dmi_addr); |
523 | j = crc >> 26; /* bit number in multicast_filter */ | 523 | /* bit number in multicast_filter */ |
524 | multicast_filter[j >> 3] |= 1 << (j & 7); | 524 | i = crc >> 26; |
525 | dmi = dmi->next; | 525 | multicast_filter[i >> 3] |= 1 << (i & 7); |
526 | } | 526 | } |
527 | } | 527 | } |
528 | 528 | ||
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index 2733b0a3b703..c97b6e4365a9 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c | |||
@@ -1794,7 +1794,7 @@ oom: | |||
1794 | memset(mc_spec, 0, 0x100); | 1794 | memset(mc_spec, 0, 0x100); |
1795 | memset(mc_other, 0, 0x100); | 1795 | memset(mc_other, 0, 0x100); |
1796 | 1796 | ||
1797 | for (addr = dev->mc_list; addr != NULL; addr = addr->next) { | 1797 | netdev_for_each_mc_addr(addr, dev) { |
1798 | u8 *a = addr->da_addr; | 1798 | u8 *a = addr->da_addr; |
1799 | u32 *table; | 1799 | u32 *table; |
1800 | int entry; | 1800 | int entry; |
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index 1d14a8b05fa0..aae2ddb5d827 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c | |||
@@ -3035,7 +3035,7 @@ static void myri10ge_set_multicast_list(struct net_device *dev) | |||
3035 | } | 3035 | } |
3036 | 3036 | ||
3037 | /* Walk the multicast list, and add each address */ | 3037 | /* Walk the multicast list, and add each address */ |
3038 | for (mc_list = dev->mc_list; mc_list != NULL; mc_list = mc_list->next) { | 3038 | netdev_for_each_mc_addr(mc_list, dev) { |
3039 | memcpy(data, &mc_list->dmi_addr, 6); | 3039 | memcpy(data, &mc_list->dmi_addr, 6); |
3040 | cmd.data0 = ntohl(data[0]); | 3040 | cmd.data0 = ntohl(data[0]); |
3041 | cmd.data1 = ntohl(data[1]); | 3041 | cmd.data1 = ntohl(data[1]); |
diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c index c64e5b0d3596..e52038783245 100644 --- a/drivers/net/natsemi.c +++ b/drivers/net/natsemi.c | |||
@@ -2495,9 +2495,9 @@ static void __set_rx_mode(struct net_device *dev) | |||
2495 | } else { | 2495 | } else { |
2496 | struct dev_mc_list *mclist; | 2496 | struct dev_mc_list *mclist; |
2497 | int i; | 2497 | int i; |
2498 | |||
2498 | memset(mc_filter, 0, sizeof(mc_filter)); | 2499 | memset(mc_filter, 0, sizeof(mc_filter)); |
2499 | for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); | 2500 | netdev_for_each_mc_addr(mclist, dev) { |
2500 | i++, mclist = mclist->next) { | ||
2501 | int b = (ether_crc(ETH_ALEN, mclist->dmi_addr) >> 23) & 0x1ff; | 2501 | int b = (ether_crc(ETH_ALEN, mclist->dmi_addr) >> 23) & 0x1ff; |
2502 | mc_filter[b/8] |= (1 << (b & 0x07)); | 2502 | mc_filter[b/8] |= (1 << (b & 0x07)); |
2503 | } | 2503 | } |
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c index 25f4414cc33e..a945591298a8 100644 --- a/drivers/net/netxen/netxen_nic_hw.c +++ b/drivers/net/netxen/netxen_nic_hw.c | |||
@@ -539,7 +539,7 @@ void netxen_p2_nic_set_multi(struct net_device *netdev) | |||
539 | struct netxen_adapter *adapter = netdev_priv(netdev); | 539 | struct netxen_adapter *adapter = netdev_priv(netdev); |
540 | struct dev_mc_list *mc_ptr; | 540 | struct dev_mc_list *mc_ptr; |
541 | u8 null_addr[6]; | 541 | u8 null_addr[6]; |
542 | int index = 0; | 542 | int i; |
543 | 543 | ||
544 | memset(null_addr, 0, 6); | 544 | memset(null_addr, 0, 6); |
545 | 545 | ||
@@ -570,16 +570,13 @@ void netxen_p2_nic_set_multi(struct net_device *netdev) | |||
570 | 570 | ||
571 | netxen_nic_enable_mcast_filter(adapter); | 571 | netxen_nic_enable_mcast_filter(adapter); |
572 | 572 | ||
573 | for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next, index++) | 573 | i = 0; |
574 | netxen_nic_set_mcast_addr(adapter, index, mc_ptr->dmi_addr); | 574 | netdev_for_each_mc_addr(mc_ptr, netdev) |
575 | 575 | netxen_nic_set_mcast_addr(adapter, i++, mc_ptr->dmi_addr); | |
576 | if (index != netdev_mc_count(netdev)) | ||
577 | printk(KERN_WARNING "%s: %s multicast address count mismatch\n", | ||
578 | netxen_nic_driver_name, netdev->name); | ||
579 | 576 | ||
580 | /* Clear out remaining addresses */ | 577 | /* Clear out remaining addresses */ |
581 | for (; index < adapter->max_mc_count; index++) | 578 | while (i < adapter->max_mc_count) |
582 | netxen_nic_set_mcast_addr(adapter, index, null_addr); | 579 | netxen_nic_set_mcast_addr(adapter, i++, null_addr); |
583 | } | 580 | } |
584 | 581 | ||
585 | static int | 582 | static int |
@@ -710,10 +707,8 @@ void netxen_p3_nic_set_multi(struct net_device *netdev) | |||
710 | } | 707 | } |
711 | 708 | ||
712 | if (!netdev_mc_empty(netdev)) { | 709 | if (!netdev_mc_empty(netdev)) { |
713 | for (mc_ptr = netdev->mc_list; mc_ptr; | 710 | netdev_for_each_mc_addr(mc_ptr, netdev) |
714 | mc_ptr = mc_ptr->next) { | ||
715 | nx_p3_nic_add_mac(adapter, mc_ptr->dmi_addr, &del_list); | 711 | nx_p3_nic_add_mac(adapter, mc_ptr->dmi_addr, &del_list); |
716 | } | ||
717 | } | 712 | } |
718 | 713 | ||
719 | send_fw_cmd: | 714 | send_fw_cmd: |
diff --git a/drivers/net/ni5010.c b/drivers/net/ni5010.c index 6a87d810e59d..c16cbfb4061b 100644 --- a/drivers/net/ni5010.c +++ b/drivers/net/ni5010.c | |||
@@ -651,7 +651,8 @@ static void ni5010_set_multicast_list(struct net_device *dev) | |||
651 | 651 | ||
652 | PRINTK2((KERN_DEBUG "%s: entering set_multicast_list\n", dev->name)); | 652 | PRINTK2((KERN_DEBUG "%s: entering set_multicast_list\n", dev->name)); |
653 | 653 | ||
654 | if (dev->flags&IFF_PROMISC || dev->flags&IFF_ALLMULTI || dev->mc_list) { | 654 | if (dev->flags & IFF_PROMISC || dev->flags & IFF_ALLMULTI || |
655 | !netdev_mc_empty(dev)) { | ||
655 | outb(RMD_PROMISC, EDLC_RMODE); /* Enable promiscuous mode */ | 656 | outb(RMD_PROMISC, EDLC_RMODE); /* Enable promiscuous mode */ |
656 | PRINTK((KERN_DEBUG "%s: Entering promiscuous mode\n", dev->name)); | 657 | PRINTK((KERN_DEBUG "%s: Entering promiscuous mode\n", dev->name)); |
657 | } else { | 658 | } else { |
diff --git a/drivers/net/ni52.c b/drivers/net/ni52.c index 497c6d514a68..05c29c2cef2a 100644 --- a/drivers/net/ni52.c +++ b/drivers/net/ni52.c | |||
@@ -596,7 +596,7 @@ static int init586(struct net_device *dev) | |||
596 | struct iasetup_cmd_struct __iomem *ias_cmd; | 596 | struct iasetup_cmd_struct __iomem *ias_cmd; |
597 | struct tdr_cmd_struct __iomem *tdr_cmd; | 597 | struct tdr_cmd_struct __iomem *tdr_cmd; |
598 | struct mcsetup_cmd_struct __iomem *mc_cmd; | 598 | struct mcsetup_cmd_struct __iomem *mc_cmd; |
599 | struct dev_mc_list *dmi = dev->mc_list; | 599 | struct dev_mc_list *dmi; |
600 | int num_addrs = netdev_mc_count(dev); | 600 | int num_addrs = netdev_mc_count(dev); |
601 | 601 | ||
602 | ptr = p->scb + 1; | 602 | ptr = p->scb + 1; |
@@ -724,9 +724,9 @@ static int init586(struct net_device *dev) | |||
724 | writew(0xffff, &mc_cmd->cmd_link); | 724 | writew(0xffff, &mc_cmd->cmd_link); |
725 | writew(num_addrs * 6, &mc_cmd->mc_cnt); | 725 | writew(num_addrs * 6, &mc_cmd->mc_cnt); |
726 | 726 | ||
727 | for (i = 0; i < num_addrs; i++, dmi = dmi->next) | 727 | i = 0; |
728 | memcpy_toio(mc_cmd->mc_list[i], | 728 | netdev_for_each_mc_addr(dmi, dev) |
729 | dmi->dmi_addr, 6); | 729 | memcpy_toio(mc_cmd->mc_list[i++], dmi->dmi_addr, 6); |
730 | 730 | ||
731 | writew(make16(mc_cmd), &p->scb->cbl_offset); | 731 | writew(make16(mc_cmd), &p->scb->cbl_offset); |
732 | writeb(CUC_START, &p->scb->cmd_cuc); | 732 | writeb(CUC_START, &p->scb->cmd_cuc); |
diff --git a/drivers/net/niu.c b/drivers/net/niu.c index 5e604e305d95..0678f3106cbc 100644 --- a/drivers/net/niu.c +++ b/drivers/net/niu.c | |||
@@ -6365,7 +6365,7 @@ static void niu_set_rx_mode(struct net_device *dev) | |||
6365 | for (i = 0; i < 16; i++) | 6365 | for (i = 0; i < 16; i++) |
6366 | hash[i] = 0xffff; | 6366 | hash[i] = 0xffff; |
6367 | } else if (!netdev_mc_empty(dev)) { | 6367 | } else if (!netdev_mc_empty(dev)) { |
6368 | for (addr = dev->mc_list; addr; addr = addr->next) { | 6368 | netdev_for_each_mc_addr(addr, dev) { |
6369 | u32 crc = ether_crc_le(ETH_ALEN, addr->da_addr); | 6369 | u32 crc = ether_crc_le(ETH_ALEN, addr->da_addr); |
6370 | 6370 | ||
6371 | crc >>= 24; | 6371 | crc >>= 24; |
diff --git a/drivers/net/pci-skeleton.c b/drivers/net/pci-skeleton.c index 11d4398eac94..36785853a149 100644 --- a/drivers/net/pci-skeleton.c +++ b/drivers/net/pci-skeleton.c | |||
@@ -1793,7 +1793,7 @@ static void netdrv_set_rx_mode(struct net_device *dev) | |||
1793 | struct netdrv_private *tp = netdev_priv(dev); | 1793 | struct netdrv_private *tp = netdev_priv(dev); |
1794 | void *ioaddr = tp->mmio_addr; | 1794 | void *ioaddr = tp->mmio_addr; |
1795 | u32 mc_filter[2]; /* Multicast hash filter */ | 1795 | u32 mc_filter[2]; /* Multicast hash filter */ |
1796 | int i, rx_mode; | 1796 | int rx_mode; |
1797 | u32 tmp; | 1797 | u32 tmp; |
1798 | 1798 | ||
1799 | DPRINTK("ENTER\n"); | 1799 | DPRINTK("ENTER\n"); |
@@ -1814,10 +1814,10 @@ static void netdrv_set_rx_mode(struct net_device *dev) | |||
1814 | mc_filter[1] = mc_filter[0] = 0xffffffff; | 1814 | mc_filter[1] = mc_filter[0] = 0xffffffff; |
1815 | } else { | 1815 | } else { |
1816 | struct dev_mc_list *mclist; | 1816 | struct dev_mc_list *mclist; |
1817 | |||
1817 | rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys; | 1818 | rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys; |
1818 | mc_filter[1] = mc_filter[0] = 0; | 1819 | mc_filter[1] = mc_filter[0] = 0; |
1819 | for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); | 1820 | netdev_for_each_mc_addr(mclist, dev) { |
1820 | i++, mclist = mclist->next) { | ||
1821 | int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26; | 1821 | int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26; |
1822 | 1822 | ||
1823 | mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31); | 1823 | mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31); |
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c index 63e03159daf7..084d78dd1637 100644 --- a/drivers/net/pcnet32.c +++ b/drivers/net/pcnet32.c | |||
@@ -2590,7 +2590,7 @@ static void pcnet32_load_multicast(struct net_device *dev) | |||
2590 | struct pcnet32_private *lp = netdev_priv(dev); | 2590 | struct pcnet32_private *lp = netdev_priv(dev); |
2591 | volatile struct pcnet32_init_block *ib = lp->init_block; | 2591 | volatile struct pcnet32_init_block *ib = lp->init_block; |
2592 | volatile __le16 *mcast_table = (__le16 *)ib->filter; | 2592 | volatile __le16 *mcast_table = (__le16 *)ib->filter; |
2593 | struct dev_mc_list *dmi = dev->mc_list; | 2593 | struct dev_mc_list *dmi; |
2594 | unsigned long ioaddr = dev->base_addr; | 2594 | unsigned long ioaddr = dev->base_addr; |
2595 | char *addrs; | 2595 | char *addrs; |
2596 | int i; | 2596 | int i; |
@@ -2611,9 +2611,8 @@ static void pcnet32_load_multicast(struct net_device *dev) | |||
2611 | ib->filter[1] = 0; | 2611 | ib->filter[1] = 0; |
2612 | 2612 | ||
2613 | /* Add addresses */ | 2613 | /* Add addresses */ |
2614 | for (i = 0; i < netdev_mc_count(dev); i++) { | 2614 | netdev_for_each_mc_addr(dmi, dev) { |
2615 | addrs = dmi->dmi_addr; | 2615 | addrs = dmi->dmi_addr; |
2616 | dmi = dmi->next; | ||
2617 | 2616 | ||
2618 | /* multicast address? */ | 2617 | /* multicast address? */ |
2619 | if (!(*addrs & 1)) | 2618 | if (!(*addrs & 1)) |
diff --git a/drivers/net/ps3_gelic_net.c b/drivers/net/ps3_gelic_net.c index c19dd4a6cd76..a849f6f23a17 100644 --- a/drivers/net/ps3_gelic_net.c +++ b/drivers/net/ps3_gelic_net.c | |||
@@ -580,7 +580,7 @@ void gelic_net_set_multi(struct net_device *netdev) | |||
580 | } | 580 | } |
581 | 581 | ||
582 | /* set multicast addresses */ | 582 | /* set multicast addresses */ |
583 | for (mc = netdev->mc_list; mc; mc = mc->next) { | 583 | netdev_for_each_mc_addr(mc, netdev) { |
584 | addr = 0; | 584 | addr = 0; |
585 | p = mc->dmi_addr; | 585 | p = mc->dmi_addr; |
586 | for (i = 0; i < ETH_ALEN; i++) { | 586 | for (i = 0; i < ETH_ALEN; i++) { |
diff --git a/drivers/net/qlcnic/qlcnic_hw.c b/drivers/net/qlcnic/qlcnic_hw.c index 8ea7f869e293..99a4d1379d00 100644 --- a/drivers/net/qlcnic/qlcnic_hw.c +++ b/drivers/net/qlcnic/qlcnic_hw.c | |||
@@ -453,8 +453,7 @@ void qlcnic_set_multi(struct net_device *netdev) | |||
453 | } | 453 | } |
454 | 454 | ||
455 | if (!netdev_mc_empty(netdev)) { | 455 | if (!netdev_mc_empty(netdev)) { |
456 | for (mc_ptr = netdev->mc_list; mc_ptr; | 456 | netdev_for_each_mc_addr(mc_ptr, netdev) { |
457 | mc_ptr = mc_ptr->next) { | ||
458 | qlcnic_nic_add_mac(adapter, mc_ptr->dmi_addr, | 457 | qlcnic_nic_add_mac(adapter, mc_ptr->dmi_addr, |
459 | &del_list); | 458 | &del_list); |
460 | } | 459 | } |
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c index c170349717c5..c26ec5d740f6 100644 --- a/drivers/net/qlge/qlge_main.c +++ b/drivers/net/qlge/qlge_main.c | |||
@@ -4270,8 +4270,8 @@ static void qlge_set_multicast_list(struct net_device *ndev) | |||
4270 | status = ql_sem_spinlock(qdev, SEM_MAC_ADDR_MASK); | 4270 | status = ql_sem_spinlock(qdev, SEM_MAC_ADDR_MASK); |
4271 | if (status) | 4271 | if (status) |
4272 | goto exit; | 4272 | goto exit; |
4273 | for (i = 0, mc_ptr = ndev->mc_list; mc_ptr; | 4273 | i = 0; |
4274 | i++, mc_ptr = mc_ptr->next) | 4274 | netdev_for_each_mc_addr(mc_ptr, ndev) { |
4275 | if (ql_set_mac_addr_reg(qdev, (u8 *) mc_ptr->dmi_addr, | 4275 | if (ql_set_mac_addr_reg(qdev, (u8 *) mc_ptr->dmi_addr, |
4276 | MAC_ADDR_TYPE_MULTI_MAC, i)) { | 4276 | MAC_ADDR_TYPE_MULTI_MAC, i)) { |
4277 | netif_err(qdev, hw, qdev->ndev, | 4277 | netif_err(qdev, hw, qdev->ndev, |
@@ -4279,6 +4279,8 @@ static void qlge_set_multicast_list(struct net_device *ndev) | |||
4279 | ql_sem_unlock(qdev, SEM_MAC_ADDR_MASK); | 4279 | ql_sem_unlock(qdev, SEM_MAC_ADDR_MASK); |
4280 | goto exit; | 4280 | goto exit; |
4281 | } | 4281 | } |
4282 | i++; | ||
4283 | } | ||
4282 | ql_sem_unlock(qdev, SEM_MAC_ADDR_MASK); | 4284 | ql_sem_unlock(qdev, SEM_MAC_ADDR_MASK); |
4283 | if (ql_set_routing_reg | 4285 | if (ql_set_routing_reg |
4284 | (qdev, RT_IDX_MCAST_MATCH_SLOT, RT_IDX_MCAST_MATCH, 1)) { | 4286 | (qdev, RT_IDX_MCAST_MATCH_SLOT, RT_IDX_MCAST_MATCH, 1)) { |
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c index b8103425facb..15d5373dc8f3 100644 --- a/drivers/net/r6040.c +++ b/drivers/net/r6040.c | |||
@@ -938,7 +938,7 @@ static void r6040_multicast_list(struct net_device *dev) | |||
938 | u16 *adrp; | 938 | u16 *adrp; |
939 | u16 reg; | 939 | u16 reg; |
940 | unsigned long flags; | 940 | unsigned long flags; |
941 | struct dev_mc_list *dmi = dev->mc_list; | 941 | struct dev_mc_list *dmi; |
942 | int i; | 942 | int i; |
943 | 943 | ||
944 | /* MAC Address */ | 944 | /* MAC Address */ |
@@ -973,11 +973,9 @@ static void r6040_multicast_list(struct net_device *dev) | |||
973 | for (i = 0; i < 4; i++) | 973 | for (i = 0; i < 4; i++) |
974 | hash_table[i] = 0; | 974 | hash_table[i] = 0; |
975 | 975 | ||
976 | for (i = 0; i < netdev_mc_count(dev); i++) { | 976 | netdev_for_each_mc_addr(dmi, dev) { |
977 | char *addrs = dmi->dmi_addr; | 977 | char *addrs = dmi->dmi_addr; |
978 | 978 | ||
979 | dmi = dmi->next; | ||
980 | |||
981 | if (!(*addrs & 1)) | 979 | if (!(*addrs & 1)) |
982 | continue; | 980 | continue; |
983 | 981 | ||
@@ -995,17 +993,19 @@ static void r6040_multicast_list(struct net_device *dev) | |||
995 | iowrite16(hash_table[3], ioaddr + MAR3); | 993 | iowrite16(hash_table[3], ioaddr + MAR3); |
996 | } | 994 | } |
997 | /* Multicast Address 1~4 case */ | 995 | /* Multicast Address 1~4 case */ |
998 | for (i = 0, dmi; (i < netdev_mc_count(dev)) && (i < MCAST_MAX); i++) { | 996 | i = 0; |
999 | adrp = (u16 *)dmi->dmi_addr; | 997 | netdev_for_each_mc_addr(dmi, dev) { |
1000 | iowrite16(adrp[0], ioaddr + MID_1L + 8*i); | 998 | if (i < MCAST_MAX) { |
1001 | iowrite16(adrp[1], ioaddr + MID_1M + 8*i); | 999 | adrp = (u16 *) dmi->dmi_addr; |
1002 | iowrite16(adrp[2], ioaddr + MID_1H + 8*i); | 1000 | iowrite16(adrp[0], ioaddr + MID_1L + 8 * i); |
1003 | dmi = dmi->next; | 1001 | iowrite16(adrp[1], ioaddr + MID_1M + 8 * i); |
1004 | } | 1002 | iowrite16(adrp[2], ioaddr + MID_1H + 8 * i); |
1005 | for (i = netdev_mc_count(dev); i < MCAST_MAX; i++) { | 1003 | } else { |
1006 | iowrite16(0xffff, ioaddr + MID_0L + 8*i); | 1004 | iowrite16(0xffff, ioaddr + MID_0L + 8 * i); |
1007 | iowrite16(0xffff, ioaddr + MID_0M + 8*i); | 1005 | iowrite16(0xffff, ioaddr + MID_0M + 8 * i); |
1008 | iowrite16(0xffff, ioaddr + MID_0H + 8*i); | 1006 | iowrite16(0xffff, ioaddr + MID_0H + 8 * i); |
1007 | } | ||
1008 | i++; | ||
1009 | } | 1009 | } |
1010 | } | 1010 | } |
1011 | 1011 | ||
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index 83965eeba456..dfc3573c91bb 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
@@ -4732,12 +4732,10 @@ static void rtl_set_rx_mode(struct net_device *dev) | |||
4732 | mc_filter[1] = mc_filter[0] = 0xffffffff; | 4732 | mc_filter[1] = mc_filter[0] = 0xffffffff; |
4733 | } else { | 4733 | } else { |
4734 | struct dev_mc_list *mclist; | 4734 | struct dev_mc_list *mclist; |
4735 | unsigned int i; | ||
4736 | 4735 | ||
4737 | rx_mode = AcceptBroadcast | AcceptMyPhys; | 4736 | rx_mode = AcceptBroadcast | AcceptMyPhys; |
4738 | mc_filter[1] = mc_filter[0] = 0; | 4737 | mc_filter[1] = mc_filter[0] = 0; |
4739 | for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); | 4738 | netdev_for_each_mc_addr(mclist, dev) { |
4740 | i++, mclist = mclist->next) { | ||
4741 | int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26; | 4739 | int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26; |
4742 | mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31); | 4740 | mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31); |
4743 | rx_mode |= AcceptMulticast; | 4741 | rx_mode |= AcceptMulticast; |