![]() |
FD.io VPP
v20.01-48-g3e0dafb74
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 28 of file tcp_output.c.
| #define foreach_tcp4_reset_next |
Definition at line 2502 of file tcp_output.c.
| #define foreach_tcp6_output_next |
Definition at line 34 of file tcp_output.c.
| #define foreach_tcp6_reset_next |
Definition at line 2506 of file tcp_output.c.
| #define scoreboard_rescue_rxt_valid | ( | _sb, | |
| _tc | |||
| ) |
| #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 479 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 453 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 2326 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 2223 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 2511 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 1425 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 1409 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 499 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 2138 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 669 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 626 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 662 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 678 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 1798 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Flush ip lookup tx frames populated by timer pops.
Definition at line 981 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_flush_frames_to_output | ( | tcp_worker_ctx_t * | wrk | ) |
Flush v4 and v6 tcp and ip-lookup tx frames for thread index.
Definition at line 997 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 438 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 101 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 82 of file tcp_output.c.
Here is the caller graph for this function:
|
inlinestatic |
Convert buffer to ACK.
Definition at line 558 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 525 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 320 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_make_fin | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | b | ||
| ) |
Convert buffer to FIN-ACK.
Definition at line 569 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 355 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 693 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 578 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 256 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_make_synack | ( | tcp_connection_t * | tc, |
| vlib_buffer_t * | b | ||
| ) |
Convert buffer to SYN-ACK.
Definition at line 604 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 285 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 1835 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Write TCP options to segment.
Definition at line 175 of file tcp_output.c.
Here is the caller graph for this function:
|
static |
Definition at line 2191 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 2287 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 2247 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 1367 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 1255 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 1176 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 1186 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 1198 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 1056 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 896 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 1739 of file tcp_output.c.
Here is the call graph for this function:
|
static |
Fast retransmit without SACK info.
Definition at line 2003 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 1849 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 421 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 1157 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 2084 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 1007 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 863 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 778 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 919 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 954 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 1229 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int tcp_session_custom_tx | ( | void * | conn, |
| u32 | max_burst_size | ||
| ) |
Definition at line 2157 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| u32 tcp_session_push_header | ( | transport_connection_t * | tconn, |
| vlib_buffer_t * | b | ||
| ) |
Definition at line 1129 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:Delayed ack timer handler.
Sends delayed ACK when timer expires
Definition at line 1213 of file tcp_output.c.
Here is the call graph for this function:Got 0 snd_wnd from peer, try to do something about it.
Definition at line 1659 of file tcp_output.c.
Here is the call graph for this function:SYN retransmit timer handler.
Active open only.
Definition at line 1593 of file tcp_output.c.
Here is the call graph for this function:
|
static |
Definition at line 1758 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 390 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 113 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 162 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 2456 of file tcp_output.c.
| vlib_node_registration_t tcp4_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp4_reset_node)
Definition at line 2593 of file tcp_output.c.
| vlib_node_registration_t tcp6_output_node |
(constructor) VLIB_REGISTER_NODE (tcp6_output_node)
Definition at line 2476 of file tcp_output.c.
| vlib_node_registration_t tcp6_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp6_reset_node)
Definition at line 2609 of file tcp_output.c.
|
static |
Definition at line 40 of file tcp_output.c.