We are using am3359 device based on evm -05.04.01.00 package. We have built Etherlab EtherCAT master and have an application cycling at about 2ms. After about 8 hours runtime the ethernet interface associated with EtherCAT hangs. The link is still up, and every second or so we see a flicker of activity as indicated by the link lights on the slaves. The only way to get the interface operating again is by reboot, restarting the app and the EtherCAT master do not help.
When the system is in the hung state, cat /sys/class/net/eth0/hw_stats shows:
CPSW Statistics:
rxgoodframes ............................ 48914245
rxbroadcastframes ....................... 48914245
rxoctets ................................ -929601998
txgoodframes ............................ 48914245
txbroadcastframes ....................... 48914245
txoctets ................................ -929601998
octetframes64 ........................... 1309034
octetframes65t127 ....................... 96518092
octetframes128t255 ...................... 1364
netoctets ............................... -1859203996
rxsofoverruns ........................... 817856
rxdmaoverruns ........................... 817856
RX DMA Statistics:
head_enqueue ............................ 1
tail_enqueue ............................ 48096388
busy_dequeue ............................ 48121676
good_dequeue ............................ 48096325
TX DMA Statistics:
head_enqueue ............................ 48100585
tail_enqueue ............................ 813660
misqueued ............................... 813660
desc_alloc_fail ......................... 25555
empty_dequeue ........................... 48125935
good_dequeue ............................ 48914053
diffing with a seconds earlier collection of these stats gives:
@@ -1,16 +1,16 @@
CPSW Statistics:
-rxgoodframes ............................ 48914053
-rxbroadcastframes ....................... 48914053
-rxoctets ................................ -929614286
-txgoodframes ............................ 48914053
-txbroadcastframes ....................... 48914053
-txoctets ................................ -929614286
-octetframes64 ........................... 1308650
+rxgoodframes ............................ 48914245
+rxbroadcastframes ....................... 48914245
+rxoctets ................................ -929601998
+txgoodframes ............................ 48914245
+txbroadcastframes ....................... 48914245
+txoctets ................................ -929601998
+octetframes64 ........................... 1309034
octetframes65t127 ....................... 96518092
octetframes128t255 ...................... 1364
-netoctets ............................... -1859228572
-rxsofoverruns ........................... 817664
-rxdmaoverruns ........................... 817664
+netoctets ............................... -1859203996
+rxsofoverruns ........................... 817856
+rxdmaoverruns ........................... 817856
RX DMA Statistics:
head_enqueue ............................ 1
@@ -19,9 +19,9 @@
good_dequeue ............................ 48096325
TX DMA Statistics:
-head_enqueue ............................ 48100584
-tail_enqueue ............................ 813469
-misqueued ............................... 813469
-desc_alloc_fail ......................... 25551
-empty_dequeue ........................... 48125934
-good_dequeue ............................ 48913861
+head_enqueue ............................ 48100585
+tail_enqueue ............................ 813660
+misqueued ............................... 813660
+desc_alloc_fail ......................... 25555
+empty_dequeue ........................... 48125935
+good_dequeue ............................ 48914053
Now I'm trying to shrink the descriptors/driver memory area so that I can recreate this problem more easily. Any help with setting the proper parameters appreciated.
I'm diffing the driver source from evm -05.05.00.00 but I'm not seeing any definite fix for this. I also plan to get the git tree to see what the latest is there.
I also found this possible fix: https://github.com/pgibson/u-boot-innotech/commit/93c05158992ffb0e6ce68f5f8ee3ff691694db7b but that path and file don't correspond to anything I have from the arago git trees or the ti packaged distributions. Where is the best place to get a git tree to peruse the source changes?
In summary: Anyone know of a fix for this problem? How do I set the descriptors/memory smaller to drive the problem more easily? Where is the source repo for Arago?