Hi All,
I'm using linux release 3.0.35_4.0.0 on my custom hardware (design based on sabre sd platform). I'm using Micrel's Gigabit Ethernet PHY KSZ9021RNI.
When connected to a 100 mbps network, my network is stable. But when I connect to a 1000 mbps link, network is very unstable. The ssh connection freezes or breaks.
On the terminal log I can see: net eth0: FEC ENET: rcv is not +last
I tried the linux kernel from 3.0.35_4.1.0 release (not the UBoot, only the kernel) but I was still getting the problem.
Can anyone throw light on this issue ?
As I understand that this was a known issue and was solved in the later releases. Is that is true: what was the exact problem ?
Any inputs will of help to me. Thanks!
-Pj
Hi Prasant,
We have a fix for this in the 'boundary-imx_3.0.35_4.1.0' branch of our kernel tree:
fec: stop the "rcv is not +last, " error messages · 49fe455 · boundarydevices/linux-imx6 · GitHub
Hi Eric,
Thanks for the reply.
That fix also works for me. It removes the Error message, BUT network is very unstable as before. When transferring large files the connection freezes and many times its breaks.
So I think, the error message that I see is only a symptom to another problem. I do not know yet.
Do you also experience unstable network when iMX6 is connected to a gigabit network with line speed as 1000 mbps?
-Pj
Hi Prasant,
No. In general we don't see stability issues, though you shouldn't expect full Gb bandwidth.
See this post for details:
http://boundarydevices.com/i-mx6-ethernet/
MarekVasut has also reported issues with transmit, though we haven't had a chance to investigate.
We observed the same problem with imx28 and the fec driver from linux 3.9.11. After I tried the mentioned patch the error message disappears but we still see connection instability if we transmit larger files via scp to the target. If we reduce the MTU Size from 1500 Byte to 1495 Byte the problem is gone. Some clou why this is the case here? in our setups the problems occur mostly in vlan use cases.
After we changed the buffer defines in the fec driver it works for us.
++++ BF/drivers/net/ethernet/freescale/fec.c | 2015-03-18 10:24:03.786916878 +0100 |
+@@ -178,11 +178,12 @@ MODULE_PARM_DESC(macaddr, "FEC Ethernet
+ #define FEC_RX_DISABLED_IMASK (FEC_DEFAULT_IMASK & (~FEC_ENET_RXF))
+
+ /* The FEC stores dest/src/type, data, and checksum for receive packets.
+- */
+-#define PKT_MAXBUF_SIZE | 1518 |
++*/
++#define PKT_MAXBUF_SIZE | 1534 | |
+ #define PKT_MINBUF_SIZE | 64 | |
+-#define PKT_MAXBLR_SIZE | 1520 |
+-
++#define PKT_MAXBLR_SIZE | 1536 |
++
+ /*
+ * The 5270/5271/5280/5282/532x RX control register also contains maximum frame
+ * size bits. Other FEC hardware does not, so we need to take that into