lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-users] LwIP RAW + Zynq - Unresponsive Tx path when Rx is activ


From: Nenad Pekez
Subject: Re: [lwip-users] LwIP RAW + Zynq - Unresponsive Tx path when Rx is active
Date: Tue, 14 Aug 2018 15:23:58 +0200
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1

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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]