On Wed, Sep 28, 2016 at 02:31:54PM -0700, Florian Fainelli wrote: > On 09/28/2016 01:32 AM, Andrew Lunn wrote: > > The phy_start() is used to indicate the PHY is now ready to do its > > work. The state is changed, normally to PHY_UP which means that both > > the MAC and the PHY are ready. > > > > If the phy driver is using polling, when the next poll happens, the > > state machine notices the PHY is now in PHY_UP, and kicks off > > auto-negotiation, if needed. > > > > If however, the PHY is using interrupts, there is no polling. The phy > > is stuck in PHY_UP until the next interrupt comes along. And there is > > no reason for the PHY to interrupt. > > > > Have phy_start() schedule the state machine to run, which both speeds > > up the polling use case, and makes the interrupt use case actually > > work. > > > > This problems exists whenever there is a state change which will not > > cause an interrupt. Trigger the state machine in these cases, > > e.g. phy_error(). > > > > Signed-off-by: Andrew Lunn <and...@lunn.ch> > > No particular objections, this should also fix this: > > http://lists.openwall.net/netdev/2016/05/17/147
Hi Florian Yes, i was thinking it probably should have a fixes: tag and be a separate patch. The hard part will be figuring out when this actually broke, or does it go all the way back to when interrupt support was added? Andrew