aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/tcp.h
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2014-09-26 16:37:35 -0400
committerDavid S. Miller <davem@davemloft.net>2014-09-29 00:13:10 -0400
commit9890092e46b2996bb85f7f973e69424cb5c07bc0 (patch)
tree4cc1000c27918b9fcf63806bb5ae02cee36feeda /include/net/tcp.h
parent7354c8c389d18719dd71cc810da70b0921d66694 (diff)
net: tcp: more detailed ACK events and events for CE marked packets
DataCenter TCP (DCTCP) determines cwnd growth based on ECN information and ACK properties, e.g. ACK that updates window is treated differently than DUPACK. Also DCTCP needs information whether ACK was delayed ACK. Furthermore, DCTCP also implements a CE state machine that keeps track of CE markings of incoming packets. Therefore, extend the congestion control framework to provide these event types, so that DCTCP can be properly implemented as a normal congestion algorithm module outside of the core stack. Joint work with Daniel Borkmann and Glenn Judd. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Glenn Judd <glenn.judd@morganstanley.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/tcp.h')
-rw-r--r--include/net/tcp.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 7ec6a28305c0..1f57c5363492 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -763,10 +763,17 @@ enum tcp_ca_event {
763 CA_EVENT_CWND_RESTART, /* congestion window restart */ 763 CA_EVENT_CWND_RESTART, /* congestion window restart */
764 CA_EVENT_COMPLETE_CWR, /* end of congestion recovery */ 764 CA_EVENT_COMPLETE_CWR, /* end of congestion recovery */
765 CA_EVENT_LOSS, /* loss timeout */ 765 CA_EVENT_LOSS, /* loss timeout */
766 CA_EVENT_ECN_NO_CE, /* ECT set, but not CE marked */
767 CA_EVENT_ECN_IS_CE, /* received CE marked IP packet */
768 CA_EVENT_DELAYED_ACK, /* Delayed ack is sent */
769 CA_EVENT_NON_DELAYED_ACK,
766}; 770};
767 771
772/* Information about inbound ACK, passed to cong_ops->in_ack_event() */
768enum tcp_ca_ack_event_flags { 773enum tcp_ca_ack_event_flags {
769 CA_ACK_SLOWPATH = (1 << 0), 774 CA_ACK_SLOWPATH = (1 << 0), /* In slow path processing */
775 CA_ACK_WIN_UPDATE = (1 << 1), /* ACK updated window */
776 CA_ACK_ECE = (1 << 2), /* ECE bit is set on ack */
770}; 777};
771 778
772/* 779/*