[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>

+1 -1
+1 -1
net/ipv4/tcp.c
··· 584 sk_charge_skb(sk, skb); 585 if (!sk->sk_send_head) 586 sk->sk_send_head = skb; 587 - else if (tp->nonagle&TCP_NAGLE_PUSH) 588 tp->nonagle &= ~TCP_NAGLE_PUSH; 589 } 590
··· 584 sk_charge_skb(sk, skb); 585 if (!sk->sk_send_head) 586 sk->sk_send_head = skb; 587 + if (tp->nonagle & TCP_NAGLE_PUSH) 588 tp->nonagle &= ~TCP_NAGLE_PUSH; 589 } 590