diff options
Diffstat (limited to 'net/ipv4/tcp_output.c')
| -rw-r--r-- | net/ipv4/tcp_output.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index e2b4461074d..5d0b4387cba 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -1298,7 +1298,6 @@ static void __pskb_trim_head(struct sk_buff *skb, int len)  	eat = min_t(int, len, skb_headlen(skb));  	if (eat) {  		__skb_pull(skb, eat); -		skb->avail_size -= eat;  		len -= eat;  		if (!len)  			return; @@ -1810,8 +1809,11 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb)  			goto send_now;  	} -	/* Ok, it looks like it is advisable to defer.  */ -	tp->tso_deferred = 1 | (jiffies << 1); +	/* Ok, it looks like it is advisable to defer. +	 * Do not rearm the timer if already set to not break TCP ACK clocking. +	 */ +	if (!tp->tso_deferred) +		tp->tso_deferred = 1 | (jiffies << 1);  	return true;  |