[PATCH 1/2] net: smsc911x: Fix bug where PHY interrupts are overwritten by 0

Subsystems: networking drivers, smsc911x ethernet driver, the rest

STALE3742d

4 messages, 3 authors, 2016-06-16 · open the first message on its own page

[PATCH 1/2] net: smsc911x: Fix bug where PHY interrupts are overwritten by 0

From: Jeremy Linton <hidden>
Date: 2016-06-16 15:54:31

By default, mdiobus_alloc() sets the PHY's to polling mode, but a
pointer size memcpy means that couple IRQs (depending
on 32-bit or 64-bit kernels) end up being overwritten with
a value of 0. This means that PHY_POLL is disabled and results
in unpredictable behavior depending on the PHYs location on the mdio
bus. Remove that memcpy and the now unused phy_irq member to force
SMSC911x PHY's into polling mode 100% of the time.

Signed-off-by: Jeremy Linton <redacted>
---
 drivers/net/ethernet/smsc/smsc911x.c | 2 --
 1 file changed, 2 deletions(-)
diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
index 8af2556..b5ab5e1 100644
--- a/drivers/net/ethernet/smsc/smsc911x.c
+++ b/drivers/net/ethernet/smsc/smsc911x.c
@@ -116,7 +116,6 @@ struct smsc911x_data {
 
 	struct phy_device *phy_dev;
 	struct mii_bus *mii_bus;
-	int phy_irq[PHY_MAX_ADDR];
 	unsigned int using_extphy;
 	int last_duplex;
 	int last_carrier;
@@ -1073,7 +1072,6 @@ static int smsc911x_mii_init(struct platform_device *pdev,
 	pdata->mii_bus->priv = pdata;
 	pdata->mii_bus->read = smsc911x_mii_read;
 	pdata->mii_bus->write = smsc911x_mii_write;
-	memcpy(pdata->mii_bus->irq, pdata->phy_irq, sizeof(pdata->mii_bus));
 
 	pdata->mii_bus->parent = &pdev->dev;
 
-- 
2.5.5

Re: [PATCH 1/2] net: smsc911x: Fix bug where PHY interrupts are overwritten by 0

From: Andrew Lunn <andrew@lunn.ch>
Date: 2016-06-16 16:33:39

On Thu, Jun 16, 2016 at 10:54:30AM -0500, Jeremy Linton wrote:
By default, mdiobus_alloc() sets the PHY's to polling mode, but a
pointer size memcpy means that couple IRQs (depending
on 32-bit or 64-bit kernels) end up being overwritten with
a value of 0. This means that PHY_POLL is disabled and results
in unpredictable behavior depending on the PHYs location on the mdio
bus. Remove that memcpy and the now unused phy_irq member to force
SMSC911x PHY's into polling mode 100% of the time.

Signed-off-by: Jeremy Linton <redacted>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

Re: [PATCH 1/2] net: smsc911x: Fix bug where PHY interrupts are overwritten by 0

From: Sergei Shtylyov <hidden>
Date: 2016-06-16 18:55:27

On 06/16/2016 06:54 PM, Jeremy Linton wrote:
By default, mdiobus_alloc() sets the PHY's to polling mode, but a
    Rather "PHYs".
pointer size memcpy means that couple IRQs (depending
    Could be more words on this line, it's broken too early, I think.
on 32-bit or 64-bit kernels) end up being overwritten with
a value of 0. This means that PHY_POLL is disabled and results
in unpredictable behavior depending on the PHYs location on the mdio
    Contrariwise, "PHY's" here. And it's MDIO.
bus. Remove that memcpy and the now unused phy_irq member to force
SMSC911x PHY's into polling mode 100% of the time.

Signed-off-by: Jeremy Linton <redacted>
Acked-by: Sergei Shtylyov <redacted>

[...]

MBR, Sergei

Re: [PATCH 1/2] net: smsc911x: Fix bug where PHY interrupts are overwritten by 0

From: Sergei Shtylyov <hidden>
Date: 2016-06-16 19:53:22

On 06/16/2016 09:55 PM, Sergei Shtylyov wrote:
quoted
By default, mdiobus_alloc() sets the PHY's to polling mode, but a
   Rather "PHYs".
quoted
pointer size memcpy means that couple IRQs (depending
   Could be more words on this line, it's broken too early, I think.
quoted
on 32-bit or 64-bit kernels) end up being overwritten with
a value of 0. This means that PHY_POLL is disabled and results
in unpredictable behavior depending on the PHYs location on the mdio
   Contrariwise, "PHY's" here. And it's MDIO.
quoted
bus. Remove that memcpy and the now unused phy_irq member to force
SMSC911x PHY's into polling mode 100% of the time.

Signed-off-by: Jeremy Linton <redacted>
Acked-by: Sergei Shtylyov <redacted>
    I was going to add the following too but just forgot:

Fixes: e7f4dc3536a4 ("mdio: Move allocation of interrupts into core")
[...]
MBR, Sergei
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help