[TCP]: Fix __tcp_push_pending_frames() 'nonagle' handling.
authorDavid S. Miller <davem@davemloft.net>
Tue, 5 Jul 2005 22:19:38 +0000 (15:19 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 5 Jul 2005 22:19:38 +0000 (15:19 -0700)
commit55c97f3e990c1ff63957c64f6cb10711a09fd70e
tree003c5ca17005c8b22cc4cbe0b10721fc4ea676fd
parenta2e2a59c93cc8ba39caa9011c2573f429e40ccd9
[TCP]: Fix __tcp_push_pending_frames() 'nonagle' handling.

'nonagle' should be passed to the tcp_snd_test() function
as 'TCP_NAGLE_PUSH' if we are checking an SKB not at the
tail of the write_queue.  This is because Nagle does not
apply to such frames since we cannot possibly tack more
data onto them.

However, while doing this __tcp_push_pending_frames() makes
all of the packets in the write_queue use this modified
'nonagle' value.

Fix the bug and simplify this function by just calling
tcp_write_xmit() directly if sk_send_head is non-NULL.

As a result, we can now make tcp_data_snd_check() just call
tcp_push_pending_frames() instead of the specialized
__tcp_data_snd_check().

Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/tcp_input.c
net/ipv4/tcp_output.c