All callers of phy_disable_interrupts() call phy_error() in the error
case. Therefore we don't need to do this within the function too.
This change also allows us to use phy_disable_interrupts() in code
holding phydev->lock (because phy_error() takes this lock).
Make use of this in phy_stop().

Signed-off-by: Heiner Kallweit <hkallwe...@gmail.com>
---
 drivers/net/phy/phy.c | 22 ++++------------------
 1 file changed, 4 insertions(+), 18 deletions(-)

diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index a6f924fee..c2d9027be 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -662,19 +662,10 @@ static int phy_disable_interrupts(struct phy_device 
*phydev)
        /* Disable PHY interrupts */
        err = phy_config_interrupt(phydev, PHY_INTERRUPT_DISABLED);
        if (err)
-               goto phy_err;
+               return err;
 
        /* Clear the interrupt */
-       err = phy_clear_interrupt(phydev);
-       if (err)
-               goto phy_err;
-
-       return 0;
-
-phy_err:
-       phy_error(phydev);
-
-       return err;
+       return phy_clear_interrupt(phydev);
 }
 
 /**
@@ -774,13 +765,8 @@ void phy_stop(struct phy_device *phydev)
        if (PHY_HALTED == phydev->state)
                goto out_unlock;
 
-       if (phy_interrupt_is_valid(phydev)) {
-               /* Disable PHY Interrupts */
-               phy_config_interrupt(phydev, PHY_INTERRUPT_DISABLED);
-
-               /* Clear any pending interrupts */
-               phy_clear_interrupt(phydev);
-       }
+       if (phy_interrupt_is_valid(phydev))
+               phy_disable_interrupts(phydev);
 
        phydev->state = PHY_HALTED;
 
-- 
2.16.2

Reply via email to