net: dsa: mv88e6xxx: correctly report serdes link failure
Phylink wants to know if the link has dropped since the last time state was retrieved, and the BMSR gives us that. Read the BMSR and use it when deciding the link state. Fill in the an_complete member as well for the emulated PHY state. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Родитель
2b4bb9cd9b
Коммит
b4d78731b3
|
@ -53,6 +53,14 @@ static int mv88e6xxx_serdes_pcs_get_state(struct mv88e6xxx_chip *chip,
|
|||
u16 bmsr, u16 lpa, u16 status,
|
||||
struct phylink_link_state *state)
|
||||
{
|
||||
state->link = false;
|
||||
|
||||
/* If the BMSR reports that the link had failed, report this to
|
||||
* phylink.
|
||||
*/
|
||||
if (!(bmsr & BMSR_LSTATUS))
|
||||
return 0;
|
||||
|
||||
state->link = !!(status & MV88E6390_SGMII_PHY_STATUS_LINK);
|
||||
state->an_complete = !!(bmsr & BMSR_ANEGCOMPLETE);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче