static void xl_set_rx_mode(struct net_device *dev) 
 {
        struct xl_private *xl_priv = netdev_priv(dev);
-       struct dev_mc_list *dmi ; 
+       struct dev_mc_list *dmi;
        unsigned char dev_mc_address[4] ; 
        u16 options ; 
-       int i ; 
 
        if (dev->flags & IFF_PROMISC)
                options = 0x0004 ; 
 
        dev_mc_address[0] = dev_mc_address[1] = dev_mc_address[2] = dev_mc_address[3] = 0 ;
 
-        for (i=0,dmi=dev->mc_list;i < netdev_mc_count(dev); i++,dmi = dmi->next) {
+       netdev_for_each_mc_addr(dmi, dev) {
                 dev_mc_address[0] |= dmi->dmi_addr[2] ;
                 dev_mc_address[1] |= dmi->dmi_addr[3] ;
                 dev_mc_address[2] |= dmi->dmi_addr[4] ;
 
        /*BMS ifconfig tr down or hot unplug a PCMCIA card ??hownowbrowncow*/
        if (/*BMSHELPdev->start == 0 ||*/ ti->open_status != OPEN) return;
        address[0] = address[1] = address[2] = address[3] = 0;
-       mclist = dev->mc_list;
-       for (i = 0; i < netdev_mc_count(dev); i++) {
+       netdev_for_each_mc_addr(mclist, dev) {
                address[0] |= mclist->dmi_addr[2];
                address[1] |= mclist->dmi_addr[3];
                address[2] |= mclist->dmi_addr[4];
                address[3] |= mclist->dmi_addr[5];
-               mclist = mclist->next;
        }
        SET_PAGE(ti->srb_page);
        for (i = 0; i < sizeof(struct srb_set_funct_addr); i++)
 
        __u8 options = 0;
        struct dev_mc_list *dmi;
        unsigned char dev_mc_address[5];
-       int i;
 
        writel(streamer_priv->srb, streamer_mmio + LAPA);
        options = streamer_priv->streamer_copy_all_options;
        writel(streamer_priv->srb,streamer_mmio+LAPA);
        dev_mc_address[0] = dev_mc_address[1] = dev_mc_address[2] = dev_mc_address[3] = 0 ; 
   
-       for (i=0,dmi=dev->mc_list;i < netdev_mc_count(dev); i++,dmi = dmi->next)
-       { 
+       netdev_for_each_mc_addr(dmi, dev) {
                dev_mc_address[0] |= dmi->dmi_addr[2] ; 
                dev_mc_address[1] |= dmi->dmi_addr[3] ; 
                dev_mc_address[2] |= dmi->dmi_addr[4] ; 
 
        u8 __iomem *olympic_mmio = olympic_priv->olympic_mmio ; 
        u8 options = 0; 
        u8 __iomem *srb;
-       struct dev_mc_list *dmi ; 
+       struct dev_mc_list *dmi;
        unsigned char dev_mc_address[4] ; 
-       int i ; 
 
        writel(olympic_priv->srb,olympic_mmio+LAPA);
        srb=olympic_priv->olympic_lap + (olympic_priv->srb & (~0xf800));
 
        dev_mc_address[0] = dev_mc_address[1] = dev_mc_address[2] = dev_mc_address[3] = 0 ; 
 
-       for (i=0,dmi=dev->mc_list;i < netdev_mc_count(dev); i++,dmi = dmi->next) {
+       netdev_for_each_mc_addr(dmi, dev) {
                dev_mc_address[0] |= dmi->dmi_addr[2] ; 
                dev_mc_address[1] |= dmi->dmi_addr[3] ; 
                dev_mc_address[2] |= dmi->dmi_addr[4] ; 
 
                }
                else
                {
-                       int i;
-                       struct dev_mc_list *mclist = dev->mc_list;
-                       for (i=0; i< netdev_mc_count(dev); i++)
-                       {
+                       struct dev_mc_list *mclist;
+
+                       netdev_for_each_mc_addr(mclist, dev) {
                                ((char *)(&tp->ocpl.FunctAddr))[0] |=
                                        mclist->dmi_addr[2];
                                ((char *)(&tp->ocpl.FunctAddr))[1] |=
                                        mclist->dmi_addr[4];
                                ((char *)(&tp->ocpl.FunctAddr))[3] |=
                                        mclist->dmi_addr[5];
-                               mclist = mclist->next;
                        }
                }
                tms380tr_exec_cmd(dev, OC_SET_FUNCT_ADDR);