tcp: fix severity info
[vpp.git] / src / vnet / tcp / tcp.h
index 91783a6..3ddd324 100644 (file)
@@ -34,7 +34,7 @@ extern timer_expiration_handler tcp_timer_retransmit_syn_handler;
 
 typedef enum _tcp_error
 {
-#define tcp_error(n,s) TCP_ERROR_##n,
+#define tcp_error(f, n, s, d) TCP_ERROR_##f,
 #include <vnet/tcp/tcp_error.def>
 #undef tcp_error
   TCP_N_ERROR,
@@ -91,15 +91,15 @@ typedef struct tcp_worker_ctx_
   /** convenience pointer to this thread's vlib main */
   vlib_main_t *vm;
 
-  /** worker time */
-  u32 time_now;
+  /** Time used for high precision (us) measurements in seconds */
+  f64 time_us;
+
+  /** Time measured in @ref TCP_TSTAMP_TICK used for time stamps */
+  u32 time_tstamp;
 
   /* Max timers to be handled per dispatch loop */
   u32 max_timers_per_loop;
 
-  /** Session layer edge indices to tcp output */
-  u32 tco_next_node[2];
-
   /* Fifo of pending timer expirations */
   u32 *pending_timers;
 
@@ -114,6 +114,9 @@ typedef struct tcp_worker_ctx_
   /* fifo of pending free requests */
   tcp_cleanup_req_t *pending_cleanups;
 
+  /** Session layer edge indices to tcp output */
+  u32 tco_next_node[2];
+
   /** worker timer wheel */
   tcp_timer_wheel_t timer_wheel;
 
@@ -163,26 +166,26 @@ typedef struct tcp_configuration_
    * a zero rwnd advertisement */
   u32 rwnd_min_update_ack;
 
-  /** Delayed ack time (disabled) */
-  u16 delack_time;
-
   /** Timer ticks to wait for close from app */
-  u16 closewait_time;
+  u32 closewait_time;
 
   /** Timer ticks to wait in time-wait. Also known as 2MSL */
-  u16 timewait_time;
+  u32 timewait_time;
 
   /** Timer ticks to wait in fin-wait1 to send fin and rcv fin-ack */
-  u16 finwait1_time;
+  u32 finwait1_time;
 
   /** Timer ticks to wait in last ack for ack */
-  u16 lastack_time;
+  u32 lastack_time;
 
   /** Timer ticks to wait in fin-wait2 for fin */
-  u16 finwait2_time;
+  u32 finwait2_time;
 
   /** Timer ticks to wait in closing for fin ack */
-  u16 closing_time;
+  u32 closing_time;
+
+  /** Timer ticks to wait for free buffer */
+  u32 alloc_err_timeout;
 
   /** Time to wait (sec) before cleaning up the connection */
   f32 cleanup_time;
@@ -190,8 +193,8 @@ typedef struct tcp_configuration_
   /** Number of preallocated connections */
   u32 preallocated_connections;
 
-  /** Number of preallocated half-open connections */
-  u32 preallocated_half_open_connections;
+  /** Maxium allowed GSO packet size */
+  u32 max_gso_size;
 
   /** Vectors of src addresses. Optional unless one needs > 63K active-opens */
   ip4_address_t *ip4_src_addrs;
@@ -209,8 +212,6 @@ typedef struct _tcp_main
   /* Pool of listeners. */
   tcp_connection_t *listener_pool;
 
-  f64 tstamp_ticks_per_clock;
-
   /** vlib buffer size */
   u32 bytes_per_buffer;
 
@@ -220,11 +221,6 @@ typedef struct _tcp_main
   /** Dispatch table by state and flags */
   tcp_lookup_dispatch_t dispatch_table[TCP_N_STATES][64];
 
-  clib_spinlock_t half_open_lock;
-
-  /** Pool of half-open connections on which we've sent a SYN */
-  tcp_connection_t *half_open_connections;
-
   /** Seed used to generate random iss */
   tcp_iss_seed_t iss_seed;
 
@@ -254,6 +250,9 @@ typedef struct _tcp_main
 
   /** Protocol configuration */
   tcp_configuration_t cfg;
+
+  /** message ID base for API */
+  u16 msg_id_base;
 } tcp_main_t;
 
 extern tcp_main_t tcp_main;
@@ -287,18 +286,9 @@ tcp_get_worker (u32 thread_index)
   return &tcp_main.wrk_ctx[thread_index];
 }
 
-#if (VLIB_BUFFER_TRACE_TRAJECTORY)
-#define tcp_trajectory_add_start(b, start)                     \
-{                                                              \
-    (*vlib_buffer_trace_trajectory_cb) (b, start);             \
-}
-#else
-#define tcp_trajectory_add_start(b, start)
-#endif
-
 tcp_connection_t *tcp_connection_alloc (u8 thread_index);
 tcp_connection_t *tcp_connection_alloc_w_base (u8 thread_index,
-                                              tcp_connection_t * base);
+                                              tcp_connection_t **base);
 void tcp_connection_free (tcp_connection_t * tc);
 void tcp_connection_close (tcp_connection_t * tc);
 void tcp_connection_cleanup (tcp_connection_t * tc);
@@ -335,6 +325,7 @@ void tcp_connection_tx_pacer_update (tcp_connection_t * tc);
 void tcp_connection_tx_pacer_reset (tcp_connection_t * tc, u32 window,
                                    u32 start_bucket);
 void tcp_program_cleanup (tcp_worker_ctx_t * wrk, tcp_connection_t * tc);
+void tcp_check_gso (tcp_connection_t *tc);
 
 void tcp_punt_unknown (vlib_main_t * vm, u8 is_ip4, u8 is_add);
 int tcp_configure_v4_source_address_range (vlib_main_t * vm,