diff options
| -rw-r--r-- | net/ipv4/tcp_input.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 7facdb0f6960..5573202f0861 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
| @@ -2134,7 +2134,7 @@ static void tcp_verify_retransmit_hint(struct tcp_sock *tp, struct sk_buff *skb) | |||
| 2134 | /* Mark head of queue up as lost. With RFC3517 SACK, the packets is | 2134 | /* Mark head of queue up as lost. With RFC3517 SACK, the packets is |
| 2135 | * is against sacked "cnt", otherwise it's against facked "cnt" | 2135 | * is against sacked "cnt", otherwise it's against facked "cnt" |
| 2136 | */ | 2136 | */ |
| 2137 | static void tcp_mark_head_lost(struct sock *sk, int packets, int fast_rexmit) | 2137 | static void tcp_mark_head_lost(struct sock *sk, int packets) |
| 2138 | { | 2138 | { |
| 2139 | struct tcp_sock *tp = tcp_sk(sk); | 2139 | struct tcp_sock *tp = tcp_sk(sk); |
| 2140 | struct sk_buff *skb; | 2140 | struct sk_buff *skb; |
| @@ -2161,7 +2161,7 @@ static void tcp_mark_head_lost(struct sock *sk, int packets, int fast_rexmit) | |||
| 2161 | (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)) | 2161 | (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)) |
| 2162 | cnt += tcp_skb_pcount(skb); | 2162 | cnt += tcp_skb_pcount(skb); |
| 2163 | 2163 | ||
| 2164 | if (((!fast_rexmit || (tp->lost_out > 0)) && (cnt > packets)) || | 2164 | if ((cnt > packets) || |
| 2165 | after(TCP_SKB_CB(skb)->end_seq, tp->high_seq)) | 2165 | after(TCP_SKB_CB(skb)->end_seq, tp->high_seq)) |
| 2166 | break; | 2166 | break; |
| 2167 | if (!(TCP_SKB_CB(skb)->sacked & (TCPCB_SACKED_ACKED|TCPCB_LOST))) { | 2167 | if (!(TCP_SKB_CB(skb)->sacked & (TCPCB_SACKED_ACKED|TCPCB_LOST))) { |
| @@ -2180,17 +2180,17 @@ static void tcp_update_scoreboard(struct sock *sk, int fast_rexmit) | |||
| 2180 | struct tcp_sock *tp = tcp_sk(sk); | 2180 | struct tcp_sock *tp = tcp_sk(sk); |
| 2181 | 2181 | ||
| 2182 | if (tcp_is_reno(tp)) { | 2182 | if (tcp_is_reno(tp)) { |
| 2183 | tcp_mark_head_lost(sk, 1, fast_rexmit); | 2183 | tcp_mark_head_lost(sk, 1); |
| 2184 | } else if (tcp_is_fack(tp)) { | 2184 | } else if (tcp_is_fack(tp)) { |
| 2185 | int lost = tp->fackets_out - tp->reordering; | 2185 | int lost = tp->fackets_out - tp->reordering; |
| 2186 | if (lost <= 0) | 2186 | if (lost <= 0) |
| 2187 | lost = 1; | 2187 | lost = 1; |
| 2188 | tcp_mark_head_lost(sk, lost, fast_rexmit); | 2188 | tcp_mark_head_lost(sk, lost); |
| 2189 | } else { | 2189 | } else { |
| 2190 | int sacked_upto = tp->sacked_out - tp->reordering; | 2190 | int sacked_upto = tp->sacked_out - tp->reordering; |
| 2191 | if (sacked_upto < 0) | 2191 | if (sacked_upto < fast_rexmit) |
| 2192 | sacked_upto = 0; | 2192 | sacked_upto = fast_rexmit; |
| 2193 | tcp_mark_head_lost(sk, sacked_upto, fast_rexmit); | 2193 | tcp_mark_head_lost(sk, sacked_upto); |
| 2194 | } | 2194 | } |
| 2195 | 2195 | ||
| 2196 | /* New heuristics: it is possible only after we switched | 2196 | /* New heuristics: it is possible only after we switched |
| @@ -2524,7 +2524,7 @@ static void tcp_fastretrans_alert(struct sock *sk, int pkts_acked, int flag) | |||
| 2524 | before(tp->snd_una, tp->high_seq) && | 2524 | before(tp->snd_una, tp->high_seq) && |
| 2525 | icsk->icsk_ca_state != TCP_CA_Open && | 2525 | icsk->icsk_ca_state != TCP_CA_Open && |
| 2526 | tp->fackets_out > tp->reordering) { | 2526 | tp->fackets_out > tp->reordering) { |
| 2527 | tcp_mark_head_lost(sk, tp->fackets_out - tp->reordering, 0); | 2527 | tcp_mark_head_lost(sk, tp->fackets_out - tp->reordering); |
| 2528 | NET_INC_STATS_BH(LINUX_MIB_TCPLOSS); | 2528 | NET_INC_STATS_BH(LINUX_MIB_TCPLOSS); |
| 2529 | } | 2529 | } |
| 2530 | 2530 | ||
