Re: [PATCH net] net: phy: rtl8211f: do a double read to get real time link status

From: Andrew Lunn
Date: Thu Aug 08 2019 - 16:34:21 EST


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