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. */ |