Add support for speeds 10Mbps, 5Gbps, and 10Gbps. In addition don't hardcode duplex but read it from the chip.
Signed-off-by: Andrew Lunn <and...@lunn.ch> Signed-off-by: Heiner Kallweit <hkallwe...@gmail.com> --- drivers/net/phy/aquantia.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/aquantia.c b/drivers/net/phy/aquantia.c index 482004efa..51ae3feea 100644 --- a/drivers/net/phy/aquantia.c +++ b/drivers/net/phy/aquantia.c @@ -133,6 +133,12 @@ static int aqr_read_status(struct phy_device *phydev) reg = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_TX_VEND_STATUS1); switch (reg & MDIO_AN_TX_VEND_STATUS1_RATE_MASK) { + case MDIO_AN_TX_VEND_STATUS1_10GBASET: + phydev->speed = SPEED_10000; + break; + case MDIO_AN_TX_VEND_STATUS1_5000BASET: + phydev->speed = SPEED_5000; + break; case MDIO_AN_TX_VEND_STATUS1_2500BASET: phydev->speed = SPEED_2500; break; @@ -142,11 +148,15 @@ static int aqr_read_status(struct phy_device *phydev) case MDIO_AN_TX_VEND_STATUS1_100BASETX: phydev->speed = SPEED_100; break; + case MDIO_AN_TX_VEND_STATUS1_10BASET: + phydev->speed = SPEED_10; + break; default: - phydev->speed = SPEED_10000; + phydev->speed = SPEED_UNKNOWN; break; } - phydev->duplex = DUPLEX_FULL; + + phydev->duplex = !!(reg & MDIO_AN_TX_VEND_STATUS1_FULL_DUPLEX); return 0; } -- 2.20.1