Message ID | E1Zet89-0003P6-Ee@rmk-PC.arm.linux.org.uk |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On 23/09/15 16:07, Russell King wrote: > Read the standard link partner advertisment registers and store it in > phydev->lp_advertising, so ethtool can report this information to > userspace via ethtool. Zero it as per genphy if autonegotiation is > disabled. Tested with a Marvell 88E1512 PHY. > > Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
From: Russell King <rmk+kernel@arm.linux.org.uk> Date: Thu, 24 Sep 2015 00:07:17 +0100 > Read the standard link partner advertisment registers and store it in > phydev->lp_advertising, so ethtool can report this information to > userspace via ethtool. Zero it as per genphy if autonegotiation is > disabled. Tested with a Marvell 88E1512 PHY. > > Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c index e6897b6a8a53..5de8d5827536 100644 --- a/drivers/net/phy/marvell.c +++ b/drivers/net/phy/marvell.c @@ -785,6 +785,7 @@ static int marvell_read_status(struct phy_device *phydev) int adv; int err; int lpa; + int lpagb; int status = 0; /* Update the link, but return if there @@ -802,10 +803,17 @@ static int marvell_read_status(struct phy_device *phydev) if (lpa < 0) return lpa; + lpagb = phy_read(phydev, MII_STAT1000); + if (lpagb < 0) + return lpagb; + adv = phy_read(phydev, MII_ADVERTISE); if (adv < 0) return adv; + phydev->lp_advertising = mii_stat1000_to_ethtool_lpa_t(lpagb) | + mii_lpa_to_ethtool_lpa_t(lpa); + lpa &= adv; if (status & MII_M1011_PHY_STATUS_FULLDUPLEX) @@ -853,6 +861,7 @@ static int marvell_read_status(struct phy_device *phydev) phydev->speed = SPEED_10; phydev->pause = phydev->asym_pause = 0; + phydev->lp_advertising = 0; } return 0;
Read the standard link partner advertisment registers and store it in phydev->lp_advertising, so ethtool can report this information to userspace via ethtool. Zero it as per genphy if autonegotiation is disabled. Tested with a Marvell 88E1512 PHY. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- drivers/net/phy/marvell.c | 9 +++++++++ 1 file changed, 9 insertions(+)