aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c18
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. */