mdio: Check MDIO_STAT1_FAULT in mdio45_links_ok()
Subsystems (2)
PATCH 3/7 mdio: Check MDIO_STAT1_FAULT in mdio45_links_ok()
Some PHYs will report that the link is up even though there is a fault condition. Therefore, check the fault flag too. We must also read STAT2 to reset this flag.
Signed-off-by Ben Hutchings <[email protected]>
--- drivers/net/mdio.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-)
drivers/net/mdio.c +10 -3
@@ -109,13 +109,20 @@ int mdio45_links_ok(const struct mdio_if_info *mdio, u32 mmd_mask)if (mmd_mask & (1 << devad)) { mmd_mask &= ~(1 << devad); -/* Read twice because link state is latched and a -* read moves the current state into the register */ +/* Reset the latched status and fault flags */ mdio->mdio_read (mdio->dev, mdio->prtad, devad,MDIO_STAT1 ); +if (devad ==MDIO_MMD_PMAPMD || devad ==MDIO_MMD_PCS || + devad ==MDIO_MMD_PHYXS || devad ==MDIO_MMD_DTEXS ) + mdio->mdio_read (mdio->dev, mdio->prtad, + devad,MDIO_STAT2 ); + +/* Check the current status and fault flags */ reg = mdio->mdio_read (mdio->dev, mdio->prtad, devad,MDIO_STAT1 ); -if (reg <0 || !(reg &MDIO_STAT1_LSTATUS )) +if (reg <0 || + (reg & (MDIO_STAT1_FAULT |MDIO_STAT1_LSTATUS )) != +MDIO_STAT1_LSTATUS )return false; } }
Signature · 3 lines
Ben Hutchings, Senior Software Engineer, Solarflare Communications Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.
From: Ben Hutchings <[email protected]>
Date: Wed, 26 Aug 2009 19:16:58 +0100
Quoted 5 lines
Some PHYs will report that the link is up even though there is a fault condition. Therefore, check the fault flag too. We must also read STAT2 to reset this flag.
Signed-off-by Ben Hutchings <[email protected]>
Applied.