diff options
Diffstat (limited to 'net/ipv4/tcp_output.c')
| -rw-r--r-- | net/ipv4/tcp_output.c | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 4ff3b6dc74fc..376b2cfbb685 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -2060,7 +2060,7 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *to,  		/* Punt if not enough space exists in the first SKB for  		 * the data in the second  		 */ -		if (skb->len > skb_tailroom(to)) +		if (skb->len > skb_availroom(to))  			break;  		if (after(TCP_SKB_CB(skb)->end_seq, tcp_wnd_end(tp))) @@ -2306,8 +2306,10 @@ begin_fwd:  		if (sacked & (TCPCB_SACKED_ACKED|TCPCB_SACKED_RETRANS))  			continue; -		if (tcp_retransmit_skb(sk, skb)) +		if (tcp_retransmit_skb(sk, skb)) { +			NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPRETRANSFAIL);  			return; +		}  		NET_INC_STATS_BH(sock_net(sk), mib_idx);  		if (inet_csk(sk)->icsk_ca_state == TCP_CA_Recovery) |