diff options
Diffstat (limited to 'net/ipv4/tcp_input.c')
| -rw-r--r-- | net/ipv4/tcp_input.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 29222b964951..677419d0c9ad 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
| @@ -355,8 +355,6 @@ static void tcp_clamp_window(struct sock *sk, struct tcp_sock *tp) | |||
| 355 | app_win -= icsk->icsk_ack.rcv_mss; | 355 | app_win -= icsk->icsk_ack.rcv_mss; |
| 356 | app_win = max(app_win, 2U*tp->advmss); | 356 | app_win = max(app_win, 2U*tp->advmss); |
| 357 | 357 | ||
| 358 | if (!ofo_win) | ||
| 359 | tp->window_clamp = min(tp->window_clamp, app_win); | ||
| 360 | tp->rcv_ssthresh = min(tp->window_clamp, 2U*tp->advmss); | 358 | tp->rcv_ssthresh = min(tp->window_clamp, 2U*tp->advmss); |
| 361 | } | 359 | } |
| 362 | } | 360 | } |
| @@ -979,14 +977,19 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_ | |||
| 979 | if (!before(TCP_SKB_CB(skb)->seq, end_seq)) | 977 | if (!before(TCP_SKB_CB(skb)->seq, end_seq)) |
| 980 | break; | 978 | break; |
| 981 | 979 | ||
| 980 | in_sack = !after(start_seq, TCP_SKB_CB(skb)->seq) && | ||
| 981 | !before(end_seq, TCP_SKB_CB(skb)->end_seq); | ||
| 982 | |||
| 982 | pcount = tcp_skb_pcount(skb); | 983 | pcount = tcp_skb_pcount(skb); |
| 983 | 984 | ||
| 984 | if (pcount > 1 && | 985 | if (pcount > 1 && !in_sack && |
| 985 | (after(start_seq, TCP_SKB_CB(skb)->seq) || | 986 | after(TCP_SKB_CB(skb)->end_seq, start_seq)) { |
| 986 | before(end_seq, TCP_SKB_CB(skb)->end_seq))) { | ||
| 987 | unsigned int pkt_len; | 987 | unsigned int pkt_len; |
| 988 | 988 | ||
| 989 | if (after(start_seq, TCP_SKB_CB(skb)->seq)) | 989 | in_sack = !after(start_seq, |
| 990 | TCP_SKB_CB(skb)->seq); | ||
| 991 | |||
| 992 | if (!in_sack) | ||
| 990 | pkt_len = (start_seq - | 993 | pkt_len = (start_seq - |
| 991 | TCP_SKB_CB(skb)->seq); | 994 | TCP_SKB_CB(skb)->seq); |
| 992 | else | 995 | else |
| @@ -999,9 +1002,6 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_ | |||
| 999 | 1002 | ||
| 1000 | fack_count += pcount; | 1003 | fack_count += pcount; |
| 1001 | 1004 | ||
| 1002 | in_sack = !after(start_seq, TCP_SKB_CB(skb)->seq) && | ||
| 1003 | !before(end_seq, TCP_SKB_CB(skb)->end_seq); | ||
| 1004 | |||
| 1005 | sacked = TCP_SKB_CB(skb)->sacked; | 1005 | sacked = TCP_SKB_CB(skb)->sacked; |
| 1006 | 1006 | ||
| 1007 | /* Account D-SACK for retransmitted packet. */ | 1007 | /* Account D-SACK for retransmitted packet. */ |
