|
static u8 * | format_tcp_tx_trace (u8 *s, va_list *args) |
|
static u8 | tcp_window_compute_scale (u32 window) |
|
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 int | tcp_make_syn_options (tcp_connection_t *tc, tcp_options_t *opts) |
|
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...
|
|
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) |
|
u16 | ip6_tcp_compute_checksum_custom (vlib_main_t *vm, vlib_buffer_t *p0, ip46_address_t *src, ip46_address_t *dst) |
|
u16 | ip4_tcp_compute_checksum_custom (vlib_main_t *vm, vlib_buffer_t *p0, ip46_address_t *src, ip46_address_t *dst) |
|
static u16 | tcp_compute_checksum (tcp_connection_t *tc, 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...
|
|
static void | tcp_make_ack (tcp_connection_t *tc, vlib_buffer_t *b) |
| Convert buffer to ACK. More...
|
|
static 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...
|
|
static 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 (tcp_worker_ctx_t *wrk, vlib_buffer_t *b, u32 bi, u8 is_ip4, u32 fib_index) |
|
static void | tcp_enqueue_to_output (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 *b, 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_send_fin (tcp_connection_t *tc) |
| Send FIN. More...
|
|
static void | tcp_push_hdr_i (tcp_connection_t *tc, vlib_buffer_t *b, u32 snd_nxt, u8 compute_opts, u8 maybe_burst, u8 update_snd_nxt) |
| Push TCP header and update connection variables. More...
|
|
static u32 | tcp_buffer_len (vlib_buffer_t *b) |
|
u32 | tcp_session_push_header (transport_connection_t *tconn, vlib_buffer_t *b) |
|
void | tcp_send_ack (tcp_connection_t *tc) |
|
void | tcp_program_ack (tcp_connection_t *tc) |
|
void | tcp_program_dupack (tcp_connection_t *tc) |
|
void | tcp_program_retransmit (tcp_connection_t *tc) |
|
void | tcp_send_window_update_ack (tcp_connection_t *tc) |
| Send window update ack. 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_check_sack_reneging (tcp_connection_t *tc) |
|
static void | tcp_cc_init_rxt_timeout (tcp_connection_t *tc) |
| Reset congestion control, switch cwnd to loss window and try again. More...
|
|
void | tcp_timer_retransmit_handler (tcp_connection_t *tc) |
|
void | tcp_timer_retransmit_syn_handler (tcp_connection_t *tc) |
| SYN retransmit timer handler. More...
|
|
void | tcp_timer_persist_handler (tcp_connection_t *tc) |
| 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_transmit_unsent (tcp_worker_ctx_t *wrk, tcp_connection_t *tc, u32 burst_size) |
|
int | tcp_fastrecovery_prr_snd_space (tcp_connection_t *tc) |
| Estimate send space using proportional rate reduction (RFC6937) More...
|
|
static u8 | tcp_retransmit_should_retry_head (tcp_connection_t *tc, sack_scoreboard_t *sb) |
|
static u8 | tcp_max_tx_deq (tcp_connection_t *tc) |
|
static int | tcp_retransmit_sack (tcp_worker_ctx_t *wrk, tcp_connection_t *tc, u32 burst_size) |
| Do retransmit with SACKs. More...
|
|
static int | tcp_retransmit_no_sack (tcp_worker_ctx_t *wrk, tcp_connection_t *tc, u32 burst_size) |
| Fast retransmit without SACK info. More...
|
|
static int | tcp_send_acks (tcp_connection_t *tc, u32 max_burst_size) |
|
static int | tcp_do_retransmit (tcp_connection_t *tc, u32 max_burst_size) |
|
int | tcp_session_custom_tx (void *conn, transport_send_params_t *sp) |
|
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_check_if_gso (tcp_connection_t *tc, vlib_buffer_t *b) |
|
static void | tcp_output_handle_packet (tcp_connection_t *tc0, vlib_buffer_t *b0, vlib_node_runtime_t *error_node, 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) |
|
VLIB_NODE_FN() | tcp4_output_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame) |
|
VLIB_NODE_FN() | tcp6_output_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame) |
|
static uword | tcp46_send_reset_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, u8 is_ip4) |
|
VLIB_NODE_FN() | tcp4_reset_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame) |
|
VLIB_NODE_FN() | tcp6_reset_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame) |
|