J,
is there a solution to prevent this block? or, as Bill said, lwip doesn't do
any test, and gives this problem if my application will call a lot of time
tcp_write with small pieces?

thanks.

2008/3/18, Jonathan Larmour <[EMAIL PROTECTED]>:
>
> Piero 74 wrote:
> > Hi.
> >
> > i'm using socket on lwip 130rc1.
> >
> > i have this problem:
> >
> > after some send operation, in tcp_enqueue, here:
> >
> >   /* If total number of pbufs on the unsent/unacked queues exceeds the
> >    * configured maximum, return an error */
> >   queuelen = pcb->snd_queuelen;
> >   /* check for configured max queuelen and possible overflow */
> >   if ((queuelen >= TCP_SND_QUEUELEN) || (queuelen >
> > TCP_SNDQUEUELEN_OVERFLOW)) {
> >     LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 3, ("tcp_enqueue: too long queue
> > %"U16_F" (max %"U16_F")\n", queuelen, TCP_SND_QUEUELEN));
> >     TCP_STATS_INC(tcp.memerr);
> >     pcb->flags |= TF_NAGLEMEMERR;
> >     return ERR_MEM;
> >   }
> >
> > my code loop forever, in this piece of code, with queuelen =
> > TCP_SND_QUEUELEN, without send any packet, incremeting err in tcp.memerr
>
>
> Since I assume your thread is blocked in the send, lwip is trying by
> itself
> to resend the data. You can see how it does this in api_msg.c. The
> sent_tcp
>   function is called when TCP data is really sent. More will be sent if it
> needs to be from sent_tcp by calling do_writemore (or indeed, that's how
> it
> will know that all data in the write has finished). The send buffers are
> also periodically topped up if they need to be by using the poll_tcp
> callback, which also calls do_writemore. This is called from the tcp slow
> timer every 500ms.
>
> This will be why you are seeing that code called lots of times. Sometimes
> it won't get ERR_MEM, or at least it shouldn't. Unless the connection has
> really stalled because the remote end has stopped acking packets.
>
> Jifl
> --
> eCosCentric Limited      http://www.eCosCentric.com/     The eCos experts
>   **  Visit us at ESC Silicon Valley <http://www.embedded.com/esc/sv>  **
>   **  April 15-17 2008, Booth 3012, San Jose McEnery Convention Center **
> Barnwell House, Barnwell Drive, Cambridge, UK.       Tel: +44 1223 245571
> Registered in England and Wales: Reg No 4422071.
> ------["Si fractum non sit, noli id reficere"]------       Opinions==mine
>
>
> _______________________________________________
> 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

Reply via email to