From: Andrew Lunn <and...@lunn.ch> Date: Tue, 28 Apr 2020 19:58:33 +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. > > 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> Applied to net-next, thanks.