31 tc->cwnd = tc->ssthresh;
43 tc->cwnd = tc->ssthresh;
51 tc->cwnd +=
clib_min (tc->snd_mss, tc->bytes_acked);
67 tc->cwnd += tc->snd_mss;
83 tc->cwnd = (tc->cwnd > tc->bytes_acked + tc->snd_mss) ?
84 tc->cwnd - tc->bytes_acked : tc->snd_mss;
85 if (tc->bytes_acked > tc->snd_mss)
86 tc->cwnd += tc->snd_mss;
110 if (
unformat (input,
"ssthresh %u", &ssthresh))
static void newreno_recovered(tcp_connection_t *tc)
static void newreno_conn_init(tcp_connection_t *tc)
struct nwreno_cfg_ newreno_cfg_t
struct _tcp_connection tcp_connection_t
static void newreno_loss(tcp_connection_t *tc)
#define VLIB_INIT_FUNCTION(x)
#define tcp_in_slowstart(tc)
static u32 tcp_flight_size(const tcp_connection_t *tc)
Our estimate of the number of bytes in flight (pipe size)
static uword newreno_unformat_config(unformat_input_t *input)
enum _tcp_cc_ack_t tcp_cc_ack_t
static void tcp_cwnd_accumulate(tcp_connection_t *tc, u32 thresh, u32 bytes)
clib_error_t * newreno_init(vlib_main_t *vm)
static void newreno_rcv_ack(tcp_connection_t *tc, tcp_rate_sample_t *rs)
void tcp_cc_algo_register(tcp_cc_algorithm_type_e type, const tcp_cc_algorithm_t *vft)
Register exiting cc algo type.
struct _tcp_cc_algorithm tcp_cc_algorithm_t
static u32 tcp_initial_cwnd(const tcp_connection_t *tc)
Initial cwnd as per RFC5681.
static const tcp_cc_algorithm_t tcp_newreno
void newreno_rcv_cong_ack(tcp_connection_t *tc, tcp_cc_ack_t ack_type, tcp_rate_sample_t *rs)
#define tcp_opts_sack_permitted(_to)
static u32 tcp_loss_wnd(const tcp_connection_t *tc)
static void newreno_congestion(tcp_connection_t *tc)