In phy_device_create, autoneg is set to AUTONEG_ENABLE. When using the generic phy driver (phy_device.c), genphy_config_init reads BMSR and finds out if autonegotiation is possible and sets the phy device features accordingly. phy_sanitize_settings is supposed to set the right value of autoneg, but it is never called if autonegotiation is enabled, which is always the case.
Signed-off-by: Nicolae Rosia <nicolae.ro...@certsign.ro> --- drivers/net/phy/phy.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 767cd11..9c35136 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -249,9 +249,6 @@ static void phy_sanitize_settings(struct phy_device *phydev) unsigned int idx; /* Sanitize settings based on PHY capabilities */ - if ((features & SUPPORTED_Autoneg) == 0) - phydev->autoneg = AUTONEG_DISABLE; - idx = phy_find_valid(phy_find_setting(phydev->speed, phydev->duplex), features); @@ -436,6 +433,9 @@ int phy_start_aneg(struct phy_device *phydev) mutex_lock(&phydev->lock); + if ((phydev->supported & SUPPORTED_Autoneg) == 0) + phydev->autoneg = AUTONEG_DISABLE; + if (AUTONEG_DISABLE == phydev->autoneg) phy_sanitize_settings(phydev); -- 2.1.0 N�����r��y����b�X��ǧv�^�){.n�+����{����zX����ܨ}���Ơz�&j:+v�������zZ+��+zf���h���~����i���z��w���?�����&�)ߢf��^jǫy�m��@A�a��� 0��h���i