{
        int err;
 
-       if (phydev->interrupts == PHY_INTERRUPT_ENABLED)
+       if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
+               err = cis820x_ack_interrupt(phydev);
+               if (err)
+                       return err;
+
                err = phy_write(phydev, MII_CIS8201_IMASK,
                                MII_CIS8201_IMASK_MASK);
-       else
+       } else {
                err = phy_write(phydev, MII_CIS8201_IMASK, 0);
+               if (err)
+                       return err;
+
+               err = cis820x_ack_interrupt(phydev);
+       }
 
        return err;
 }
        .phy_id_mask    = 0x000ffff0,
        /* PHY_GBIT_FEATURES */
        .config_init    = &cis820x_config_init,
-       .ack_interrupt  = &cis820x_ack_interrupt,
        .config_intr    = &cis820x_config_intr,
        .handle_interrupt = &cis820x_handle_interrupt,
 }, {
        .phy_id_mask    = 0x000fffc0,
        /* PHY_GBIT_FEATURES */
        .config_init    = &cis820x_config_init,
-       .ack_interrupt  = &cis820x_ack_interrupt,
        .config_intr    = &cis820x_config_intr,
        .handle_interrupt = &cis820x_handle_interrupt,
 } };