diff --git a/drivers/net/cpmac.c b/drivers/net/cpmac.c index c9c537be4ab9032b7dcb85fb3fd727d6a248721a..0074f3bf17beaa8a695e571da994b3c4f488f29e 100644 --- a/drivers/net/cpmac.c +++ b/drivers/net/cpmac.c @@ -320,7 +320,6 @@ static int cpmac_config(struct net_device *dev, struct ifmap *map) static void cpmac_set_multicast_list(struct net_device *dev) { struct dev_mc_list *iter; - int i; u8 tmp; u32 mbp, bit, hash[2] = { 0, }; struct cpmac_priv *priv = netdev_priv(dev); @@ -340,8 +339,7 @@ static void cpmac_set_multicast_list(struct net_device *dev) * cpmac uses some strange mac address hashing * (not crc32) */ - for (i = 0, iter = dev->mc_list; i < netdev_mc_count(dev); - i++, iter = iter->next) { + netdev_for_each_mc_addr(iter, dev) { bit = 0; tmp = iter->dmi_addr[0]; bit ^= (tmp >> 2) ^ (tmp << 4); diff --git a/drivers/net/cris/eth_v10.c b/drivers/net/cris/eth_v10.c index c9309eadebc1d8ad3a2e8eb3e9ec6f523d5c444a..dd24aadb778ca8be8e48c534697468cb324e61b8 100644 --- a/drivers/net/cris/eth_v10.c +++ b/drivers/net/cris/eth_v10.c @@ -1596,13 +1596,12 @@ set_multicast_list(struct net_device *dev) } else { /* MC mode, receive normal and MC packets */ char hash_ix; - struct dev_mc_list *dmi = dev->mc_list; - int i; + struct dev_mc_list *dmi; char *baddr; lo_bits = 0x00000000ul; hi_bits = 0x00000000ul; - for (i = 0; i < num_addr; i++) { + netdev_for_each_mc_addr(dmi, dev) { /* Calculate the hash index for the GA registers */ hash_ix = 0; @@ -1632,7 +1631,6 @@ set_multicast_list(struct net_device *dev) } else { lo_bits |= (1 << hash_ix); } - dmi = dmi->next; } /* Disable individual receive */ SETS(network_rec_config_shadow, R_NETWORK_REC_CONFIG, individual, discard); diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c index 0e79cef95c0a6fd14aaa60d0233c28ba2a2e6871..14624019ce71b7009ef69d262aa1f385851e3c41 100644 --- a/drivers/net/cs89x0.c +++ b/drivers/net/cs89x0.c @@ -1785,7 +1785,7 @@ static void set_multicast_list(struct net_device *dev) { lp->rx_mode = RX_ALL_ACCEPT; } - else if((dev->flags&IFF_ALLMULTI)||dev->mc_list) + else if ((dev->flags & IFF_ALLMULTI) || !netdev_mc_empty(dev)) { /* The multicast-accept list is initialized to accept-all, and we rely on higher-level filtering for now. */ diff --git a/drivers/net/declance.c b/drivers/net/declance.c index 76e0de6a42630c7eda6a5da59eaac2af37c31819..8cf3cc6f20e29894792bdb1f63a13b4bedd2186f 100644 --- a/drivers/net/declance.c +++ b/drivers/net/declance.c @@ -940,9 +940,8 @@ static void lance_load_multicast(struct net_device *dev) { struct lance_private *lp = netdev_priv(dev); volatile u16 *ib = (volatile u16 *)dev->mem_start; - struct dev_mc_list *dmi = dev->mc_list; + struct dev_mc_list *dmi; char *addrs; - int i; u32 crc; /* set all multicast bits */ @@ -960,9 +959,8 @@ static void lance_load_multicast(struct net_device *dev) *lib_ptr(ib, filter[3], lp->type) = 0; /* Add addresses */ - for (i = 0; i < netdev_mc_count(dev); i++) { + netdev_for_each_mc_addr(dmi, dev) { addrs = dmi->dmi_addr; - dmi = dmi->next; /* multicast address? */ if (!(*addrs & 1)) diff --git a/drivers/net/defxx.c b/drivers/net/defxx.c index 5adb1e03956df817a9ffc04259b15538871ca43c..ed53a8d45f4e5e8c43240b66ac0804e1cf461950 100644 --- a/drivers/net/defxx.c +++ b/drivers/net/defxx.c @@ -2240,12 +2240,11 @@ static void dfx_ctl_set_multicast_list(struct net_device *dev) /* Copy addresses to multicast address table, then update adapter CAM */ - dmi = dev->mc_list; /* point to first multicast addr */ - for (i=0; i < bp->mc_count; i++) - { - memcpy(&bp->mc_table[i*FDDI_K_ALEN], dmi->dmi_addr, FDDI_K_ALEN); - dmi = dmi->next; /* point to next multicast addr */ - } + i = 0; + netdev_for_each_mc_addr(dmi, dev) + memcpy(&bp->mc_table[i++ * FDDI_K_ALEN], + dmi->dmi_addr, FDDI_K_ALEN); + if (dfx_ctl_update_cam(bp) != DFX_K_SUCCESS) { DBG_printk("%s: Could not update multicast address table!\n", dev->name); diff --git a/drivers/net/depca.c b/drivers/net/depca.c index 314bc96689f483eb5813d49f6eff867bf4c7788a..64a569bc92a6eed25190ef6b7b2464cc7aced996 100644 --- a/drivers/net/depca.c +++ b/drivers/net/depca.c @@ -1287,9 +1287,8 @@ static void SetMulticastFilter(struct net_device *dev) lp->init_block.mcast_table[i] = 0; } /* Add multicast addresses */ - for (i = 0; i < netdev_mc_count(dev); i++) { /* for each address in the list */ + netdev_for_each_mc_addr(dmi, dev) { addrs = dmi->dmi_addr; - dmi = dmi->next; if ((*addrs & 0x01) == 1) { /* multicast address? */ crc = ether_crc(ETH_ALEN, addrs); hashcode = (crc & 1); /* hashcode is 6 LSb of CRC ... */ diff --git a/drivers/net/dl2k.c b/drivers/net/dl2k.c index dea40953ed1b84ee260b0d397c3006f9906fed74..b05bad8298273cb6abf87f8f097dbfa1773519d7 100644 --- a/drivers/net/dl2k.c +++ b/drivers/net/dl2k.c @@ -1132,15 +1132,12 @@ set_multicast (struct net_device *dev) /* Receive broadcast and multicast frames */ rx_mode = ReceiveBroadcast | ReceiveMulticast | ReceiveUnicast; } else if (!netdev_mc_empty(dev)) { - int i; struct dev_mc_list *mclist; /* Receive broadcast frames and multicast frames filtering by Hashtable */ rx_mode = ReceiveBroadcast | ReceiveMulticastHash | ReceiveUnicast; - for (i=0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev); - i++, mclist=mclist->next) - { + netdev_for_each_mc_addr(mclist, dev) { int bit, index = 0; int crc = ether_crc_le (ETH_ALEN, mclist->dmi_addr); /* The inverted high significant 6 bits of CRC are diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c index da0985a7a87a6226b6dc5c80280cc5ad91b3ce46..1c67f1138ca7edb90b56124d08da15c80e7ce0c3 100644 --- a/drivers/net/dm9000.c +++ b/drivers/net/dm9000.c @@ -724,8 +724,7 @@ static void dm9000_hash_table(struct net_device *dev) { board_info_t *db = netdev_priv(dev); - struct dev_mc_list *mcptr = dev->mc_list; - int mc_cnt = netdev_mc_count(dev); + struct dev_mc_list *mcptr; int i, oft; u32 hash_val; u16 hash_table[4]; @@ -753,7 +752,7 @@ dm9000_hash_table(struct net_device *dev) rcr |= RCR_ALL; /* the multicast address in Hash Table : 64 bits */ - for (i = 0; i < mc_cnt; i++, mcptr = mcptr->next) { + netdev_for_each_mc_addr(mcptr, dev) { hash_val = ether_crc_le(6, mcptr->dmi_addr) & 0x3f; hash_table[hash_val / 16] |= (u16) 1 << (hash_val % 16); }