diff options
Diffstat (limited to 'src/vnet/tcp/tcp.h')
-rw-r--r-- | src/vnet/tcp/tcp.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/vnet/tcp/tcp.h b/src/vnet/tcp/tcp.h index 98808c1368b..aeae57c6c6d 100644 --- a/src/vnet/tcp/tcp.h +++ b/src/vnet/tcp/tcp.h @@ -235,6 +235,7 @@ typedef enum _tcp_cc_algorithm_type { TCP_CC_NEWRENO, TCP_CC_CUBIC, + TCP_CC_LAST = TCP_CC_CUBIC } tcp_cc_algorithm_type_e; typedef struct _tcp_cc_algorithm tcp_cc_algorithm_t; @@ -448,18 +449,21 @@ typedef struct _tcp_main tcp_connection_t *half_open_connections; clib_spinlock_t half_open_lock; - /* Congestion control algorithms registered */ - tcp_cc_algorithm_t *cc_algos; - /** vlib buffer size */ u32 bytes_per_buffer; /* Seed used to generate random iss */ tcp_iss_seed_t iss_seed; + /* Congestion control algorithms registered */ + tcp_cc_algorithm_t *cc_algos; + /** Hash table of cc algorithms by name */ uword *cc_algo_by_name; + /** Last cc algo registered */ + tcp_cc_algorithm_type_e cc_last_type; + /* * Configuration */ @@ -495,7 +499,6 @@ typedef struct _tcp_main /** Default congestion control algorithm type */ tcp_cc_algorithm_type_e cc_algo; - } tcp_main_t; extern tcp_main_t tcp_main; @@ -936,9 +939,16 @@ tcp_timer_is_active (tcp_connection_t * tc, tcp_timers_e timer) void tcp_rcv_sacks (tcp_connection_t * tc, u32 ack); u8 *tcp_scoreboard_replay (u8 * s, tcp_connection_t * tc, u8 verbose); +/** + * Register exiting cc algo type + */ void tcp_cc_algo_register (tcp_cc_algorithm_type_e type, const tcp_cc_algorithm_t * vft); +/** + * Register new cc algo type + */ +tcp_cc_algorithm_type_e tcp_cc_algo_new_type (const tcp_cc_algorithm_t * vft); tcp_cc_algorithm_t *tcp_cc_algo_get (tcp_cc_algorithm_type_e type); static inline void * |