MODULE_LICENSE("GPL");
 
 
+static int dm9161_ack_interrupt(struct phy_device *phydev)
+{
+       int err = phy_read(phydev, MII_DM9161_INTR);
+
+       return (err < 0) ? err : 0;
+}
+
 #define DM9161_DELAY 1
 static int dm9161_config_intr(struct phy_device *phydev)
 {
-       int temp;
+       int temp, err;
 
        temp = phy_read(phydev, MII_DM9161_INTR);
 
        if (temp < 0)
                return temp;
 
-       if (PHY_INTERRUPT_ENABLED == phydev->interrupts)
+       if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
+               err = dm9161_ack_interrupt(phydev);
+               if (err)
+                       return err;
+
                temp &= ~(MII_DM9161_INTR_STOP);
-       else
+               err = phy_write(phydev, MII_DM9161_INTR, temp);
+       } else {
                temp |= MII_DM9161_INTR_STOP;
+               err = phy_write(phydev, MII_DM9161_INTR, temp);
+               if (err)
+                       return err;
 
-       temp = phy_write(phydev, MII_DM9161_INTR, temp);
+               err = dm9161_ack_interrupt(phydev);
+       }
 
-       return temp;
+       return err;
 }
 
 static irqreturn_t dm9161_handle_interrupt(struct phy_device *phydev)
        return phy_write(phydev, MII_BMCR, BMCR_ANENABLE);
 }
 
-static int dm9161_ack_interrupt(struct phy_device *phydev)
-{
-       int err = phy_read(phydev, MII_DM9161_INTR);
-
-       return (err < 0) ? err : 0;
-}
-
 static struct phy_driver dm91xx_driver[] = {
 {
        .phy_id         = 0x0181b880,
        /* PHY_BASIC_FEATURES */
        .config_init    = dm9161_config_init,
        .config_aneg    = dm9161_config_aneg,
-       .ack_interrupt  = dm9161_ack_interrupt,
        .config_intr    = dm9161_config_intr,
        .handle_interrupt = dm9161_handle_interrupt,
 }, {
        /* PHY_BASIC_FEATURES */
        .config_init    = dm9161_config_init,
        .config_aneg    = dm9161_config_aneg,
-       .ack_interrupt  = dm9161_ack_interrupt,
        .config_intr    = dm9161_config_intr,
        .handle_interrupt = dm9161_handle_interrupt,
 }, {
        /* PHY_BASIC_FEATURES */
        .config_init    = dm9161_config_init,
        .config_aneg    = dm9161_config_aneg,
-       .ack_interrupt  = dm9161_ack_interrupt,
        .config_intr    = dm9161_config_intr,
        .handle_interrupt = dm9161_handle_interrupt,
 }, {
        .name           = "Davicom DM9131",
        .phy_id_mask    = 0x0ffffff0,
        /* PHY_BASIC_FEATURES */
-       .ack_interrupt  = dm9161_ack_interrupt,
        .config_intr    = dm9161_config_intr,
        .handle_interrupt = dm9161_handle_interrupt,
 } };