net: convert multiple drivers to use netdev_for_each_mc_addr, part2
[linux-2.6.git] / drivers / net / starfire.c
index 58bc7ac..0f405ef 100644 (file)
@@ -1804,14 +1804,14 @@ static void set_rx_mode(struct net_device *dev)
                /* Use the 16 element perfect filter, skip first two entries. */
                void __iomem *filter_addr = ioaddr + PerfFilterTable + 2 * 16;
                __be16 *eaddrs;
-               for (i = 2, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev) + 2;
-                    i++, mclist = mclist->next) {
+               netdev_for_each_mc_addr(mclist, dev) {
                        eaddrs = (__be16 *)mclist->dmi_addr;
                        writew(be16_to_cpu(eaddrs[2]), filter_addr); filter_addr += 4;
                        writew(be16_to_cpu(eaddrs[1]), filter_addr); filter_addr += 4;
                        writew(be16_to_cpu(eaddrs[0]), filter_addr); filter_addr += 8;
                }
                eaddrs = (__be16 *)dev->dev_addr;
+               i = netdev_mc_count(dev) + 2;
                while (i++ < 16) {
                        writew(be16_to_cpu(eaddrs[0]), filter_addr); filter_addr += 4;
                        writew(be16_to_cpu(eaddrs[1]), filter_addr); filter_addr += 4;