![]() |
FD.io VPP
v19.08-27-gf4dcae4
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 2351 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 2355 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 |
|
inlinestatic |
Definition at line 2217 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 2132 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 2360 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 | ||
| ) |
|
static |
Reset congestion control, switch cwnd to loss window and try again.
Definition at line 1438 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 2043 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 623 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 580 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 616 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 664 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 632 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 671 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int tcp_fast_retransmit | ( | tcp_worker_ctx_t * | wrk, |
| tcp_connection_t * | tc, | ||
| u32 | burst_size | ||
| ) |
Do fast retransmit.
Definition at line 1985 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int tcp_fast_retransmit_no_sack | ( | tcp_worker_ctx_t * | wrk, |
| tcp_connection_t * | tc, | ||
| u32 | burst_size | ||
| ) |
Fast retransmit without SACK info.
Definition at line 1921 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int tcp_fast_retransmit_sack | ( | tcp_worker_ctx_t * | wrk, |
| tcp_connection_t * | tc, | ||
| u32 | burst_size | ||
| ) |
Do fast retransmit with SACKs.
Definition at line 1818 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 1780 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 1003 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_flush_frame_to_output | ( | tcp_worker_ctx_t * | wrk, |
| u8 | is_ip4 | ||
| ) |
Flush tx frame populated by retransmits and timer pops.
Definition at line 988 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 1019 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 468 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_init_mss | ( | tcp_connection_t * | tc | ) |
Definition at line 426 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 114 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 95 of file tcp_output.c.
Here is the caller graph for this function:
|
inlinestatic |
Convert buffer to ACK.
Definition at line 514 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 484 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 330 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 525 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 365 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 679 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 534 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 266 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 559 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 295 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 185 of file tcp_output.c.
Here is the caller graph for this function:
|
static |
Definition at line 2100 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 2183 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 2155 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 1382 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 1270 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 1189 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 1199 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_program_fastretransmit | ( | tcp_connection_t * | tc | ) |
Definition at line 1211 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 1076 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 894 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 1761 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 451 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 1170 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 1995 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 1031 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 846 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 764 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 926 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 961 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, ensuring that it will be sent once, if RWND became non-zero, after zero RWND has been advertised in ACK before.
Definition at line 1242 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 2066 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 1138 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_timer_delack_handler | ( | u32 | index | ) |
Delayed ack timer handler.
Sends delayed ACK when timer expires
Definition at line 1226 of file tcp_output.c.
Here is the call graph for this function:| void tcp_timer_persist_handler | ( | u32 | index | ) |
Got 0 snd_wnd from peer, try to do something about it.
Definition at line 1680 of file tcp_output.c.
Here is the call graph for this function:| void tcp_timer_retransmit_handler | ( | u32 | tc_index | ) |
| void tcp_timer_retransmit_syn_handler | ( | u32 | tc_index | ) |
SYN retransmit timer handler.
Active open only.
Definition at line 1611 of file tcp_output.c.
Here is the call 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 400 of file tcp_output.c.
Here is the call graph for this function:
Here is the caller graph for this function:| void tcp_update_rcv_mss | ( | tcp_connection_t * | tc | ) |
Update max segment size we're able to process.
The value is constrained by our interface's MTU and IP options. It is also what we advertise to our peer.
Definition at line 85 of file tcp_output.c.
Here is the caller graph for this function:
|
inlinestatic |
Definition at line 126 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 172 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 2305 of file tcp_output.c.
| vlib_node_registration_t tcp4_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp4_reset_node)
Definition at line 2442 of file tcp_output.c.
| vlib_node_registration_t tcp6_output_node |
(constructor) VLIB_REGISTER_NODE (tcp6_output_node)
Definition at line 2325 of file tcp_output.c.
| vlib_node_registration_t tcp6_reset_node |
(constructor) VLIB_REGISTER_NODE (tcp6_reset_node)
Definition at line 2458 of file tcp_output.c.
|
static |
Definition at line 40 of file tcp_output.c.