diff options
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index c28976a7e596..3f2f09091bcf 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -3273,18 +3273,15 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets, | |||
3273 | if (tcp_is_reno(tp)) { | 3273 | if (tcp_is_reno(tp)) { |
3274 | tcp_remove_reno_sacks(sk, pkts_acked); | 3274 | tcp_remove_reno_sacks(sk, pkts_acked); |
3275 | } else { | 3275 | } else { |
3276 | int delta; | ||
3277 | |||
3276 | /* Non-retransmitted hole got filled? That's reordering */ | 3278 | /* Non-retransmitted hole got filled? That's reordering */ |
3277 | if (reord < prior_fackets) | 3279 | if (reord < prior_fackets) |
3278 | tcp_update_reordering(sk, tp->fackets_out - reord, 0); | 3280 | tcp_update_reordering(sk, tp->fackets_out - reord, 0); |
3279 | 3281 | ||
3280 | /* No need to care for underflows here because | 3282 | delta = tcp_is_fack(tp) ? pkts_acked : |
3281 | * the lost_skb_hint gets NULLed if we're past it | 3283 | prior_sacked - tp->sacked_out; |
3282 | * (or something non-trivial happened) | 3284 | tp->lost_cnt_hint -= min(tp->lost_cnt_hint, delta); |
3283 | */ | ||
3284 | if (tcp_is_fack(tp)) | ||
3285 | tp->lost_cnt_hint -= pkts_acked; | ||
3286 | else | ||
3287 | tp->lost_cnt_hint -= prior_sacked - tp->sacked_out; | ||
3288 | } | 3285 | } |
3289 | 3286 | ||
3290 | tp->fackets_out -= min(pkts_acked, tp->fackets_out); | 3287 | tp->fackets_out -= min(pkts_acked, tp->fackets_out); |