Bill Auerbach wrote:
I see - tcp_output isn't a "send now" - I thought it meant that (if not, why
do a tcp_write *and* a tcp_output?).  So with tcp_output, Nagle delays are
not circumvented.  The contrib example doesn't do tcp_output - so is it
optional?  Why?

I guess this is not really a good example, then: tcp_output is called from tcp_in.c after calling the receive callback, so in this case, there is no difference. But in general, tcp_enqueue really only enqueues and does *not* output, so if you don't call it, data might never get sent.

tcp_outupt *was* a "send now - everything you have, even if it is a very small packet" and was called by the sequential APIs only if there was enough data was enqueued (that was the nagle algorithm - only for netconn/socket API). However, this lead to bad throughput with the raw API since it did not implement the nagle algorithm.

With 1.3.0, nagle was moved to tcp_output so that raw API users also can use it - and it defaults to *on* (must be explicitly disabled if you don't want it - like on all other platforms).


_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to