]> git.baikalelectronics.ru Git - kernel.git/commit
net: phy: fixed_phy: Set phy capabilities even when link down.
authorAndrew Lunn <andrew@lunn.ch>
Mon, 31 Aug 2015 13:56:54 +0000 (15:56 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 31 Aug 2015 21:48:03 +0000 (14:48 -0700)
commit78de1e7e9bd7e8ba8a7fe83f1ccd7afcd4871e92
treee755ec8c049139469d67a5f239002ec68c743113
parent1c04de2e5940902c10761a7649b3ac8f39ebc3fe
net: phy: fixed_phy: Set phy capabilities even when link down.

What features a phy supports is masked in genphy_config_init() by
looking at the PHYs BMSR register.

If the link is down, fixed_phy_update_regs() will only set the auto-
negotiation capable bit in BMSR. Thus genphy_config_init() comes to
the conclusion the PHY can only perform 10/Half, and masks out the
higher speed features. If however the link it up, BMSR is set to
indicate the speed the PHY is capable of auto-negotiating, and
genphy_config_init() does not mask out the high speed features.

To fix this, when the link is down, have fixed_phy_update_regs() leave
the link status, auto-negotiation complete, and link partner
capabilities unset, but set all the local capabilities depending on
the fixed phy speed.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/fixed_phy.c