![]() |
FD.io VPP
v21.01.1
Vector Packet Processing
|
Include dependency graph for tcp_output.c:Go to the source code of this file.
Data Structures | |
| struct | tcp_tx_trace_t |
Macros | |
| #define | foreach_tcp4_output_next |
| #define | foreach_tcp6_output_next |
| #define | tcp_error(n, s) s, |
| #define | scoreboard_rescue_rxt_valid(_sb, _tc) |
| #define | foreach_tcp4_reset_next |
| #define | foreach_tcp6_reset_next |
Typedefs | |
| typedef enum _tcp_output_next | tcp_output_next_t |
| typedef enum _tcp_reset_next | tcp_reset_next_t |
Variables | |
| static char * | tcp_error_strings [] |
| vlib_node_registration_t | tcp4_output_node |
| (constructor) VLIB_REGISTER_NODE (tcp4_output_node) More... | |
| vlib_node_registration_t | tcp6_output_node |
| (constructor) VLIB_REGISTER_NODE (tcp6_output_node) More... | |
| vlib_node_registration_t | tcp4_reset_node |
| (constructor) VLIB_REGISTER_NODE (tcp4_reset_node) More... | |
| vlib_node_registration_t | tcp6_reset_node |
| (constructor) VLIB_REGISTER_NODE (tcp6_reset_node) More... | |
| #define foreach_tcp4_output_next |
Definition at line 31 of file tcp_output.c.
| #define foreach_tcp4_reset_next |
Definition at line 2353 of file tcp_output.c.
| #define foreach_tcp6_output_next |
Definition at line 37 of file tcp_output.c.
| #define foreach_tcp6_reset_next |
Definition at line 2357 of file tcp_output.c.
| #define scoreboard_rescue_rxt_valid | ( | _sb, | |
| _tc | |||
| ) |
Definition at line 1700 of file tcp_output.c.
| #define tcp_error | ( | n, | |
| s | |||
| ) | s, |
| typedef enum _tcp_output_next tcp_output_next_t |
| typedef enum _tcp_reset_next tcp_reset_next_t |
| u16 ip4_tcp_compute_checksum_custom | ( | vlib_main_t * | vm, |
| vlib_buffer_t * | p0, | ||
| ip46_address_t * | src, | ||
| ip46_address_t * | dst | ||
| ) |
Definition at line 396 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| u16 ip6_tcp_compute_checksum_custom | ( | vlib_main_t * | vm, |
| vlib_buffer_t * | p0, | ||
| ip46_address_t * | src, | ||
| ip46_address_t * | dst | ||
| ) |
Definition at line 370 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 2182 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 2082 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 2362 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| VLIB_NODE_FN() tcp4_output_node | ( | vlib_main_t * | vm, |
| vlib_node_runtime_t * | node, | ||
| vlib_frame_t * | from_frame | ||
| ) |
| VLIB_NODE_FN() tcp4_reset_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 | ||
| ) |
| VLIB_NODE_FN() tcp6_reset_node | ( | vlib_main_t * | vm, |
| vlib_node_runtime_t * | node, | ||
| vlib_frame_t * | from_frame | ||
| ) |
|
inlinestatic |
|
static |
Reset congestion control, switch cwnd to loss window and try again.
Definition at line 1283 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
|
static |
Definition at line 1267 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 416 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1998 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 543 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 565 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int tcp_fastrecovery_prr_snd_space | ( | tcp_connection_t * | tc | ) |
Estimate send space using proportional rate reduction (RFC6937)
Definition at line 1657 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 355 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| u32 tcp_initial_window_to_advertise | ( | tcp_connection_t * | tc | ) |
Compute initial window and scale factor.
As per RFC1323, window field in SYN and SYN-ACK segments is never scaled.
Definition at line 104 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
TCP's initial window.
Definition at line 85 of file tcp_output.c.
Here is the caller graph for this function:
|
inlinestatic |
Convert buffer to ACK.
Definition at line 475 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Prepare ACK.
Definition at line 442 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 230 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Convert buffer to FIN-ACK.
Definition at line 486 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 265 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 578 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_make_syn | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | b | ||
| ) |
Convert buffer to SYN.
Definition at line 495 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 166 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Convert buffer to SYN-ACK.
Definition at line 521 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 195 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 1694 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 2050 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 2146 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 2106 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Build a retransmit segment.
Definition at line 1224 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Allocate a new buffer and build a new tcp segment.
| wrk | tcp worker | |
| tc | connection for which the segment will be allocated | |
| offset | offset of the first byte in the tx fifo | |
| max_deq_byte | segment size | |
| [out] | b | pointer to buffer allocated |
Definition at line 1108 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_program_ack | ( | tcp_connection_t * | tc | ) |
Definition at line 1043 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_program_dupack | ( | tcp_connection_t * | tc | ) |
Definition at line 1053 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_program_retransmit | ( | tcp_connection_t * | tc | ) |
Definition at line 1065 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Push TCP header and update connection variables.
Should only be called for segments with data, not for 'control' packets.
Definition at line 922 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 785 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int tcp_retransmit_first_unacked | ( | tcp_worker_ctx_t * | wrk, |
| tcp_connection_t * | tc | ||
| ) |
Retransmit first unacked segment.
Definition at line 1599 of file tcp_output.c.
Here is the call graph for this function:
|
static |
Fast retransmit without SACK info.
Definition at line 1862 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Do retransmit with SACKs.
Definition at line 1708 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
|
static |
Definition at line 338 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_send_ack | ( | tcp_connection_t * | tc | ) |
Definition at line 1023 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1943 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_send_fin | ( | tcp_connection_t * | tc | ) |
Send FIN.
Definition at line 873 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_send_reset | ( | tcp_connection_t * | tc | ) |
Build and set reset packet for connection.
Definition at line 749 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| 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.
It extracts connection info out of original packet
Definition at line 661 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_send_syn | ( | tcp_connection_t * | tc | ) |
Send SYN.
Builds a SYN packet for a half-open connection and sends it to ipx_lookup. The packet is not forwarded through tcpx_output to avoid doing lookups in the half_open pool.
Definition at line 808 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_send_synack | ( | tcp_connection_t * | tc | ) |
Definition at line 844 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_send_window_update_ack | ( | tcp_connection_t * | tc | ) |
Send window update ack.
Ensures that it will be sent only once, after a zero rwnd has been advertised in a previous ack, and only if rwnd has grown beyond a configurable value.
Definition at line 1082 of file tcp_output.c.
Here is the call graph for this function:| int tcp_session_custom_tx | ( | void * | conn, |
| transport_send_params_t * | sp | ||
| ) |
| u32 tcp_session_push_header | ( | transport_connection_t * | tconn, |
| vlib_buffer_t * | b | ||
| ) |
| void tcp_timer_persist_handler | ( | tcp_connection_t * | tc | ) |
Got 0 snd_wnd from peer, try to do something about it.
Definition at line 1516 of file tcp_output.c.
Here is the call graph for this function:| void tcp_timer_retransmit_handler | ( | tcp_connection_t * | tc | ) |
| void tcp_timer_retransmit_syn_handler | ( | tcp_connection_t * | tc | ) |
SYN retransmit timer handler.
Active open only.
Definition at line 1452 of file tcp_output.c.
Here is the call graph for this function:
|
static |
Definition at line 1618 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_update_burst_snd_vars | ( | tcp_connection_t * | tc | ) |
Update burst send vars.
This should only be called when doing bursts
Definition at line 300 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 116 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
Compute and return window to advertise, scaled as per RFC1323.
Definition at line 156 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| vlib_node_registration_t tcp4_output_node |
(constructor) VLIB_REGISTER_NODE (tcp4_output_node)
Definition at line 2307 of file tcp_output.c.
| vlib_node_registration_t tcp4_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp4_reset_node)
Definition at line 2434 of file tcp_output.c.
| vlib_node_registration_t tcp6_output_node |
(constructor) VLIB_REGISTER_NODE (tcp6_output_node)
Definition at line 2327 of file tcp_output.c.
| vlib_node_registration_t tcp6_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp6_reset_node)
Definition at line 2450 of file tcp_output.c.
|
static |
Definition at line 43 of file tcp_output.c.