return rc;
 }
 
-static void r6040_init_mac_regs(struct net_device *dev)
+static void r6040_reset_mac(struct r6040_private *lp)
 {
-       struct r6040_private *lp = netdev_priv(dev);
        void __iomem *ioaddr = lp->base;
        int limit = 2048;
        u16 cmd;
 
-       /* Mask Off Interrupt */
-       iowrite16(MSK_INT, ioaddr + MIER);
-
-       /* Reset RDC MAC */
        iowrite16(MAC_RST, ioaddr + MCR1);
        while (limit--) {
                cmd = ioread16(ioaddr + MCR1);
                if (cmd & MAC_RST)
                        break;
        }
+
        /* Reset internal state machine */
        iowrite16(MAC_SM_RST, ioaddr + MAC_SM);
        iowrite16(0, ioaddr + MAC_SM);
        mdelay(5);
+}
+
+static void r6040_init_mac_regs(struct net_device *dev)
+{
+       struct r6040_private *lp = netdev_priv(dev);
+       void __iomem *ioaddr = lp->base;
+
+       /* Mask Off Interrupt */
+       iowrite16(MSK_INT, ioaddr + MIER);
+
+       /* Reset RDC MAC */
+       r6040_reset_mac(lp);
 
        /* MAC Bus Control Register */
        iowrite16(MBCR_DEFAULT, ioaddr + MBCR);
 {
        struct r6040_private *lp = netdev_priv(dev);
        void __iomem *ioaddr = lp->base;
-       int limit = 2048;
        u16 *adrp;
-       u16 cmd;
 
        /* Stop MAC */
        iowrite16(MSK_INT, ioaddr + MIER);      /* Mask Off Interrupt */
-       iowrite16(MAC_RST, ioaddr + MCR1);      /* Reset RDC MAC */
-       while (limit--) {
-               cmd = ioread16(ioaddr + MCR1);
-               if (cmd & MAC_RST)
-                       break;
-       }
+
+       /* Reset RDC MAC */
+       r6040_reset_mac(lp);
 
        /* Restore MAC Address to MIDx */
        adrp = (u16 *) dev->dev_addr;
        u16 *adrp;
 
        /* Reset MAC */
-       iowrite16(MAC_RST, ioaddr + MCR1);
-       /* Reset internal state machine */
-       iowrite16(MAC_SM_RST, ioaddr + MAC_SM);
-       iowrite16(0, ioaddr + MAC_SM);
-       mdelay(5);
+       r6040_reset_mac(lp);
 
        /* Restore MAC Address */
        adrp = (u16 *) dev->dev_addr;