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

Reply via email to