aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/tcp.h
diff options
context:
space:
mode:
authorYuchung Cheng <ycheng@google.com>2013-03-20 09:32:58 -0400
committerDavid S. Miller <davem@davemloft.net>2013-03-21 11:47:50 -0400
commit9b44190dc114c1720b34975b5bfc65aece112ced (patch)
treec1202e05d6a04fa1d31be2ad2942fbe32ffa3f76 /include/net/tcp.h
parente306e2c13b8c214618af0c61acf62a6e42d486de (diff)
tcp: refactor F-RTO
The patch series refactor the F-RTO feature (RFC4138/5682). This is to simplify the loss recovery processing. Existing F-RTO was developed during the experimental stage (RFC4138) and has many experimental features. It takes a separate code path from the traditional timeout processing by overloading CA_Disorder instead of using CA_Loss state. This complicates CA_Disorder state handling because it's also used for handling dubious ACKs and undos. While the algorithm in the RFC does not change the congestion control, the implementation intercepts congestion control in various places (e.g., frto_cwnd in tcp_ack()). The new code implements newer F-RTO RFC5682 using CA_Loss processing path. F-RTO becomes a small extension in the timeout processing and interfaces with congestion control and Eifel undo modules. It lets congestion control (module) determines how many to send independently. F-RTO only chooses what to send in order to detect spurious retranmission. If timeout is found spurious it invokes existing Eifel undo algorithms like DSACK or TCP timestamp based detection. The first patch removes all F-RTO code except the sysctl_tcp_frto is left for the new implementation. Since CA_EVENT_FRTO is removed, TCP westwood now computes ssthresh on regular timeout CA_EVENT_LOSS event. Signed-off-by: Yuchung Cheng <ycheng@google.com> Acked-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 'include/net/tcp.h')
-rw-r--r--include/net/tcp.h4
1 files changed, 0 insertions, 4 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 7f2f17198d75..d1dcb596230e 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -272,7 +272,6 @@ extern int sysctl_tcp_app_win;
272extern int sysctl_tcp_adv_win_scale; 272extern int sysctl_tcp_adv_win_scale;
273extern int sysctl_tcp_tw_reuse; 273extern int sysctl_tcp_tw_reuse;
274extern int sysctl_tcp_frto; 274extern int sysctl_tcp_frto;
275extern int sysctl_tcp_frto_response;
276extern int sysctl_tcp_low_latency; 275extern int sysctl_tcp_low_latency;
277extern int sysctl_tcp_dma_copybreak; 276extern int sysctl_tcp_dma_copybreak;
278extern int sysctl_tcp_nometrics_save; 277extern int sysctl_tcp_nometrics_save;
@@ -424,8 +423,6 @@ extern struct sock * tcp_check_req(struct sock *sk,struct sk_buff *skb,
424 bool fastopen); 423 bool fastopen);
425extern int tcp_child_process(struct sock *parent, struct sock *child, 424extern int tcp_child_process(struct sock *parent, struct sock *child,
426 struct sk_buff *skb); 425 struct sk_buff *skb);
427extern bool tcp_use_frto(struct sock *sk);
428extern void tcp_enter_frto(struct sock *sk);
429extern void tcp_enter_loss(struct sock *sk, int how); 426extern void tcp_enter_loss(struct sock *sk, int how);
430extern void tcp_clear_retrans(struct tcp_sock *tp); 427extern void tcp_clear_retrans(struct tcp_sock *tp);
431extern void tcp_update_metrics(struct sock *sk); 428extern void tcp_update_metrics(struct sock *sk);
@@ -756,7 +753,6 @@ enum tcp_ca_event {
756 CA_EVENT_TX_START, /* first transmit when no packets in flight */ 753 CA_EVENT_TX_START, /* first transmit when no packets in flight */
757 CA_EVENT_CWND_RESTART, /* congestion window restart */ 754 CA_EVENT_CWND_RESTART, /* congestion window restart */
758 CA_EVENT_COMPLETE_CWR, /* end of congestion recovery */ 755 CA_EVENT_COMPLETE_CWR, /* end of congestion recovery */
759 CA_EVENT_FRTO, /* fast recovery timeout */
760 CA_EVENT_LOSS, /* loss timeout */ 756 CA_EVENT_LOSS, /* loss timeout */
761 CA_EVENT_FAST_ACK, /* in sequence ack */ 757 CA_EVENT_FAST_ACK, /* in sequence ack */
762 CA_EVENT_SLOW_ACK, /* other ack */ 758 CA_EVENT_SLOW_ACK, /* other ack */