aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
authorYuchung Cheng <ycheng@google.com>2017-01-13 01:11:38 -0500
committerDavid S. Miller <davem@davemloft.net>2017-01-13 22:37:16 -0500
commit840a3cbe89694fad75578856976f180e852e69aa (patch)
treef5b99c39985394312b5662604e2476eb795dd27b /net/ipv4/tcp_input.c
parent89fe18e44f7ee5ab1c90d0dff5835acee7751427 (diff)
tcp: remove forward retransmit feature
Forward retransmit is an esoteric feature in RFC3517 (condition(3) in the NextSeg()). Basically if a packet is not considered lost by the current criteria (# of dupacks etc), but the congestion window has room for more packets, then retransmit this packet. However it actually conflicts with the rest of recovery design. For example, when reordering is detected we want to be conservative in retransmitting packets but forward-retransmit feature would break that to force more retransmission. Also the implementation is fairly complicated inside the retransmission logic inducing extra iterations in the write queue. With RACK losses are being detected timely and this heuristic is no longer necessary. There this patch removes the feature. Signed-off-by: Yuchung Cheng <ycheng@google.com> Signed-off-by: Neal Cardwell <ncardwell@google.com> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 9469ce384d3b..a041a92348ee 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -916,10 +916,6 @@ static void tcp_verify_retransmit_hint(struct tcp_sock *tp, struct sk_buff *skb)
916 before(TCP_SKB_CB(skb)->seq, 916 before(TCP_SKB_CB(skb)->seq,
917 TCP_SKB_CB(tp->retransmit_skb_hint)->seq)) 917 TCP_SKB_CB(tp->retransmit_skb_hint)->seq))
918 tp->retransmit_skb_hint = skb; 918 tp->retransmit_skb_hint = skb;
919
920 if (!tp->lost_out ||
921 after(TCP_SKB_CB(skb)->end_seq, tp->retransmit_high))
922 tp->retransmit_high = TCP_SKB_CB(skb)->end_seq;
923} 919}
924 920
925/* Sum the number of packets on the wire we have marked as lost. 921/* Sum the number of packets on the wire we have marked as lost.
@@ -1983,7 +1979,6 @@ void tcp_enter_loss(struct sock *sk)
1983 TCP_SKB_CB(skb)->sacked &= ~TCPCB_SACKED_ACKED; 1979 TCP_SKB_CB(skb)->sacked &= ~TCPCB_SACKED_ACKED;
1984 TCP_SKB_CB(skb)->sacked |= TCPCB_LOST; 1980 TCP_SKB_CB(skb)->sacked |= TCPCB_LOST;
1985 tp->lost_out += tcp_skb_pcount(skb); 1981 tp->lost_out += tcp_skb_pcount(skb);
1986 tp->retransmit_high = TCP_SKB_CB(skb)->end_seq;
1987 } 1982 }
1988 } 1983 }
1989 tcp_verify_left_out(tp); 1984 tcp_verify_left_out(tp);