That makes a lot of sense. Thanks guys for your help. I'll try out what you suggest.
Daniel. 2010/1/27 [email protected] <[email protected]>: > As a side note, I hope you are calling the loop below in the tcpip_thread, > not from another application thread, which would violate lwIP threading. > > Aside from that, what Bernhard said is true: the packets are buffer for > retransmission until they are ACKed by the remote side, which cannot happen > while you are in the loop. As a result, you either have to bufer your data > somewhere else and call tcp_write() from the 'poll' or 'sent' callback - or > increase TCP_SND_QUEUELEN to 20 (in your case, depends on your application) > to be able to internally queue as much data as you have to at maximum. > > Simon > > > Daniel Berenguer wrote: >> >> I'm trying to send a bunch of TCP packets using the raw API but >> tcp_write is returning -1 (out of memory) after the 8th packet. >> >> for (i=0 ; i<20 ; i++) >> { >> strcpy(buffer, "holaaa"); >> res = tcp_write(pcb, buffer, 7, 0); >> tcp_output(pcb); >> } >> >> I've used many variants of the above code (with delays, w/o >> tcp_output, ...) but the problem is always there. The first packet is >> sent immediately after the first tcp_write but then, tcp_write just >> pushes the packets into the sending queue. TCP_SND_QUEUELEN is set to >> 8 so once the TX queue gets overflowed tcp_write starts returning -1 >> and the contents of the queue is finally sent (only 7 packets of 20 >> though). >> >> Any idea? >> >> Thanks. >> >> >> _______________________________________________ >> 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 > _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
