static int adin_phy_config_intr(struct phy_device *phydev)
 {
-       if (phydev->interrupts == PHY_INTERRUPT_ENABLED)
-               return phy_set_bits(phydev, ADIN1300_INT_MASK_REG,
-                                   ADIN1300_INT_MASK_EN);
+       int err;
+
+       if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
+               err = adin_phy_ack_intr(phydev);
+               if (err)
+                       return err;
+
+               err = phy_set_bits(phydev, ADIN1300_INT_MASK_REG,
+                                  ADIN1300_INT_MASK_EN);
+       } else {
+               err = phy_clear_bits(phydev, ADIN1300_INT_MASK_REG,
+                                    ADIN1300_INT_MASK_EN);
+               if (err)
+                       return err;
+
+               err = adin_phy_ack_intr(phydev);
+       }
 
-       return phy_clear_bits(phydev, ADIN1300_INT_MASK_REG,
-                             ADIN1300_INT_MASK_EN);
+       return err;
 }
 
 static irqreturn_t adin_phy_handle_interrupt(struct phy_device *phydev)
                .read_status    = adin_read_status,
                .get_tunable    = adin_get_tunable,
                .set_tunable    = adin_set_tunable,
-               .ack_interrupt  = adin_phy_ack_intr,
                .config_intr    = adin_phy_config_intr,
                .handle_interrupt = adin_phy_handle_interrupt,
                .get_sset_count = adin_get_sset_count,
                .read_status    = adin_read_status,
                .get_tunable    = adin_get_tunable,
                .set_tunable    = adin_set_tunable,
-               .ack_interrupt  = adin_phy_ack_intr,
                .config_intr    = adin_phy_config_intr,
                .handle_interrupt = adin_phy_handle_interrupt,
                .get_sset_count = adin_get_sset_count,