RE: Buggy cable detection on i.MX51, fec driver and LAN8700 PHY

From: Duan Andy
Date: Mon Jul 27 2015 - 21:24:41 EST


From: Igor Plyatov <plyatov@xxxxxxxxx> Sent: Monday, July 27, 2015 10:51 PM
> To: linux-kernel@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx
> Cc: Florian Fainelli; Joe Perches; Zhou Luwei-B45643; Duan Fugang-B38611;
> Richard Cochran; David S. Miller; Uwe Kleine-KÃnig; Estevam Fabio-R49496;
> Lothar WaÃmann; Li Frank-B20596
> Subject: Buggy cable detection on i.MX51, fec driver and LAN8700 PHY
>
> Dear all,
>
> very often we observe issue with Ethernet cable detection during cable
> unplugging and plugging.
>
> We use Voipac i.MX51 SOMs (System On Modules). They are based on
> Freescale i.MX51 CPU with LAN7800 PHY in MII mode. The schematic of PHY
> connection is very similar to the Freescale i.MX51 Babbage board.
>
> The Ethernet interface eth0 is configured statically for simplicity, but
> same issue exists with DHCP configuration.
>
> I did a lot of tests to determine stability of Ethernet cable detection
> by the "fec" Ethernet driver.
>
> In normal operation, if I unplug the Ethernet cable, then "fec" driver
> prints "fec 83fec000.ethernet eth0: Link is Down" and green LED (Ethernet
> medium detected) is OFF.
> If I plug cable back, then "fec" driver print "fec 83fec000.ethernet
> eth0: Link is Up - 100Mbps/Full - flow control off" and green LED is ON.
>
> But sometimes, after cable plugging, "fec" driver does not print anything
> on the console and green LED does not show detection of Ethernet cable.
> Frequency of issue appearing is a random value.
> Sometimes issue appears after second cable unplugging/plugging, but
> sometimes - after 10-20 unplugging/plugging.
>
> The issue was tested and exists on kernels from linux-3.8.5 till current
> linux-4.2-rc4-cbfe8fa6cd672011c755c3cd85c9ffd4e2d10a6f.
>
> Same tests was made with different versions of the Barebox bootloader and
> cable detection works flawless.
>
> Please, help to resolve issue with Linux drivers.
>
> Best wishes.
> --
> Igor Plyatov

For phy cable detection issue, mostly it is phy device issue like:
- Phy is not stable, maybe the phy initial setting is not right.
- MDIO bus read is not right, maybe MDIO/MDC pin drive strength (timing) doesn't match spec requirement.

You can measure the MDIO timing firstly, and then check the phy setting.

Regards,
Andy