You said you use RAW API, and I remember answering some question of yours, but I don't remember if you are running bare metal or an OS (neither should I).
Yes, I am running bare metal.
You should (read: must) be calling sys_check_timeouts() frequently enough for TCP to handle its internal timers; Another source of errors is people (and vendors) not reading the docs and calling lwIP low-level functions from different contexts (like main loop and interrupts on a bare metal system).
I have discussed with Simon this stuff in details in previous thread: http://lists.nongnu.org/archive/html/lwip-users/2018-07/msg00005.html
I do check TCP timeouts all the time and I am sure nothing is called from interrupt context.
I guess you can do with the built-in handler, that is, no tcp_sent() callback. Do you have one ?
I have added tcp_sent callback. Behavior looking from Wireshark is somewhat different, but Tx path still hangs. I have attached some Wireshark captures at this link: https://files.fm/u/2mhggcav.
So, instead of your application, use a known to work good application (read: written by someone with some expertise on the subject, that is: the example apps in the tree or in the contrib tree).
Well, the problem is that I cannot find appropriate third party application which is doing sending and receiving at the same time. I have checked iperf application provided in lwip src, but there the sending is done after the receiving is finished. Whatsoever, I did use this application as reference for implementing my application. I was also checking some Xilinx iperf examples.
Since you are debugging a heavy sender
Is this really a heavy sender? It's just 1.5MB per second on a 1Gb Ethernet.
the web server might be a better choice.
I cannot find this application in lwip src. Maybe you can give me some references?
You can also use a bare minimum app that "just sends"
When I do "just sending" or "just receiving" the problem does not exist. I would send you my code on how the sending is done. But basically I just write to TCP buffer from time to time in the main loop and have a counter in tcp_sent callback counting how much data has been acknowledged. Nothing more than that. Maybe I should continue sending from tcp_sent callback?
And sometimes caches... what is it that you have there ?
Wow, caches are story for itself. I still need to check some stuff with caches. Will report on this one.
Sergio, thank you very much for your answers and ideas. Best regards, Nenad
_______________________________________________ lwip-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/lwip-users
