X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=net%2Fipv4%2Ftcp_input.c;h=12fda8f27b08bdf5c9f3bad422734f6b1965cef9;hb=662051215c758ae8545451628816204ed6cd372d;hp=83330a6cb24209cf6ac60d634245b7bc151ee6ac;hpb=c55572276834f8b17c859db7d20c224fe25b9eda;p=platform%2Fkernel%2Flinux-starfive.git diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 83330a6..12fda8f 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -4605,7 +4605,11 @@ static void tcp_data_queue_ofo(struct sock *sk, struct sk_buff *skb) if (tcp_ooo_try_coalesce(sk, tp->ooo_last_skb, skb, &fragstolen)) { coalesce_done: - tcp_grow_window(sk, skb); + /* For non sack flows, do not grow window to force DUPACK + * and trigger fast retransmit. + */ + if (tcp_is_sack(tp)) + tcp_grow_window(sk, skb); kfree_skb_partial(skb, fragstolen); skb = NULL; goto add_sack; @@ -4689,7 +4693,11 @@ add_sack: tcp_sack_new_ofo_skb(sk, seq, end_seq); end: if (skb) { - tcp_grow_window(sk, skb); + /* For non sack flows, do not grow window to force DUPACK + * and trigger fast retransmit. + */ + if (tcp_is_sack(tp)) + tcp_grow_window(sk, skb); skb_condense(skb); skb_set_owner_r(skb, sk); }