{
        int err;
 
-       if (phydev->interrupts == PHY_INTERRUPT_ENABLED)
+       if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
+               err = marvell_ack_interrupt(phydev);
+               if (err)
+                       return err;
+
                err = phy_write(phydev, MII_M1011_IMASK,
                                MII_M1011_IMASK_INIT);
-       else
+       } else {
                err = phy_write(phydev, MII_M1011_IMASK,
                                MII_M1011_IMASK_CLEAR);
+               if (err)
+                       return err;
+
+               err = marvell_ack_interrupt(phydev);
+       }
 
        return err;
 }
                .probe = marvell_probe,
                .config_init = marvell_config_init,
                .config_aneg = m88e1101_config_aneg,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .probe = marvell_probe,
                .config_init = m88e1111_config_init,
                .config_aneg = marvell_config_aneg,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .config_init = m88e1111_config_init,
                .config_aneg = m88e1111_config_aneg,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .config_init = m88e1111_config_init,
                .config_aneg = m88e1111_config_aneg,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .probe = marvell_probe,
                .config_init = m88e1118_config_init,
                .config_aneg = m88e1118_config_aneg,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .config_init = marvell_config_init,
                .config_aneg = m88e1121_config_aneg,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .config_init = m88e1318_config_init,
                .config_aneg = m88e1318_config_aneg,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .get_wol = m88e1318_get_wol,
                .config_init = m88e1145_config_init,
                .config_aneg = m88e1101_config_aneg,
                .read_status = genphy_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .probe = marvell_probe,
                .config_init = m88e1149_config_init,
                .config_aneg = m88e1118_config_aneg,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .probe = marvell_probe,
                .config_init = m88e1111_config_init,
                .config_aneg = marvell_config_aneg,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                /* PHY_GBIT_FEATURES */
                .probe = marvell_probe,
                .config_init = m88e1116r_config_init,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .config_init = m88e1510_config_init,
                .config_aneg = m88e1510_config_aneg,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .get_wol = m88e1318_get_wol,
                .config_init = marvell_config_init,
                .config_aneg = m88e1510_config_aneg,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .config_init = marvell_config_init,
                .config_aneg = m88e1510_config_aneg,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .config_init = m88e3016_config_init,
                .aneg_done = marvell_aneg_done,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .config_init = marvell_config_init,
                .config_aneg = m88e6390_config_aneg,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .config_init = marvell_config_init,
                .config_aneg = m88e1510_config_aneg,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,
                .config_init = marvell_config_init,
                .config_aneg = m88e1510_config_aneg,
                .read_status = marvell_read_status,
-               .ack_interrupt = marvell_ack_interrupt,
                .config_intr = marvell_config_intr,
                .handle_interrupt = marvell_handle_interrupt,
                .resume = genphy_resume,