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 306dd5dead7d..8fcfc91964ec 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -2526,8 +2526,6 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb) | |||
2526 | if (!tp->retrans_stamp) | 2526 | if (!tp->retrans_stamp) |
2527 | tp->retrans_stamp = TCP_SKB_CB(skb)->when; | 2527 | tp->retrans_stamp = TCP_SKB_CB(skb)->when; |
2528 | 2528 | ||
2529 | tp->undo_retrans += tcp_skb_pcount(skb); | ||
2530 | |||
2531 | /* snd_nxt is stored to detect loss of retransmitted segment, | 2529 | /* snd_nxt is stored to detect loss of retransmitted segment, |
2532 | * see tcp_input.c tcp_sacktag_write_queue(). | 2530 | * see tcp_input.c tcp_sacktag_write_queue(). |
2533 | */ | 2531 | */ |
@@ -2535,6 +2533,10 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb) | |||
2535 | } else if (err != -EBUSY) { | 2533 | } else if (err != -EBUSY) { |
2536 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPRETRANSFAIL); | 2534 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPRETRANSFAIL); |
2537 | } | 2535 | } |
2536 | |||
2537 | if (tp->undo_retrans < 0) | ||
2538 | tp->undo_retrans = 0; | ||
2539 | tp->undo_retrans += tcp_skb_pcount(skb); | ||
2538 | return err; | 2540 | return err; |
2539 | } | 2541 | } |
2540 | 2542 | ||