diff options
Diffstat (limited to 'net/ipv4/tcp_output.c')
| -rw-r--r-- | net/ipv4/tcp_output.c | 16 | 
1 files changed, 8 insertions, 8 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 699fb102e971..12d6016bdd9a 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -981,7 +981,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,  		TCP_ADD_STATS(sock_net(sk), TCP_MIB_OUTSEGS,  			      tcp_skb_pcount(skb)); -	err = icsk->icsk_af_ops->queue_xmit(skb, &inet->cork.fl); +	err = icsk->icsk_af_ops->queue_xmit(sk, skb, &inet->cork.fl);  	if (likely(err <= 0))  		return err; @@ -2441,8 +2441,14 @@ int __tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)  		err = tcp_transmit_skb(sk, skb, 1, GFP_ATOMIC);  	} -	if (likely(!err)) +	if (likely(!err)) {  		TCP_SKB_CB(skb)->sacked |= TCPCB_EVER_RETRANS; +		/* Update global TCP statistics. */ +		TCP_INC_STATS(sock_net(sk), TCP_MIB_RETRANSSEGS); +		if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_SYN) +			NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPSYNRETRANS); +		tp->total_retrans++; +	}  	return err;  } @@ -2452,12 +2458,6 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)  	int err = __tcp_retransmit_skb(sk, skb);  	if (err == 0) { -		/* Update global TCP statistics. */ -		TCP_INC_STATS(sock_net(sk), TCP_MIB_RETRANSSEGS); -		if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_SYN) -			NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPSYNRETRANS); -		tp->total_retrans++; -  #if FASTRETRANS_DEBUG > 0  		if (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_RETRANS) {  			net_dbg_ratelimited("retrans_out leaked\n");  | 
