On Thu, Aug 08, 2019 at 10:01:39PM +0200, Heiner Kallweit wrote: > On 08.08.2019 21:40, Andrew Lunn wrote: > >> @@ -568,6 +568,11 @@ int phy_start_aneg(struct phy_device *phydev) > >> if (err < 0) > >> goto out_unlock; > >> > >> + /* The PHY may not yet have cleared aneg-completed and link-up bit > >> + * w/o this delay when the following read is done. > >> + */ > >> + usleep_range(1000, 2000); > >> + > > > > Hi Heiner > > > > Does 802.3 C22 say anything about this? > > > C22 says: > "The Auto-Negotiation process shall be restarted by setting bit 0.9 to a > logic one. This bit is self- > clearing, and a PHY shall return a value of one in bit 0.9 until the > Auto-Negotiation process has been > initiated." > > Maybe we should read bit 0.9 in genphy_update_link() after having read BMSR > and report > aneg-complete and link-up as false (no matter of their current value) if 0.9 > is set.
Yes. That sounds sensible. Andrew