[TCP]: Unconditionally clear TCP_NAGLE_PUSH in skb_entail().
authorDavid S. Miller <davem@davemloft.net>
Tue, 23 Aug 2005 17:13:06 +0000 (10:13 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 23 Aug 2005 17:13:06 +0000 (10:13 -0700)
commit89ebd197eb2cd31d6187db344d5117064e19fdde
treed017e5c04afcd33d99a2bf8554332c5754df8c36
parent0fbbeb1ba43bd04f0f1d4f161b7f72437a1c8a03
[TCP]: Unconditionally clear TCP_NAGLE_PUSH in skb_entail().

Intention of this bit is to force pushing of the existing
send queue when TCP_CORK or TCP_NODELAY state changes via
setsockopt().

But it's easy to create a situation where the bit never
clears.  For example, if the send queue starts empty:

1) set TCP_NODELAY
2) clear TCP_NODELAY
3) set TCP_CORK
4) do small write()

The current code will leave TCP_NAGLE_PUSH set after that
sequence.  Unconditionally clearing the bit when new data
is added via skb_entail() solves the problem.

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