diff options
author | Florin Coras <fcoras@cisco.com> | 2019-06-10 08:33:50 -0700 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2019-06-11 00:24:05 +0000 |
commit | 4e116fb56fc195fc8f823aa231665fcb9b9c2996 (patch) | |
tree | 7ea243f9d84ef078ba41e027ce31bea26c2933c2 /src/vnet/tcp/tcp.h | |
parent | 5368bb016f5a0d8888456140ba2bf49371e6985c (diff) |
tcp: allow registration of new cc algo types
Type: feature
Change-Id: I83e21b508a19df1beb207d961c8f2b52347deca0
Signed-off-by: Florin Coras <fcoras@cisco.com>
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 * |