Re: [PATCH net] net: dsa: mxl-gsw1xx: manually clear RANEG bit

From: Vladimir Oltean

Date: Fri Dec 05 2025 - 09:07:03 EST


On Fri, Dec 05, 2025 at 01:56:39PM +0000, Daniel Golle wrote:
> On Fri, Dec 05, 2025 at 02:45:35PM +0100, Andrew Lunn wrote:
> > On Fri, Dec 05, 2025 at 01:32:20AM +0000, Daniel Golle wrote:
> > > Despite being documented as self-clearing, the RANEG bit sometimes
> > > remains set, preventing auto-negotiation from happening.
> > >
> > > Manually clear the RANEG bit after 10ms as advised by MaxLinear, using
> > > delayed_work emulating the asynchronous self-clearing behavior.
> >
> > Maybe add some text why the complexity of delayed work is used, rather
> > than just a msleep(10)?
> >
> > Calling regmap_read_poll_timeout() to see if it clears itself could
> > optimise this, and still be simpler.
>
> Is the restart_an() operation allowed to sleep?

Isn't regmap_set_bits() already sleeping? Your gsw1xx_regmap_bus
accesses __mdiobus_write() and __mdiobus_read() which are sleepable
operations and there's no problem with that.