If PHY is in force state and we have a C45 phy we need to use the standard C45 helpers and not the C22 ones.
Signed-off-by: Jose Abreu <joab...@synopsys.com> Cc: Andrew Lunn <and...@lunn.ch> Cc: Florian Fainelli <f.faine...@gmail.com> Cc: "David S. Miller" <da...@davemloft.net> Cc: Joao Pinto <joao.pi...@synopsys.com> --- drivers/net/phy/phy.c | 2 +- include/linux/phy.h | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 1d73ac3309ce..0ff4946e208e 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -995,7 +995,7 @@ void phy_state_machine(struct work_struct *work) } break; case PHY_FORCING: - err = genphy_update_link(phydev); + err = phy_update_link(phydev); if (err) break; diff --git a/include/linux/phy.h b/include/linux/phy.h index 3ea87f774a76..02c2ee8bc05b 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1044,6 +1044,14 @@ static inline int phy_read_status(struct phy_device *phydev) return genphy_read_status(phydev); } +static inline int phy_update_link(struct phy_device *phydev) +{ + if (phydev->is_c45) + return gen10g_read_status(phydev); + else + return genphy_update_link(phydev); +} + void phy_driver_unregister(struct phy_driver *drv); void phy_drivers_unregister(struct phy_driver *drv, int n); int phy_driver_register(struct phy_driver *new_driver, struct module *owner); -- 2.7.4