Commit 0ddf477b8a9b02412a6cabd51c486998811c7dd1
Committed by
David S. Miller
1 parent
3b9a7728d8
Exists in
master
and in
7 other branches
net: convert multiple drivers to use netdev_for_each_mc_addr, part3
Signed-off-by: Jiri Pirko <jpirko@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 22 changed files with 50 additions and 74 deletions Side-by-side Diff
- drivers/net/7990.c
- drivers/net/82596.c
- drivers/net/a2065.c
- drivers/net/amd8111e.c
- drivers/net/amd8111e.h
- drivers/net/appletalk/ltpc.c
- drivers/net/at1700.c
- drivers/net/atl1c/atl1c_main.c
- drivers/net/atl1e/atl1e_main.c
- drivers/net/atlx/atl2.c
- drivers/net/atlx/atlx.c
- drivers/net/atp.c
- drivers/net/au1000_eth.c
- drivers/net/b44.c
- drivers/net/bcm63xx_enet.c
- drivers/net/benet/be_cmds.c
- drivers/net/benet/be_cmds.h
- drivers/net/benet/be_main.c
- drivers/net/bfin_mac.c
- drivers/net/bmac.c
- drivers/net/bnx2.c
- drivers/net/bnx2x_main.c
drivers/net/7990.c
... | ... | @@ -595,9 +595,8 @@ |
595 | 595 | struct lance_private *lp = netdev_priv(dev); |
596 | 596 | volatile struct lance_init_block *ib = lp->init_block; |
597 | 597 | volatile u16 *mcast_table = (u16 *)&ib->filter; |
598 | - struct dev_mc_list *dmi=dev->mc_list; | |
598 | + struct dev_mc_list *dmi; | |
599 | 599 | char *addrs; |
600 | - int i; | |
601 | 600 | u32 crc; |
602 | 601 | |
603 | 602 | /* set all multicast bits */ |
604 | 603 | |
... | ... | @@ -611,9 +610,8 @@ |
611 | 610 | ib->filter [1] = 0; |
612 | 611 | |
613 | 612 | /* Add addresses */ |
614 | - for (i = 0; i < netdev_mc_count(dev); i++){ | |
613 | + netdev_for_each_mc_addr(dmi, dev) { | |
615 | 614 | addrs = dmi->dmi_addr; |
616 | - dmi = dmi->next; | |
617 | 615 | |
618 | 616 | /* multicast address? */ |
619 | 617 | if (!(*addrs & 1)) |
drivers/net/82596.c
... | ... | @@ -1550,13 +1550,16 @@ |
1550 | 1550 | return; |
1551 | 1551 | cmd = &lp->mc_cmd; |
1552 | 1552 | cmd->cmd.command = CmdMulticastList; |
1553 | - cmd->mc_cnt = netdev_mc_count(dev) * 6; | |
1553 | + cmd->mc_cnt = cnt * ETH_ALEN; | |
1554 | 1554 | cp = cmd->mc_addrs; |
1555 | - for (dmi = dev->mc_list; cnt && dmi != NULL; dmi = dmi->next, cnt--, cp += 6) { | |
1556 | - memcpy(cp, dmi->dmi_addr, 6); | |
1555 | + netdev_for_each_mc_addr(dmi, dev) { | |
1556 | + if (!cnt--) | |
1557 | + break; | |
1558 | + memcpy(cp, dmi->dmi_addr, ETH_ALEN); | |
1557 | 1559 | if (i596_debug > 1) |
1558 | 1560 | DEB(DEB_MULTI,printk(KERN_INFO "%s: Adding address %pM\n", |
1559 | 1561 | dev->name, cp)); |
1562 | + cp += ETH_ALEN; | |
1560 | 1563 | } |
1561 | 1564 | i596_add_cmd(dev, &cmd->cmd); |
1562 | 1565 | } |
drivers/net/a2065.c
... | ... | @@ -603,9 +603,8 @@ |
603 | 603 | struct lance_private *lp = netdev_priv(dev); |
604 | 604 | volatile struct lance_init_block *ib = lp->init_block; |
605 | 605 | volatile u16 *mcast_table = (u16 *)&ib->filter; |
606 | - struct dev_mc_list *dmi=dev->mc_list; | |
606 | + struct dev_mc_list *dmi; | |
607 | 607 | char *addrs; |
608 | - int i; | |
609 | 608 | u32 crc; |
610 | 609 | |
611 | 610 | /* set all multicast bits */ |
612 | 611 | |
... | ... | @@ -619,9 +618,8 @@ |
619 | 618 | ib->filter [1] = 0; |
620 | 619 | |
621 | 620 | /* Add addresses */ |
622 | - for (i = 0; i < netdev_mc_count(dev); i++){ | |
621 | + netdev_for_each_mc_addr(dmi, dev) { | |
623 | 622 | addrs = dmi->dmi_addr; |
624 | - dmi = dmi->next; | |
625 | 623 | |
626 | 624 | /* multicast address? */ |
627 | 625 | if (!(*addrs & 1)) |
drivers/net/amd8111e.c
... | ... | @@ -1377,10 +1377,11 @@ |
1377 | 1377 | */ |
1378 | 1378 | static void amd8111e_set_multicast_list(struct net_device *dev) |
1379 | 1379 | { |
1380 | - struct dev_mc_list* mc_ptr; | |
1380 | + struct dev_mc_list *mc_ptr; | |
1381 | 1381 | struct amd8111e_priv *lp = netdev_priv(dev); |
1382 | 1382 | u32 mc_filter[2] ; |
1383 | - int i,bit_num; | |
1383 | + int bit_num; | |
1384 | + | |
1384 | 1385 | if(dev->flags & IFF_PROMISC){ |
1385 | 1386 | writel( VAL2 | PROM, lp->mmio + CMD2); |
1386 | 1387 | return; |
... | ... | @@ -1391,7 +1392,6 @@ |
1391 | 1392 | netdev_mc_count(dev) > MAX_FILTER_SIZE) { |
1392 | 1393 | /* get all multicast packet */ |
1393 | 1394 | mc_filter[1] = mc_filter[0] = 0xffffffff; |
1394 | - lp->mc_list = dev->mc_list; | |
1395 | 1395 | lp->options |= OPTION_MULTICAST_ENABLE; |
1396 | 1396 | amd8111e_writeq(*(u64*)mc_filter,lp->mmio + LADRF); |
1397 | 1397 | return; |
... | ... | @@ -1399,7 +1399,6 @@ |
1399 | 1399 | if (netdev_mc_empty(dev)) { |
1400 | 1400 | /* get only own packets */ |
1401 | 1401 | mc_filter[1] = mc_filter[0] = 0; |
1402 | - lp->mc_list = NULL; | |
1403 | 1402 | lp->options &= ~OPTION_MULTICAST_ENABLE; |
1404 | 1403 | amd8111e_writeq(*(u64*)mc_filter,lp->mmio + LADRF); |
1405 | 1404 | /* disable promiscous mode */ |
1406 | 1405 | |
... | ... | @@ -1408,10 +1407,8 @@ |
1408 | 1407 | } |
1409 | 1408 | /* load all the multicast addresses in the logic filter */ |
1410 | 1409 | lp->options |= OPTION_MULTICAST_ENABLE; |
1411 | - lp->mc_list = dev->mc_list; | |
1412 | 1410 | mc_filter[1] = mc_filter[0] = 0; |
1413 | - for (i = 0, mc_ptr = dev->mc_list; mc_ptr && i < netdev_mc_count(dev); | |
1414 | - i++, mc_ptr = mc_ptr->next) { | |
1411 | + netdev_for_each_mc_addr(mc_ptr, dev) { | |
1415 | 1412 | bit_num = (ether_crc_le(ETH_ALEN, mc_ptr->dmi_addr) >> 26) & 0x3f; |
1416 | 1413 | mc_filter[bit_num >> 5] |= 1 << (bit_num & 31); |
1417 | 1414 | } |
drivers/net/amd8111e.h
drivers/net/appletalk/ltpc.c
... | ... | @@ -1125,7 +1125,6 @@ |
1125 | 1125 | printk(KERN_INFO "Apple/Farallon LocalTalk-PC card at %03x, DMA%d. Using polled mode.\n",io,dma); |
1126 | 1126 | |
1127 | 1127 | dev->netdev_ops = <pc_netdev; |
1128 | - dev->mc_list = NULL; | |
1129 | 1128 | dev->base_addr = io; |
1130 | 1129 | dev->irq = irq; |
1131 | 1130 | dev->dma = dma; |
drivers/net/at1700.c
... | ... | @@ -849,11 +849,9 @@ |
849 | 849 | outb(1, ioaddr + RX_MODE); /* Ignore almost all multicasts. */ |
850 | 850 | } else { |
851 | 851 | struct dev_mc_list *mclist; |
852 | - int i; | |
853 | 852 | |
854 | 853 | memset(mc_filter, 0, sizeof(mc_filter)); |
855 | - for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); | |
856 | - i++, mclist = mclist->next) { | |
854 | + netdev_for_each_mc_addr(mclist, dev) { | |
857 | 855 | unsigned int bit = |
858 | 856 | ether_crc_le(ETH_ALEN, mclist->dmi_addr) >> 26; |
859 | 857 | mc_filter[bit >> 3] |= (1 << bit); |
drivers/net/atl1c/atl1c_main.c
... | ... | @@ -377,7 +377,7 @@ |
377 | 377 | AT_WRITE_REG_ARRAY(hw, REG_RX_HASH_TABLE, 1, 0); |
378 | 378 | |
379 | 379 | /* comoute mc addresses' hash value ,and put it into hash table */ |
380 | - for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) { | |
380 | + netdev_for_each_mc_addr(mc_ptr, netdev) { | |
381 | 381 | hash_value = atl1c_hash_mc_addr(hw, mc_ptr->dmi_addr); |
382 | 382 | atl1c_hash_set(hw, hash_value); |
383 | 383 | } |
drivers/net/atl1e/atl1e_main.c
... | ... | @@ -307,7 +307,7 @@ |
307 | 307 | AT_WRITE_REG_ARRAY(hw, REG_RX_HASH_TABLE, 1, 0); |
308 | 308 | |
309 | 309 | /* comoute mc addresses' hash value ,and put it into hash table */ |
310 | - for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) { | |
310 | + netdev_for_each_mc_addr(mc_ptr, netdev) { | |
311 | 311 | hash_value = atl1e_hash_mc_addr(hw, mc_ptr->dmi_addr); |
312 | 312 | atl1e_hash_set(hw, hash_value); |
313 | 313 | } |
drivers/net/atlx/atl2.c
... | ... | @@ -157,7 +157,7 @@ |
157 | 157 | ATL2_WRITE_REG_ARRAY(hw, REG_RX_HASH_TABLE, 1, 0); |
158 | 158 | |
159 | 159 | /* comoute mc addresses' hash value ,and put it into hash table */ |
160 | - for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) { | |
160 | + netdev_for_each_mc_addr(mc_ptr, netdev) { | |
161 | 161 | hash_value = atl2_hash_mc_addr(hw, mc_ptr->dmi_addr); |
162 | 162 | atl2_hash_set(hw, hash_value); |
163 | 163 | } |
drivers/net/atlx/atlx.c
... | ... | @@ -144,7 +144,7 @@ |
144 | 144 | iowrite32(0, (hw->hw_addr + REG_RX_HASH_TABLE) + (1 << 2)); |
145 | 145 | |
146 | 146 | /* compute mc addresses' hash value ,and put it into hash table */ |
147 | - for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) { | |
147 | + netdev_for_each_mc_addr(mc_ptr, netdev) { | |
148 | 148 | hash_value = atlx_hash_mc_addr(hw, mc_ptr->dmi_addr); |
149 | 149 | atlx_hash_set(hw, hash_value); |
150 | 150 | } |
drivers/net/atp.c
... | ... | @@ -886,9 +886,7 @@ |
886 | 886 | struct dev_mc_list *mclist; |
887 | 887 | |
888 | 888 | memset(mc_filter, 0, sizeof(mc_filter)); |
889 | - for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); | |
890 | - i++, mclist = mclist->next) | |
891 | - { | |
889 | + netdev_for_each_mc_addr(mclist, dev) { | |
892 | 890 | int filterbit = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x3f; |
893 | 891 | mc_filter[filterbit >> 5] |= 1 << (filterbit & 31); |
894 | 892 | } |
drivers/net/au1000_eth.c
... | ... | @@ -1018,16 +1018,13 @@ |
1018 | 1018 | aup->mac->control &= ~MAC_PROMISCUOUS; |
1019 | 1019 | printk(KERN_INFO "%s: Pass all multicast\n", dev->name); |
1020 | 1020 | } else { |
1021 | - int i; | |
1022 | 1021 | struct dev_mc_list *mclist; |
1023 | 1022 | u32 mc_filter[2]; /* Multicast hash filter */ |
1024 | 1023 | |
1025 | 1024 | mc_filter[1] = mc_filter[0] = 0; |
1026 | - for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); | |
1027 | - i++, mclist = mclist->next) { | |
1025 | + netdev_for_each_mc_addr(mclist, dev) | |
1028 | 1026 | set_bit(ether_crc(ETH_ALEN, mclist->dmi_addr)>>26, |
1029 | 1027 | (long *)mc_filter); |
1030 | - } | |
1031 | 1028 | aup->mac->multi_hash_high = mc_filter[1]; |
1032 | 1029 | aup->mac->multi_hash_low = mc_filter[0]; |
1033 | 1030 | aup->mac->control &= ~MAC_PROMISCUOUS; |
drivers/net/b44.c
... | ... | @@ -1684,9 +1684,11 @@ |
1684 | 1684 | int i, num_ents; |
1685 | 1685 | |
1686 | 1686 | num_ents = min_t(int, netdev_mc_count(dev), B44_MCAST_TABLE_SIZE); |
1687 | - mclist = dev->mc_list; | |
1688 | - for (i = 0; mclist && i < num_ents; i++, mclist = mclist->next) { | |
1689 | - __b44_cam_write(bp, mclist->dmi_addr, i + 1); | |
1687 | + i = 0; | |
1688 | + netdev_for_each_mc_addr(mclist, dev) { | |
1689 | + if (i == num_ents) | |
1690 | + break; | |
1691 | + __b44_cam_write(bp, mclist->dmi_addr, i++ + 1); | |
1690 | 1692 | } |
1691 | 1693 | return i+1; |
1692 | 1694 | } |
drivers/net/bcm63xx_enet.c
... | ... | @@ -631,16 +631,13 @@ |
631 | 631 | return; |
632 | 632 | } |
633 | 633 | |
634 | - for (i = 0, mc_list = dev->mc_list; | |
635 | - (mc_list != NULL) && (i < netdev_mc_count(dev)) && (i < 3); | |
636 | - i++, mc_list = mc_list->next) { | |
634 | + i = 0; | |
635 | + netdev_for_each_mc_addr(mc_list, dev) { | |
637 | 636 | u8 *dmi_addr; |
638 | 637 | u32 tmp; |
639 | 638 | |
640 | - /* filter non ethernet address */ | |
641 | - if (mc_list->dmi_addrlen != 6) | |
642 | - continue; | |
643 | - | |
639 | + if (i == 3) | |
640 | + break; | |
644 | 641 | /* update perfect match registers */ |
645 | 642 | dmi_addr = mc_list->dmi_addr; |
646 | 643 | tmp = (dmi_addr[2] << 24) | (dmi_addr[3] << 16) | |
... | ... | @@ -649,7 +646,7 @@ |
649 | 646 | |
650 | 647 | tmp = (dmi_addr[0] << 8 | dmi_addr[1]); |
651 | 648 | tmp |= ENET_PMH_DATAVALID_MASK; |
652 | - enet_writel(priv, tmp, ENET_PMH_REG(i + 1)); | |
649 | + enet_writel(priv, tmp, ENET_PMH_REG(i++ + 1)); | |
653 | 650 | } |
654 | 651 | |
655 | 652 | for (; i < 3; i++) { |
drivers/net/benet/be_cmds.c
... | ... | @@ -1134,8 +1134,7 @@ |
1134 | 1134 | * (mc == NULL) => multicast promiscous |
1135 | 1135 | */ |
1136 | 1136 | int be_cmd_multicast_set(struct be_adapter *adapter, u32 if_id, |
1137 | - struct dev_mc_list *mc_list, u32 mc_count, | |
1138 | - struct be_dma_mem *mem) | |
1137 | + struct net_device *netdev, struct be_dma_mem *mem) | |
1139 | 1138 | { |
1140 | 1139 | struct be_mcc_wrb *wrb; |
1141 | 1140 | struct be_cmd_req_mcast_mac_config *req = mem->va; |
1142 | 1141 | |
1143 | 1142 | |
... | ... | @@ -1162,13 +1161,14 @@ |
1162 | 1161 | OPCODE_COMMON_NTWK_MULTICAST_SET, sizeof(*req)); |
1163 | 1162 | |
1164 | 1163 | req->interface_id = if_id; |
1165 | - if (mc_list) { | |
1164 | + if (netdev) { | |
1166 | 1165 | int i; |
1167 | 1166 | struct dev_mc_list *mc; |
1168 | 1167 | |
1169 | - req->num_mac = cpu_to_le16(mc_count); | |
1168 | + req->num_mac = cpu_to_le16(netdev_mc_count(netdev)); | |
1170 | 1169 | |
1171 | - for (mc = mc_list, i = 0; mc; mc = mc->next, i++) | |
1170 | + i = 0; | |
1171 | + netdev_for_each_mc_addr(mc, netdev) | |
1172 | 1172 | memcpy(req->mac[i].byte, mc->dmi_addr, ETH_ALEN); |
1173 | 1173 | } else { |
1174 | 1174 | req->promiscuous = 1; |
drivers/net/benet/be_cmds.h
... | ... | @@ -912,8 +912,7 @@ |
912 | 912 | extern int be_cmd_promiscuous_config(struct be_adapter *adapter, |
913 | 913 | u8 port_num, bool en); |
914 | 914 | extern int be_cmd_multicast_set(struct be_adapter *adapter, u32 if_id, |
915 | - struct dev_mc_list *mc_list, u32 mc_count, | |
916 | - struct be_dma_mem *mem); | |
915 | + struct net_device *netdev, struct be_dma_mem *mem); | |
917 | 916 | extern int be_cmd_set_flow_control(struct be_adapter *adapter, |
918 | 917 | u32 tx_fc, u32 rx_fc); |
919 | 918 | extern int be_cmd_get_flow_control(struct be_adapter *adapter, |
drivers/net/benet/be_main.c
... | ... | @@ -577,13 +577,13 @@ |
577 | 577 | /* Enable multicast promisc if num configured exceeds what we support */ |
578 | 578 | if (netdev->flags & IFF_ALLMULTI || |
579 | 579 | netdev_mc_count(netdev) > BE_MAX_MC) { |
580 | - be_cmd_multicast_set(adapter, adapter->if_handle, NULL, 0, | |
580 | + be_cmd_multicast_set(adapter, adapter->if_handle, NULL, | |
581 | 581 | &adapter->mc_cmd_mem); |
582 | 582 | goto done; |
583 | 583 | } |
584 | 584 | |
585 | - be_cmd_multicast_set(adapter, adapter->if_handle, netdev->mc_list, | |
586 | - netdev_mc_count(netdev), &adapter->mc_cmd_mem); | |
585 | + be_cmd_multicast_set(adapter, adapter->if_handle, netdev, | |
586 | + &adapter->mc_cmd_mem); | |
587 | 587 | done: |
588 | 588 | return; |
589 | 589 | } |
drivers/net/bfin_mac.c
... | ... | @@ -812,16 +812,14 @@ |
812 | 812 | static void bfin_mac_multicast_hash(struct net_device *dev) |
813 | 813 | { |
814 | 814 | u32 emac_hashhi, emac_hashlo; |
815 | - struct dev_mc_list *dmi = dev->mc_list; | |
815 | + struct dev_mc_list *dmi; | |
816 | 816 | char *addrs; |
817 | - int i; | |
818 | 817 | u32 crc; |
819 | 818 | |
820 | 819 | emac_hashhi = emac_hashlo = 0; |
821 | 820 | |
822 | - for (i = 0; i < netdev_mc_count(dev); i++) { | |
821 | + netdev_for_each_mc_addr(dmi, dev) { | |
823 | 822 | addrs = dmi->dmi_addr; |
824 | - dmi = dmi->next; | |
825 | 823 | |
826 | 824 | /* skip non-multicast addresses */ |
827 | 825 | if (!(*addrs & 1)) |
drivers/net/bmac.c
... | ... | @@ -1000,7 +1000,7 @@ |
1000 | 1000 | rx_cfg = bmac_rx_on(dev, 0, 0); |
1001 | 1001 | XXDEBUG(("bmac: multi disabled, rx_cfg=%#08x\n", rx_cfg)); |
1002 | 1002 | } else { |
1003 | - for (dmi=dev->mc_list; dmi!=NULL; dmi=dmi->next) | |
1003 | + netdev_for_each_mc_addr(dmi, dev) | |
1004 | 1004 | bmac_addhash(bp, dmi->dmi_addr); |
1005 | 1005 | bmac_update_hash_table_mask(dev, bp); |
1006 | 1006 | rx_cfg = bmac_rx_on(dev, 1, 0); |
... | ... | @@ -1015,7 +1015,7 @@ |
1015 | 1015 | |
1016 | 1016 | static void bmac_set_multicast(struct net_device *dev) |
1017 | 1017 | { |
1018 | - struct dev_mc_list *dmi = dev->mc_list; | |
1018 | + struct dev_mc_list *dmi; | |
1019 | 1019 | char *addrs; |
1020 | 1020 | int i; |
1021 | 1021 | unsigned short rx_cfg; |
1022 | 1022 | |
... | ... | @@ -1039,9 +1039,8 @@ |
1039 | 1039 | |
1040 | 1040 | for(i = 0; i < 4; i++) hash_table[i] = 0; |
1041 | 1041 | |
1042 | - for(i = 0; i < netdev_mc_count(dev); i++) { | |
1042 | + netdev_for_each_mc_addr(dmi, dev) { | |
1043 | 1043 | addrs = dmi->dmi_addr; |
1044 | - dmi = dmi->next; | |
1045 | 1044 | |
1046 | 1045 | if(!(*addrs & 1)) |
1047 | 1046 | continue; |
drivers/net/bnx2.c
... | ... | @@ -3552,9 +3552,7 @@ |
3552 | 3552 | |
3553 | 3553 | memset(mc_filter, 0, 4 * NUM_MC_HASH_REGISTERS); |
3554 | 3554 | |
3555 | - for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); | |
3556 | - i++, mclist = mclist->next) { | |
3557 | - | |
3555 | + netdev_for_each_mc_addr(mclist, dev) { | |
3558 | 3556 | crc = ether_crc_le(ETH_ALEN, mclist->dmi_addr); |
3559 | 3557 | bit = crc & 0xff; |
3560 | 3558 | regidx = (bit & 0xe0) >> 5; |
drivers/net/bnx2x_main.c
... | ... | @@ -11483,10 +11483,8 @@ |
11483 | 11483 | struct mac_configuration_cmd *config = |
11484 | 11484 | bnx2x_sp(bp, mcast_config); |
11485 | 11485 | |
11486 | - for (i = 0, mclist = dev->mc_list; | |
11487 | - mclist && (i < netdev_mc_count(dev)); | |
11488 | - i++, mclist = mclist->next) { | |
11489 | - | |
11486 | + i = 0; | |
11487 | + netdev_for_each_mc_addr(mclist, dev) { | |
11490 | 11488 | config->config_table[i]. |
11491 | 11489 | cam_entry.msb_mac_addr = |
11492 | 11490 | swab16(*(u16 *)&mclist->dmi_addr[0]); |
... | ... | @@ -11514,6 +11512,7 @@ |
11514 | 11512 | cam_entry.middle_mac_addr, |
11515 | 11513 | config->config_table[i]. |
11516 | 11514 | cam_entry.lsb_mac_addr); |
11515 | + i++; | |
11517 | 11516 | } |
11518 | 11517 | old = config->hdr.length; |
11519 | 11518 | if (old > i) { |
... | ... | @@ -11555,10 +11554,7 @@ |
11555 | 11554 | |
11556 | 11555 | memset(mc_filter, 0, 4 * MC_HASH_SIZE); |
11557 | 11556 | |
11558 | - for (i = 0, mclist = dev->mc_list; | |
11559 | - mclist && (i < netdev_mc_count(dev)); | |
11560 | - i++, mclist = mclist->next) { | |
11561 | - | |
11557 | + netdev_for_each_mc_addr(mclist, dev) { | |
11562 | 11558 | DP(NETIF_MSG_IFUP, "Adding mcast MAC: %pM\n", |
11563 | 11559 | mclist->dmi_addr); |
11564 | 11560 |