[net,v3] net: phy: fix phy_start to consider PHY_IGNORE_INTERRUPT

Message ID 9a965e5e-50a4-ed2e-51ce-eb30c11c3cdf@gmail.com
State Accepted
Delegated to: David Miller
Headers show
Series
  • [net,v3] net: phy: fix phy_start to consider PHY_IGNORE_INTERRUPT
Related show

Commit Message

Heiner Kallweit Feb. 8, 2018, 8:01 p.m.
This condition wasn't adjusted when PHY_IGNORE_INTERRUPT (-2) was added
long ago. In case of PHY_IGNORE_INTERRUPT the MAC interrupt indicates
also PHY state changes and we should do what the symbol says.

Fixes: 84a527a41f38 ("net: phylib: fix interrupts re-enablement in phy_start")
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
v2:
- use phy_interrupt_is_valid() instead of checking for irq > 0
v3:
- added "Fixes" tag
- fix is a candidate for stable, v4.9+
---
 drivers/net/phy/phy.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Florian Fainelli Feb. 8, 2018, 8:02 p.m. | #1
On 02/08/2018 12:01 PM, Heiner Kallweit wrote:
> This condition wasn't adjusted when PHY_IGNORE_INTERRUPT (-2) was added
> long ago. In case of PHY_IGNORE_INTERRUPT the MAC interrupt indicates
> also PHY state changes and we should do what the symbol says.
> 
> Fixes: 84a527a41f38 ("net: phylib: fix interrupts re-enablement in phy_start")
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>

Thanks Heiner!
David Miller Feb. 8, 2018, 8:36 p.m. | #2
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Thu, 8 Feb 2018 21:01:48 +0100

> This condition wasn't adjusted when PHY_IGNORE_INTERRUPT (-2) was added
> long ago. In case of PHY_IGNORE_INTERRUPT the MAC interrupt indicates
> also PHY state changes and we should do what the symbol says.
> 
> Fixes: 84a527a41f38 ("net: phylib: fix interrupts re-enablement in phy_start")
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

Applied and queued up for -stable, thank you.

Patch

diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index f3313a129..50ed35a45 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -822,7 +822,7 @@  void phy_start(struct phy_device *phydev)
 		phy_resume(phydev);
 
 		/* make sure interrupts are re-enabled for the PHY */
-		if (phydev->irq != PHY_POLL) {
+		if (phy_interrupt_is_valid(phydev)) {
 			err = phy_enable_interrupts(phydev);
 			if (err < 0)
 				break;