#define TCP_MAX_OPTION_SPACE 40
#define TCP_DUPACK_THRESHOLD 3
-#define TCP_MAX_RX_FIFO_SIZE 4 << 20
+#define TCP_MAX_RX_FIFO_SIZE 32 << 20
#define TCP_MIN_RX_FIFO_SIZE 4 << 10
#define TCP_IW_N_SEGMENTS 10
#define TCP_ALWAYS_ACK 1 /**< On/off delayed acks */
output nodes */
vlib_frame_t *ip_lookup_tx_frames[2]; /**< tx frames for ip 4/6
lookup nodes */
+ CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
+ u8 cached_opts[40]; /**< cached 'on the wire'
+ options for bursts */
} tcp_worker_ctx_t;
typedef struct _tcp_main
/* Congestion control algorithms registered */
tcp_cc_algorithm_t *cc_algos;
+ /** vlib buffer size */
+ u32 bytes_per_buffer;
+
+ /*
+ * Configuration
+ */
+
/* Flag that indicates if stack is on or off */
u8 is_enabled;
+ /** Max rx fifo size for a session. It is used in to compute the
+ * rfc 7323 window scaling factor */
+ u32 max_rx_fifo;
+
/** Number of preallocated connections */
u32 preallocated_connections;
u32 preallocated_half_open_connections;
u32 last_v6_address_rotor;
ip6_address_t *ip6_src_addresses;
- /** vlib buffer size */
- u32 bytes_per_buffer;
-
u8 punt_unknown4;
u8 punt_unknown6;
void tcp_send_syn (tcp_connection_t * tc);
void tcp_send_fin (tcp_connection_t * tc);
void tcp_init_mss (tcp_connection_t * tc);
-void tcp_update_snd_mss (tcp_connection_t * tc);
+void tcp_update_burst_snd_vars (tcp_connection_t * tc);
void tcp_update_rto (tcp_connection_t * tc);
void tcp_flush_frame_to_output (vlib_main_t * vm, u8 thread_index, u8 is_ip4);
void tcp_flush_frames_to_output (u8 thread_index);
return 0;
}
+u32 tcp_snd_space (tcp_connection_t * tc);
void tcp_retransmit_first_unacked (tcp_connection_t * tc);
void tcp_fast_retransmit_no_sack (tcp_connection_t * tc);
void tcp_fast_retransmit_sack (tcp_connection_t * tc);