|
u8 * | format_tcp_tx_trace (u8 *s, va_list *args) |
|
static u8 | tcp_window_compute_scale (u32 window) |
|
void | tcp_update_rcv_mss (tcp_connection_t *tc) |
| Update max segment size we're able to process. More...
|
|
static u32 | tcp_initial_wnd_unscaled (tcp_connection_t *tc) |
| TCP's initial window. More...
|
|
u32 | tcp_initial_window_to_advertise (tcp_connection_t *tc) |
| Compute initial window and scale factor. More...
|
|
static void | tcp_update_rcv_wnd (tcp_connection_t *tc) |
|
static u32 | tcp_window_to_advertise (tcp_connection_t *tc, tcp_state_t state) |
| Compute and return window to advertise, scaled as per RFC1323. More...
|
|
static u32 | tcp_options_write (u8 *data, tcp_options_t *opts) |
| Write TCP options to segment. More...
|
|
static int | tcp_make_syn_options (tcp_options_t *opts, u8 wnd_scale) |
|
static int | tcp_make_synack_options (tcp_connection_t *tc, tcp_options_t *opts) |
|
static int | tcp_make_established_options (tcp_connection_t *tc, tcp_options_t *opts) |
|
static int | tcp_make_options (tcp_connection_t *tc, tcp_options_t *opts, tcp_state_t state) |
|
void | tcp_update_burst_snd_vars (tcp_connection_t *tc) |
| Update burst send vars. More...
|
|
void | tcp_init_mss (tcp_connection_t *tc) |
|
static int | tcp_alloc_tx_buffers (tcp_worker_ctx_t *wrk, u16 *n_bufs, u32 wanted) |
|
static int | tcp_get_free_buffer_index (tcp_worker_ctx_t *wrk, u32 *bidx) |
|
static void * | tcp_reuse_buffer (vlib_main_t *vm, vlib_buffer_t *b) |
|
static void * | tcp_init_buffer (vlib_main_t *vm, vlib_buffer_t *b) |
|
static void | tcp_make_ack_i (tcp_connection_t *tc, vlib_buffer_t *b, tcp_state_t state, u8 flags) |
| Prepare ACK. More...
|
|
void | tcp_make_ack (tcp_connection_t *tc, vlib_buffer_t *b) |
| Convert buffer to ACK. More...
|
|
void | tcp_make_fin (tcp_connection_t *tc, vlib_buffer_t *b) |
| Convert buffer to FIN-ACK. More...
|
|
void | tcp_make_syn (tcp_connection_t *tc, vlib_buffer_t *b) |
| Convert buffer to SYN. More...
|
|
void | tcp_make_synack (tcp_connection_t *tc, vlib_buffer_t *b) |
| Convert buffer to SYN-ACK. More...
|
|
static void | tcp_enqueue_to_ip_lookup_i (tcp_worker_ctx_t *wrk, vlib_buffer_t *b, u32 bi, u8 is_ip4, u32 fib_index, u8 flush) |
|
static void | tcp_enqueue_to_ip_lookup_now (tcp_worker_ctx_t *wrk, vlib_buffer_t *b, u32 bi, u8 is_ip4, u32 fib_index) |
|
static void | tcp_enqueue_to_ip_lookup (tcp_worker_ctx_t *wrk, vlib_buffer_t *b, u32 bi, u8 is_ip4, u32 fib_index) |
|
static void | tcp_enqueue_to_output_i (tcp_worker_ctx_t *wrk, vlib_buffer_t *b, u32 bi, u8 is_ip4, u8 flush) |
|
static void | tcp_enqueue_to_output (tcp_worker_ctx_t *wrk, vlib_buffer_t *b, u32 bi, u8 is_ip4) |
|
static void | tcp_enqueue_to_output_now (tcp_worker_ctx_t *wrk, vlib_buffer_t *b, u32 bi, u8 is_ip4) |
|
static int | tcp_make_reset_in_place (vlib_main_t *vm, vlib_buffer_t *b0, tcp_state_t state, u8 thread_index, u8 is_ip4) |
|
void | tcp_send_reset_w_pkt (tcp_connection_t *tc, vlib_buffer_t *pkt, u32 thread_index, u8 is_ip4) |
| Send reset without reusing existing buffer. More...
|
|
void | tcp_send_reset (tcp_connection_t *tc) |
| Build and set reset packet for connection. More...
|
|
static void | tcp_push_ip_hdr (tcp_worker_ctx_t *wrk, tcp_connection_t *tc, vlib_buffer_t *b) |
|
void | tcp_send_syn (tcp_connection_t *tc) |
| Send SYN. More...
|
|
void | tcp_send_synack (tcp_connection_t *tc) |
|
void | tcp_flush_frame_to_output (tcp_worker_ctx_t *wrk, u8 is_ip4) |
| Flush tx frame populated by retransmits and timer pops. More...
|
|
static void | tcp_flush_frame_to_ip_lookup (tcp_worker_ctx_t *wrk, u8 is_ip4) |
| Flush ip lookup tx frames populated by timer pops. More...
|
|
void | tcp_flush_frames_to_output (tcp_worker_ctx_t *wrk) |
| Flush v4 and v6 tcp and ip-lookup tx frames for thread index. More...
|
|
void | tcp_send_fin (tcp_connection_t *tc) |
| Send FIN. More...
|
|
static u8 | tcp_make_state_flags (tcp_connection_t *tc, tcp_state_t next_state) |
|
static void | tcp_push_hdr_i (tcp_connection_t *tc, vlib_buffer_t *b, tcp_state_t next_state, u8 compute_opts, u8 maybe_burst) |
| Push TCP header and update connection variables. More...
|
|
u32 | tcp_push_header (tcp_connection_t *tc, vlib_buffer_t *b) |
|
void | tcp_send_ack (tcp_connection_t *tc) |
|
void | tcp_program_ack (tcp_worker_ctx_t *wrk, tcp_connection_t *tc) |
|
void | tcp_program_dupack (tcp_worker_ctx_t *wrk, tcp_connection_t *tc) |
|
void | tcp_send_acks (tcp_worker_ctx_t *wrk) |
|
void | tcp_timer_delack_handler (u32 index) |
| Delayed ack timer handler. More...
|
|
static int | tcp_prepare_segment (tcp_worker_ctx_t *wrk, tcp_connection_t *tc, u32 offset, u32 max_deq_bytes, vlib_buffer_t **b) |
| Allocate a new buffer and build a new tcp segment. More...
|
|
static u32 | tcp_prepare_retransmit_segment (tcp_worker_ctx_t *wrk, tcp_connection_t *tc, u32 offset, u32 max_deq_bytes, vlib_buffer_t **b) |
| Build a retransmit segment. More...
|
|
static void | tcp_rxt_timeout_cc (tcp_connection_t *tc) |
| Reset congestion control, switch cwnd to loss window and try again. More...
|
|
static void | tcp_timer_retransmit_handler_i (u32 index, u8 is_syn) |
|
void | tcp_timer_retransmit_handler (u32 index) |
|
void | tcp_timer_retransmit_syn_handler (u32 index) |
|
void | tcp_timer_persist_handler (u32 index) |
| Got 0 snd_wnd from peer, try to do something about it. More...
|
|
int | tcp_retransmit_first_unacked (tcp_worker_ctx_t *wrk, tcp_connection_t *tc) |
| Retransmit first unacked segment. More...
|
|
static int | tcp_fast_retransmit_unsent (tcp_worker_ctx_t *wrk, tcp_connection_t *tc, u32 burst_size) |
|
int | tcp_fast_retransmit_sack (tcp_worker_ctx_t *wrk, tcp_connection_t *tc, u32 burst_size) |
| Do fast retransmit with SACKs. More...
|
|
int | tcp_fast_retransmit_no_sack (tcp_worker_ctx_t *wrk, tcp_connection_t *tc, u32 burst_size) |
| Fast retransmit without SACK info. More...
|
|
int | tcp_fast_retransmit (tcp_worker_ctx_t *wrk, tcp_connection_t *tc, u32 burst_size) |
| Do fast retransmit. More...
|
|
static void | tcp_output_handle_link_local (tcp_connection_t *tc0, vlib_buffer_t *b0, u16 *next0, u32 *error0) |
|
static void | tcp46_output_trace_frame (vlib_main_t *vm, vlib_node_runtime_t *node, u32 *to_next, u32 n_bufs) |
|
static void | tcp_output_push_ip (vlib_main_t *vm, vlib_buffer_t *b0, tcp_connection_t *tc0, u8 is_ip4) |
|
static void | tcp_output_handle_packet (tcp_connection_t *tc0, vlib_buffer_t *b0, u32 *error0, u16 *next0, u8 is_ip4) |
|
static uword | tcp46_output_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, int is_ip4) |
|
static uword | tcp4_output (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame) |
|
static uword | tcp6_output (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame) |
|
| VLIB_NODE_FUNCTION_MULTIARCH (tcp4_output_node, tcp4_output) |
|
| VLIB_NODE_FUNCTION_MULTIARCH (tcp6_output_node, tcp6_output) |
|
static uword | tcp46_send_reset_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, u8 is_ip4) |
|
static uword | tcp4_send_reset (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame) |
|
static uword | tcp6_send_reset (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame) |
|
| VLIB_NODE_FUNCTION_MULTIARCH (tcp4_reset_node, tcp4_send_reset) |
|
| VLIB_NODE_FUNCTION_MULTIARCH (tcp6_reset_node, tcp6_send_reset) |
|