Print this page
11553 Want pluggable TCP congestion control algorithms
Portions contributed by: Cody Peter Mello <cody.mello@joyent.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>
Reviewed by: Robert Mustacchi <robert.mustacchi@joyent.com>

*** 20,30 **** */ /* * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, Joyent, Inc. All rights reserved. * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved. ! * Copyright (c) 2014, 2016 by Delphix. All rights reserved. */ /* Copyright (c) 1990 Mentat Inc. */ #ifndef _INET_TCP_H #define _INET_TCP_H --- 20,30 ---- */ /* * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, Joyent, Inc. All rights reserved. * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved. ! * Copyright (c) 2014, 2017 by Delphix. All rights reserved. */ /* Copyright (c) 1990 Mentat Inc. */ #ifndef _INET_TCP_H #define _INET_TCP_H
*** 44,53 **** --- 44,54 ---- #include <inet/ip6.h> #include <inet/mi.h> #include <inet/mib2.h> #include <inet/tcp_stack.h> #include <inet/tcp_sack.h> + #include <inet/cc.h> /* TCP states */ #define TCPS_CLOSED -6 #define TCPS_IDLE -5 /* idle (opened, but not bound) */ #define TCPS_BOUND -4 /* bound, ready to connect or accept */
*** 150,159 **** --- 151,163 ---- int64_t tcp_time_wait_expire; struct conn_s *tcp_connp; /* back pointer to conn_t */ tcp_stack_t *tcp_tcps; /* back pointer to tcp_stack_t */ + struct cc_algo *tcp_cc_algo; /* congestion control algorithm */ + struct cc_var tcp_ccv; /* congestion control specific vars */ + int32_t tcp_state; int32_t tcp_rcv_ws; /* My window scale power */ int32_t tcp_snd_ws; /* Sender's window scale power */ uint32_t tcp_ts_recent; /* Timestamp of earliest unacked */ /* data segment */
*** 504,514 **** extern void tcp_conn_reclaim(void *); extern void tcp_free(tcp_t *tcp); extern void tcp_ddi_g_init(void); extern void tcp_ddi_g_destroy(void); ! extern void *tcp_get_conn(void *arg, tcp_stack_t *); extern mblk_t *tcp_snmp_get(queue_t *, mblk_t *, boolean_t); extern int tcp_snmp_set(queue_t *, int, int, uchar_t *, int len); /* Pad for the tf_t structure to avoid false cache line sharing. */ #define TF_CACHEL_PAD 64 --- 508,518 ---- extern void tcp_conn_reclaim(void *); extern void tcp_free(tcp_t *tcp); extern void tcp_ddi_g_init(void); extern void tcp_ddi_g_destroy(void); ! extern conn_t *tcp_get_conn(void *arg, tcp_stack_t *); extern mblk_t *tcp_snmp_get(queue_t *, mblk_t *, boolean_t); extern int tcp_snmp_set(queue_t *, int, int, uchar_t *, int len); /* Pad for the tf_t structure to avoid false cache line sharing. */ #define TF_CACHEL_PAD 64