![]() |
FD.io VPP
v19.08.2-294-g37e99c22d
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 2525 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 2529 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 476 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 450 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 2349 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 2244 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 2534 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 1430 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 1414 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 496 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 2159 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 666 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 623 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 659 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 675 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 1803 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 986 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 1002 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 435 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 555 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 522 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 317 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 566 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 352 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 690 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 575 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 253 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 601 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 282 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 1840 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 172 of file tcp_output.c.
Here is the caller graph for this function:
|
static |
Definition at line 2212 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 2310 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
|
static |
Build a retransmit segment.
Definition at line 1372 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 1260 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 1181 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 1191 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 1203 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 1061 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 891 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 1744 of file tcp_output.c.
Here is the call graph for this function:
|
static |
Fast retransmit without SACK info.
Definition at line 2023 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 1854 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 418 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 1162 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 2104 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 1012 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 858 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 775 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 924 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 959 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 1234 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 2178 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 1134 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 1218 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 1664 of file tcp_output.c.
Here is the call graph for this function:SYN retransmit timer handler.
Active open only.
Definition at line 1598 of file tcp_output.c.
Here is the call graph for this function:
|
static |
Definition at line 1763 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 387 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 159 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 2479 of file tcp_output.c.
| vlib_node_registration_t tcp4_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp4_reset_node)
Definition at line 2616 of file tcp_output.c.
| vlib_node_registration_t tcp6_output_node |
(constructor) VLIB_REGISTER_NODE (tcp6_output_node)
Definition at line 2499 of file tcp_output.c.
| vlib_node_registration_t tcp6_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp6_reset_node)
Definition at line 2632 of file tcp_output.c.
|
static |
Definition at line 40 of file tcp_output.c.