Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: convert multiple drivers to use netdev_for_each_mc_addr, part4

Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Jiri Pirko and committed by
David S. Miller
48e2f183 7a81e9f3

+69 -98
+2 -3
drivers/net/davinci_emac.c
··· 965 965 mbp_enable = (mbp_enable | EMAC_MBP_RXMCAST); 966 966 emac_add_mcast(priv, EMAC_ALL_MULTI_CLR, NULL); 967 967 /* program multicast address list into EMAC hardware */ 968 - for (mc_ptr = ndev->mc_list; mc_ptr; 969 - mc_ptr = mc_ptr->next) { 968 + netdev_for_each_mc_addr(mc_ptr, ndev) { 970 969 emac_add_mcast(priv, EMAC_MULTICAST_ADD, 971 - (u8 *)mc_ptr->dmi_addr); 970 + (u8 *) mc_ptr->dmi_addr); 972 971 } 973 972 } else { 974 973 mbp_enable = (mbp_enable & ~EMAC_MBP_RXMCAST);
+7 -3
drivers/net/e100.c
··· 1537 1537 static void e100_multi(struct nic *nic, struct cb *cb, struct sk_buff *skb) 1538 1538 { 1539 1539 struct net_device *netdev = nic->netdev; 1540 - struct dev_mc_list *list = netdev->mc_list; 1540 + struct dev_mc_list *list; 1541 1541 u16 i, count = min(netdev_mc_count(netdev), E100_MAX_MULTICAST_ADDRS); 1542 1542 1543 1543 cb->command = cpu_to_le16(cb_multi); 1544 1544 cb->u.multi.count = cpu_to_le16(count * ETH_ALEN); 1545 - for (i = 0; list && i < count; i++, list = list->next) 1546 - memcpy(&cb->u.multi.addr[i*ETH_ALEN], &list->dmi_addr, 1545 + i = 0; 1546 + netdev_for_each_mc_addr(list, netdev) { 1547 + if (i == count) 1548 + break; 1549 + memcpy(&cb->u.multi.addr[i++ * ETH_ALEN], &list->dmi_addr, 1547 1550 ETH_ALEN); 1551 + } 1548 1552 } 1549 1553 1550 1554 static void e100_set_multicast_list(struct net_device *netdev)
+3 -5
drivers/net/eepro.c
··· 1287 1287 struct eepro_local *lp = netdev_priv(dev); 1288 1288 short ioaddr = dev->base_addr; 1289 1289 unsigned short mode; 1290 - struct dev_mc_list *dmi=dev->mc_list; 1290 + struct dev_mc_list *dmi; 1291 1291 int mc_count = netdev_mc_count(dev); 1292 1292 1293 1293 if (dev->flags&(IFF_ALLMULTI|IFF_PROMISC) || mc_count > 63) ··· 1332 1332 outw(0, ioaddr + IO_PORT); 1333 1333 outw(6 * (mc_count + 1), ioaddr + IO_PORT); 1334 1334 1335 - for (i = 0; i < mc_count; i++) 1336 - { 1337 - eaddrs=(unsigned short *)dmi->dmi_addr; 1338 - dmi=dmi->next; 1335 + netdev_for_each_mc_addr(dmi, dev) { 1336 + eaddrs = (unsigned short *) dmi->dmi_addr; 1339 1337 outw(*eaddrs++, ioaddr + IO_PORT); 1340 1338 outw(*eaddrs++, ioaddr + IO_PORT); 1341 1339 outw(*eaddrs++, ioaddr + IO_PORT);
+6 -10
drivers/net/eexpress.c
··· 1588 1588 1589 1589 outw(CONF_NR_MULTICAST & ~31, ioaddr+SM_PTR); 1590 1590 outw(6*count, ioaddr+SHADOW(CONF_NR_MULTICAST)); 1591 - for (i = 0, dmi = dev->mc_list; i < count; i++, dmi = dmi->next) { 1592 - unsigned short *data; 1593 - if (!dmi) { 1594 - printk(KERN_INFO "%s: too few multicast addresses\n", dev->name); 1591 + i = 0; 1592 + netdev_for_each_mc_addr(dmi, dev) { 1593 + unsigned short *data = (unsigned short *) dmi->dmi_addr; 1594 + 1595 + if (i == count) 1595 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 1597 outw((CONF_MULTICAST+(6*i)) & ~31, ioaddr+SM_PTR); 1603 1598 outw(data[0], ioaddr+SHADOW(CONF_MULTICAST+(6*i))); 1604 1599 outw((CONF_MULTICAST+(6*i)+2) & ~31, ioaddr+SM_PTR); 1605 1600 outw(data[1], ioaddr+SHADOW(CONF_MULTICAST+(6*i)+2)); 1606 1601 outw((CONF_MULTICAST+(6*i)+4) & ~31, ioaddr+SM_PTR); 1607 1602 outw(data[2], ioaddr+SHADOW(CONF_MULTICAST+(6*i)+4)); 1603 + i++; 1608 1604 } 1609 1605 } 1610 1606
+2 -3
drivers/net/ehea/ehea_main.c
··· 1967 1967 { 1968 1968 struct ehea_port *port = netdev_priv(dev); 1969 1969 struct dev_mc_list *k_mcl_entry; 1970 - int ret, i; 1970 + int ret; 1971 1971 1972 1972 if (dev->flags & IFF_PROMISC) { 1973 1973 ehea_promiscuous(dev, 1); ··· 1997 1997 goto out; 1998 1998 } 1999 1999 2000 - for (i = 0, k_mcl_entry = dev->mc_list; i < netdev_mc_count(dev); i++, 2001 - k_mcl_entry = k_mcl_entry->next) 2000 + netdev_for_each_mc_addr(k_mcl_entry, dev) 2002 2001 ehea_add_multicast_entry(port, k_mcl_entry->dmi_addr); 2003 2002 2004 2003 }
+6 -4
drivers/net/enic/enic_main.c
··· 822 822 static void enic_set_multicast_list(struct net_device *netdev) 823 823 { 824 824 struct enic *enic = netdev_priv(netdev); 825 - struct dev_mc_list *list = netdev->mc_list; 825 + struct dev_mc_list *list; 826 826 int directed = 1; 827 827 int multicast = (netdev->flags & IFF_MULTICAST) ? 1 : 0; 828 828 int broadcast = (netdev->flags & IFF_BROADCAST) ? 1 : 0; ··· 851 851 * look for changes to add/del. 852 852 */ 853 853 854 - for (i = 0; list && i < mc_count; i++) { 855 - memcpy(mc_addr[i], list->dmi_addr, ETH_ALEN); 856 - list = list->next; 854 + i = 0; 855 + netdev_for_each_mc_addr(list, netdev) { 856 + if (i == mc_count) 857 + break; 858 + memcpy(mc_addr[i++], list->dmi_addr, ETH_ALEN); 857 859 } 858 860 859 861 for (i = 0; i < enic->mc_count; i++) {
+1 -2
drivers/net/epic100.c
··· 1403 1403 struct dev_mc_list *mclist; 1404 1404 1405 1405 memset(mc_filter, 0, sizeof(mc_filter)); 1406 - for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); 1407 - i++, mclist = mclist->next) { 1406 + netdev_for_each_mc_addr(mclist, dev) { 1408 1407 unsigned int bit_nr = 1409 1408 ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x3f; 1410 1409 mc_filter[bit_nr >> 3] |= (1 << bit_nr);
+3 -3
drivers/net/ethoc.c
··· 755 755 { 756 756 struct ethoc *priv = netdev_priv(dev); 757 757 u32 mode = ethoc_read(priv, MODER); 758 - struct dev_mc_list *mc = NULL; 758 + struct dev_mc_list *mc; 759 759 u32 hash[2] = { 0, 0 }; 760 760 761 761 /* set loopback mode if requested */ ··· 783 783 hash[0] = 0xffffffff; 784 784 hash[1] = 0xffffffff; 785 785 } else { 786 - for (mc = dev->mc_list; mc; mc = mc->next) { 787 - u32 crc = ether_crc(mc->dmi_addrlen, mc->dmi_addr); 786 + netdev_for_each_mc_addr(mc, dev) { 787 + u32 crc = ether_crc(ETH_ALEN, mc->dmi_addr); 788 788 int bit = (crc >> 26) & 0x3f; 789 789 hash[bit >> 5] |= 1 << (bit & 0x1f); 790 790 }
+2 -3
drivers/net/ewrk3.c
··· 1169 1169 static void SetMulticastFilter(struct net_device *dev) 1170 1170 { 1171 1171 struct ewrk3_private *lp = netdev_priv(dev); 1172 - struct dev_mc_list *dmi = dev->mc_list; 1172 + struct dev_mc_list *dmi; 1173 1173 u_long iobase = dev->base_addr; 1174 1174 int i; 1175 1175 char *addrs, bit, byte; ··· 1213 1213 } 1214 1214 1215 1215 /* Update table */ 1216 - for (i = 0; i < netdev_mc_count(dev); i++) { /* for each address in the list */ 1216 + netdev_for_each_mc_addr(dmi, dev) { 1217 1217 addrs = dmi->dmi_addr; 1218 - dmi = dmi->next; 1219 1218 if ((*addrs & 0x01) == 1) { /* multicast address? */ 1220 1219 crc = ether_crc_le(ETH_ALEN, addrs); 1221 1220 hashcode = crc & ((1 << 9) - 1); /* hashcode is 9 LSb of CRC */
+1 -3
drivers/net/fealnx.c
··· 1793 1793 rx_mode = CR_W_AB | CR_W_AM; 1794 1794 } else { 1795 1795 struct dev_mc_list *mclist; 1796 - int i; 1797 1796 1798 1797 memset(mc_filter, 0, sizeof(mc_filter)); 1799 - for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); 1800 - i++, mclist = mclist->next) { 1798 + netdev_for_each_mc_addr(mclist, dev) { 1801 1799 unsigned int bit; 1802 1800 bit = (ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26) ^ 0x3F; 1803 1801 mc_filter[bit >> 5] |= (1 << bit);
+2 -4
drivers/net/fec.c
··· 1575 1575 { 1576 1576 struct fec_enet_private *fep = netdev_priv(dev); 1577 1577 struct dev_mc_list *dmi; 1578 - unsigned int i, j, bit, data, crc, tmp; 1578 + unsigned int i, bit, data, crc, tmp; 1579 1579 unsigned char hash; 1580 1580 1581 1581 if (dev->flags & IFF_PROMISC) { ··· 1604 1604 writel(0, fep->hwp + FEC_GRP_HASH_TABLE_HIGH); 1605 1605 writel(0, fep->hwp + FEC_GRP_HASH_TABLE_LOW); 1606 1606 1607 - dmi = dev->mc_list; 1608 - 1609 - for (j = 0; j < netdev_mc_count(dev); j++, dmi = dmi->next) { 1607 + netdev_for_each_mc_addr(dmi, dev) { 1610 1608 /* Only support group multicast for now */ 1611 1609 if (!(dmi->dmi_addr[0] & 1)) 1612 1610 continue;
+1 -4
drivers/net/fec_mpc52xx.c
··· 575 575 out_be32(&fec->gaddr2, 0xffffffff); 576 576 } else { 577 577 u32 crc; 578 - int i; 579 578 struct dev_mc_list *dmi; 580 579 u32 gaddr1 = 0x00000000; 581 580 u32 gaddr2 = 0x00000000; 582 581 583 - dmi = dev->mc_list; 584 - for (i=0; i<netdev_mc_count(dev); i++) { 582 + netdev_for_each_mc_addr(dmi, dev) { 585 583 crc = ether_crc_le(6, dmi->dmi_addr) >> 26; 586 584 if (crc >= 32) 587 585 gaddr1 |= 1 << (crc-32); 588 586 else 589 587 gaddr2 |= 1 << crc; 590 - dmi = dmi->next; 591 588 } 592 589 out_be32(&fec->gaddr1, gaddr1); 593 590 out_be32(&fec->gaddr2, gaddr2);
+2 -4
drivers/net/forcedeth.c
··· 3095 3095 } else { 3096 3096 pff |= NVREG_PFF_MYADDR; 3097 3097 3098 - if (dev->flags & IFF_ALLMULTI || dev->mc_list) { 3098 + if (dev->flags & IFF_ALLMULTI || !netdev_mc_empty(dev)) { 3099 3099 u32 alwaysOff[2]; 3100 3100 u32 alwaysOn[2]; 3101 3101 ··· 3105 3105 } else { 3106 3106 struct dev_mc_list *walk; 3107 3107 3108 - walk = dev->mc_list; 3109 - while (walk != NULL) { 3108 + netdev_for_each_mc_addr(walk, dev) { 3110 3109 u32 a, b; 3111 3110 a = le32_to_cpu(*(__le32 *) walk->dmi_addr); 3112 3111 b = le16_to_cpu(*(__le16 *) (&walk->dmi_addr[4])); ··· 3113 3114 alwaysOff[0] &= ~a; 3114 3115 alwaysOn[1] &= b; 3115 3116 alwaysOff[1] &= ~b; 3116 - walk = walk->next; 3117 3117 } 3118 3118 } 3119 3119 addr[0] = alwaysOn[0];
+1 -1
drivers/net/fs_enet/mac-fcc.c
··· 235 235 236 236 if ((dev->flags & IFF_PROMISC) == 0) { 237 237 set_multicast_start(dev); 238 - for (pmc = dev->mc_list; pmc != NULL; pmc = pmc->next) 238 + netdev_for_each_mc_addr(pmc, dev) 239 239 set_multicast_one(dev, pmc->dmi_addr); 240 240 set_multicast_finish(dev); 241 241 } else
+1 -1
drivers/net/fs_enet/mac-fec.c
··· 236 236 237 237 if ((dev->flags & IFF_PROMISC) == 0) { 238 238 set_multicast_start(dev); 239 - for (pmc = dev->mc_list; pmc != NULL; pmc = pmc->next) 239 + netdev_for_each_mc_addr(pmc, dev) 240 240 set_multicast_one(dev, pmc->dmi_addr); 241 241 set_multicast_finish(dev); 242 242 } else
+1 -1
drivers/net/fs_enet/mac-scc.c
··· 228 228 229 229 if ((dev->flags & IFF_PROMISC) == 0) { 230 230 set_multicast_start(dev); 231 - for (pmc = dev->mc_list; pmc != NULL; pmc = pmc->next) 231 + netdev_for_each_mc_addr(pmc, dev) 232 232 set_multicast_one(dev, pmc->dmi_addr); 233 233 set_multicast_finish(dev); 234 234 } else
+1 -1
drivers/net/gianfar.c
··· 2867 2867 return; 2868 2868 2869 2869 /* Parse the list, and set the appropriate bits */ 2870 - for(mc_ptr = dev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) { 2870 + netdev_for_each_mc_addr(mc_ptr, dev) { 2871 2871 if (idx < em_num) { 2872 2872 gfar_set_mac_for_addr(dev, idx, 2873 2873 mc_ptr->dmi_addr);
+4 -3
drivers/net/hamachi.c
··· 1859 1859 writew(0x000B, ioaddr + AddrMode); 1860 1860 } else if (!netdev_mc_empty(dev)) { /* Must use the CAM filter. */ 1861 1861 struct dev_mc_list *mclist; 1862 - int i; 1863 - for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); 1864 - i++, mclist = mclist->next) { 1862 + int i = 0; 1863 + 1864 + netdev_for_each_mc_addr(mclist, dev) { 1865 1865 writel(*(u32*)(mclist->dmi_addr), ioaddr + 0x100 + i*8); 1866 1866 writel(0x20000 | (*(u16*)&mclist->dmi_addr[4]), 1867 1867 ioaddr + 0x104 + i*8); 1868 + i++; 1868 1869 } 1869 1870 /* Clear remaining entries. */ 1870 1871 for (; i < 64; i++)
+3 -3
drivers/net/hp100.c
··· 2098 2098 /* set hash filter to receive all multicast packets */ 2099 2099 memset(&lp->hash_bytes, 0xff, 8); 2100 2100 } else { 2101 - int i, j, idx; 2101 + int i, idx; 2102 2102 u_char *addrs; 2103 2103 struct dev_mc_list *dmi; 2104 2104 ··· 2107 2107 printk("hp100: %s: computing hash filter - mc_count = %i\n", 2108 2108 dev->name, netdev_mc_count(dev)); 2109 2109 #endif 2110 - for (i = 0, dmi = dev->mc_list; i < netdev_mc_count(dev); i++, dmi = dmi->next) { 2110 + netdev_for_each_mc_addr(dmi, dev) { 2111 2111 addrs = dmi->dmi_addr; 2112 2112 if ((*addrs & 0x01) == 0x01) { /* multicast address? */ 2113 2113 #ifdef HP100_DEBUG 2114 2114 printk("hp100: %s: multicast = %pM, ", 2115 2115 dev->name, addrs); 2116 2116 #endif 2117 - for (j = idx = 0; j < 6; j++) { 2117 + for (i = idx = 0; i < 6; i++) { 2118 2118 idx ^= *addrs++ & 0x3f; 2119 2119 printk(":%02x:", idx); 2120 2120 }
+1 -1
drivers/net/ibm_newemac/core.c
··· 395 395 396 396 memset(gaht_temp, 0, sizeof (gaht_temp)); 397 397 398 - for (dmi = dev->ndev->mc_list; dmi; dmi = dmi->next) { 398 + netdev_for_each_mc_addr(dmi, dev->ndev) { 399 399 int slot, reg, mask; 400 400 DBG2(dev, "mc %pM" NL, dmi->dmi_addr); 401 401
+1 -1
drivers/net/ibmlana.c
··· 420 420 /* start putting the multicast addresses into the CAM list. Stop if 421 421 it is full. */ 422 422 423 - for (mcptr = dev->mc_list; mcptr != NULL; mcptr = mcptr->next) { 423 + netdev_for_each_mc_addr(mcptr, dev) { 424 424 putcam(cams, &camcnt, mcptr->dmi_addr); 425 425 if (camcnt == 16) 426 426 break;
+2 -3
drivers/net/ibmveth.c
··· 1072 1072 ibmveth_error_printk("h_multicast_ctrl rc=%ld when entering promisc mode\n", lpar_rc); 1073 1073 } 1074 1074 } else { 1075 - struct dev_mc_list *mclist = netdev->mc_list; 1076 - int i; 1075 + struct dev_mc_list *mclist; 1077 1076 /* clear the filter table & disable filtering */ 1078 1077 lpar_rc = h_multicast_ctrl(adapter->vdev->unit_address, 1079 1078 IbmVethMcastEnableRecv | ··· 1083 1084 ibmveth_error_printk("h_multicast_ctrl rc=%ld when attempting to clear filter table\n", lpar_rc); 1084 1085 } 1085 1086 /* add the addresses to the filter table */ 1086 - for(i = 0; i < netdev_mc_count(netdev); ++i, mclist = mclist->next) { 1087 + netdev_for_each_mc_addr(mclist, netdev) { 1087 1088 // add the multicast address to the filter table 1088 1089 unsigned long mcast_addr = 0; 1089 1090 memcpy(((char *)&mcast_addr)+2, mclist->dmi_addr, 6);
+4 -8
drivers/net/igb/igb_main.c
··· 2877 2877 { 2878 2878 struct igb_adapter *adapter = netdev_priv(netdev); 2879 2879 struct e1000_hw *hw = &adapter->hw; 2880 - struct dev_mc_list *mc_ptr = netdev->mc_list; 2880 + struct dev_mc_list *mc_ptr; 2881 2881 u8 *mta_list; 2882 2882 int i; 2883 2883 ··· 2893 2893 return -ENOMEM; 2894 2894 2895 2895 /* The shared function expects a packed array of only addresses. */ 2896 - mc_ptr = netdev->mc_list; 2896 + i = 0; 2897 + netdev_for_each_mc_addr(mc_ptr, netdev) 2898 + memcpy(mta_list + (i++ * ETH_ALEN), mc_ptr->dmi_addr, ETH_ALEN); 2897 2899 2898 - for (i = 0; i < netdev_mc_count(netdev); i++) { 2899 - if (!mc_ptr) 2900 - break; 2901 - memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr, ETH_ALEN); 2902 - mc_ptr = mc_ptr->next; 2903 - } 2904 2900 igb_update_mc_addr_list(hw, mta_list, i); 2905 2901 kfree(mta_list); 2906 2902
+3 -9
drivers/net/igbvf/netdev.c
··· 1413 1413 } 1414 1414 1415 1415 /* prepare a packed array of only addresses. */ 1416 - mc_ptr = netdev->mc_list; 1417 - 1418 - for (i = 0; i < netdev_mc_count(netdev); i++) { 1419 - if (!mc_ptr) 1420 - break; 1421 - memcpy(mta_list + (i*ETH_ALEN), mc_ptr->dmi_addr, 1422 - ETH_ALEN); 1423 - mc_ptr = mc_ptr->next; 1424 - } 1416 + i = 0; 1417 + netdev_for_each_mc_addr(mc_ptr, netdev) 1418 + memcpy(mta_list + (i++ * ETH_ALEN), mc_ptr->dmi_addr, ETH_ALEN); 1425 1419 1426 1420 hw->mac.ops.update_mc_addr_list(hw, mta_list, i, 0, 0); 1427 1421 kfree(mta_list);
+2 -4
drivers/net/ioc3-eth.c
··· 1664 1664 1665 1665 static void ioc3_set_multicast_list(struct net_device *dev) 1666 1666 { 1667 - struct dev_mc_list *dmi = dev->mc_list; 1667 + struct dev_mc_list *dmi; 1668 1668 struct ioc3_private *ip = netdev_priv(dev); 1669 1669 struct ioc3 *ioc3 = ip->regs; 1670 1670 u64 ehar = 0; 1671 - int i; 1672 1671 1673 1672 netif_stop_queue(dev); /* Lock out others. */ 1674 1673 ··· 1688 1689 ip->ehar_h = 0xffffffff; 1689 1690 ip->ehar_l = 0xffffffff; 1690 1691 } else { 1691 - for (i = 0; i < netdev_mc_count(dev); i++) { 1692 + netdev_for_each_mc_addr(dmi, dev) { 1692 1693 char *addr = dmi->dmi_addr; 1693 - dmi = dmi->next; 1694 1694 1695 1695 if (!(*addr & 1)) 1696 1696 continue;
+1 -2
drivers/net/ipg.c
··· 608 608 hashtable[1] = 0x00000000; 609 609 610 610 /* Cycle through all multicast addresses to filter. */ 611 - for (mc_list_ptr = dev->mc_list; 612 - mc_list_ptr != NULL; mc_list_ptr = mc_list_ptr->next) { 611 + netdev_for_each_mc_addr(mc_list_ptr, dev) { 613 612 /* Calculate CRC result for each multicast address. */ 614 613 hashindex = crc32_le(0xffffffff, mc_list_ptr->dmi_addr, 615 614 ETH_ALEN);
+1 -1
drivers/net/isa-skeleton.c
··· 666 666 else if (!netdev_mc_empty(dev)) 667 667 { 668 668 /* Walk the address list, and load the filter */ 669 - hardware_set_filter(dev->mc_list); 669 + hardware_set_filter(dev); 670 670 671 671 outw(MULTICAST, ioaddr); 672 672 }
+2 -4
drivers/net/iseries_veth.c
··· 961 961 (netdev_mc_count(dev) > VETH_MAX_MCAST)) { 962 962 port->promiscuous = 1; 963 963 } else { 964 - struct dev_mc_list *dmi = dev->mc_list; 965 - int i; 964 + struct dev_mc_list *dmi; 966 965 967 966 port->promiscuous = 0; 968 967 969 968 /* Update table */ 970 969 port->num_mcast = 0; 971 970 972 - for (i = 0; i < netdev_mc_count(dev); i++) { 971 + netdev_for_each_mc_addr(dmi, dev) { 973 972 u8 *addr = dmi->dmi_addr; 974 973 u64 xaddr = 0; 975 974 ··· 977 978 port->mcast_addr[port->num_mcast] = xaddr; 978 979 port->num_mcast++; 979 980 } 980 - dmi = dmi->next; 981 981 } 982 982 } 983 983
+3 -4
drivers/net/ixgb/ixgb_main.c
··· 1088 1088 1089 1089 IXGB_WRITE_REG(hw, RCTL, rctl); 1090 1090 1091 - for (i = 0, mc_ptr = netdev->mc_list; 1092 - mc_ptr; 1093 - i++, mc_ptr = mc_ptr->next) 1094 - memcpy(&mta[i * IXGB_ETH_LENGTH_OF_ADDRESS], 1091 + i = 0; 1092 + netdev_for_each_mc_addr(mc_ptr, netdev) 1093 + memcpy(&mta[i++ * IXGB_ETH_LENGTH_OF_ADDRESS], 1095 1094 mc_ptr->dmi_addr, IXGB_ETH_LENGTH_OF_ADDRESS); 1096 1095 1097 1096 ixgb_mc_addr_list_update(hw, mta, netdev_mc_count(netdev), 0);