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
