From: Andrew Lunn <and...@lunn.ch> Date: Wed, 29 Apr 2020 22:53:23 +0200
> The change to polled IO for MDIO completion assumes that MII events > are only generated for MDIO transactions. However on some SoCs writing > to the MII_SPEED register can also trigger an MII event. As a result, > the next MDIO read has a pending MII event, and immediately reads the > data registers before it contains useful data. When the read does > complete, another MII event is posted, which results in the next read > also going wrong, and the cycle continues. > > By writing 0 to the MII_DATA register before writing to the speed > register, this MII event for the MII_SPEED is suppressed, and polled > IO works as expected. > > v2 - Only infec_enet_mii_init() > > Fixes: 29ae6bd1b0d8 ("net: ethernet: fec: Replace interrupt driven MDIO with > polled IO") > Reported-by: Andy Duan <fugang.d...@nxp.com> > Suggested-by: Andy Duan <fugang.d...@nxp.com> > Signed-off-by: Andrew Lunn <and...@lunn.ch> Hmmm, I reverted the Fixes: tag patch so you'll need to respin this I think. Thanks.