Could the queue be filling because the data is not being properly ACK'd? My loop does not return to allow any new incoming packets until it finishes the write process.
Matthew Yingling -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Matthew Yingling Sent: Monday, April 03, 2006 1:12 PM To: Mailing list for lwIP users Subject: [lwip-users] tcp_enqueue fills but won't empty I am using the Raw API in a MicroBlaze system in a loop containing something similar to the following: if(tcp_sndbuf(pcb)>4) { while(tcp_write(pbc,vptr,4,1)==ERR_MEM) { tcp_output(pcb); } } If I run the loop longer than the maximum tcp queue length (lwipopts.h (TCP_SND_QUEUELEN)), LwIP will not send any more data even when I call tcp_output(). I can manually modify the queue length, but why won't it ever decrease when I call tcp_output() explicitly? However, I can run the loop fewer than TCP_SND_QUEULEN iterations as much as I want without the queue ever filling (with new pcbs each time). What needs to happen for the tcp queue to empty? I also noticed that the UDP throughput has decreased in LwIP 1.1.1 vs. 1.1.0. Is there some change of option that changed that might account for this or is it just a side effect of other modifications to the code? I haven't tested if this affects TCP as well. Matthew Yingling _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
