@All
Ok, there it is, cleaned and structured as much as possible so it will be easy to read:
https://github.com/kas1e/pa6t_ethThere is also a "DRIVER_OVERVIEW.txt" explaining how it works in brief.
Also there is a "linux_ref" dir: it contains the Linux source code of the drivers for everything supported on the X1000 (including our network driver), and the necessary parts from the platform support, so you have no need to search for anything anywhere -- everything is there.
Please check this, maybe some of you will immediately find what is wrong, or will have some ideas, etc.
Thanks a lot!
ps. And thanks to Derffs for device skeleton code, that helps much!
EDIT: Check again latest version (the one on github) via my stress tool which doing that: open multiple TCP connections and recieve data as fast as possible (on the server side i send bunch of AAAAAA when connected by stress tool from x1000), so we force drirver's RX ring wraps many times per second. Now first run after boot pass 300 seconds run fine, then immediately i run it second time, and
[stress] =====================================================
[stress] PA6T-1682M RX ring-wrap stress tester
[stress] =====================================================
[stress] Server : 192.168.0.144:9999
[stress] Connections: 8
[stress] Duration : 300 seconds
[stress] Ring wrap : every 64 frames
[stress] Connection 0 open (fd=0)
[stress] Connection 1 open (fd=1)
[stress] Connection 2 open (fd=2)
[stress] Connection 3 open (fd=3)
[stress] Connection 4 open (fd=4)
[stress] Connection 5 open (fd=5)
[stress] Connection 6 open (fd=6)
[stress] Connection 7 open (fd=7)
[stress] 8/8 connections open. Starting receive...
[stress] Time | Received | Est.pkts | Est.wraps | Active
[stress] ------|-----------|-----------|-----------|-------
[stress] 1s | 12351 KB | 9447 | 147 | 8
[stress] 2s | 25083 KB | 19129 | 298 | 8
[stress] 3s | 37837 KB | 28825 | 450 | 8
[stress] 4s | 50398 KB | 38365 | 599 | 8
[stress] 5s | 63073 KB | 47953 | 749 | 8
[stress] 6s | 75541 KB | 57403 | 896 | 8
[stress] 7s | 88256 KB | 67065 | 1047 | 8
[stress] 8s | 100934 KB | 76661 | 1197 | 8
[stress] 9s | 113444 KB | 86194 | 1346 | 8
[stress] 10s | 125966 KB | 95743 | 1495 | 8
[stress] 11s | 138519 KB | 105294 | 1645 | 8
[stress] 12s | 151033 KB | 114816 | 1794 | 8
[stress] 13s | 164048 KB | 124705 | 1948 | 8
[stress] 14s | 176794 KB | 134376 | 2099 | 8
[stress] 15s | 189770 KB | 144202 | 2253 | 8
[stress] 16s | 202344 KB | 153775 | 2402 | 8
[stress] 17s | 215006 KB | 163382 | 2552 | 8
[stress] 18s | 227536 KB | 172925 | 2701 | 8
[stress] 19s | 240256 KB | 182565 | 2852 | 8
[stress] 20s | 253032 KB | 192312 | 3004 | 8
*** HARD LOCKUP DIE CPU EVERYTHINK IN SMOKE ****
Sometime,s i not need to even transfer big amount, i can just run it + ctrl, and repeat it few times and if i lucky (or not lucky) can lockup right after 5-6 ctrl+c. So it's not amount of the transfered data or the time, it just happens anytime.
Edited by kas1e on 2026/3/19 4:16:10