|
From: | Simon Goldschmidt |
Subject: | Re: [lwip-users] How to check send state? |
Date: | Tue, 16 Sep 2014 15:50:49 +0200 |
Hi,
Did you declare sentLength as volatile? You might also need to protect it if it’s not loaded/stored in a single processor instruction (not likely to be the case with a 32-bit architecture).
Bill
From: address@hidden [mailto:address@hidden On Behalf Of Karl Karpfen
Sent: Monday, September 15, 2014 3:00 PM
To: address@hidden
Subject: [lwip-users] How to check send state?
Hi,
within my lwIP application (TCP with permanent connection) I'm sending some data out of main-loop (no interrupt context) and start submission by calling
tcp_output(currentPcb);
Sending of data is done via tcp_write(). Within the send function itself amount of data already sent is stored in a variable sentLength. Now to find out if it is possible to send next bunch of data I check this variable. When its size is equal to the length of the previous data buffer, sending was completed and I start submission of next buffer.
My problem here: sentLength is manipulated out of interrupt context while checking it for completion is done out of main loop. It seems this sometimes causes troubles, at receiver side I can see incomplete frames.
So my question: what is the correct way to find out if currentPcb has finished sending (or better has pushed all data to tcp_write()) and is ready to accept next bunch of data?
Thanks!
[Prev in Thread] | Current Thread | [Next in Thread] |