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: lwip-users-bounces+bauerbach=arrayonline....@nongnu.org 
[mailto:lwip-users-bounces+bauerbach=arrayonline....@nongnu.org] On Behalf Of 
Karl Karpfen
Sent: Monday, September 15, 2014 3:00 PM
To: lwip-users@nongnu.org
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!

_______________________________________________
lwip-users mailing list
lwip-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to