In case of asix_ax88772a_link_change_notify() workaround, we run soft reset which will automatically clear MII_ADVERTISE configuration. The PHYlib framework do not know about changed configuration state of the PHY, so we need use phy_init_hw() to reinit PHY configuration.
Unified · Split
| @@ -88,8 +88,10 @@ static void asix_ax88772a_link_change_notify(struct phy_device *phydev) · 87 unmodified lines | |||
| 88 | /* Reset PHY, otherwise MII_LPA will provide outdated information. | 88 | /* Reset PHY, otherwise MII_LPA will provide outdated information. |
| 89 | * This issue is reproducible only with some link partner PHYs | 89 | * This issue is reproducible only with some link partner PHYs |
| 90 | */ | 90 | */ |
| 91 | if (phydev->state == PHY_NOLINK && phydev->drv->soft_reset) | 91 | if (phydev->state == PHY_NOLINK) { |
| 92 | phydev->drv->soft_reset(phydev); | 92 | phy_init_hw(phydev); |
| 93 | phy_start_aneg(phydev); | ||
| 94 | } | ||
| 93 | } | 95 | } |
| 94 | 96 | ||
| 95 | static struct phy_driver asix_driver[] = { | 97 | static struct phy_driver asix_driver[] = { |