tcp/session: debug improvements/fixes

Change-Id: I906e58b4f9827a79a6ab673f8fa2e03036c69820
Signed-off-by: Florin Coras <fcoras@cisco.com>
diff --git a/src/vnet/session-apps/echo_server.c b/src/vnet/session-apps/echo_server.c
index 85e6c29..f34a490 100644
--- a/src/vnet/session-apps/echo_server.c
+++ b/src/vnet/session-apps/echo_server.c
@@ -63,7 +63,6 @@
     session_manager_get_vpp_event_queue (s->thread_index);
   s->session_state = SESSION_STATE_READY;
   esm->byte_index = 0;
-  vec_validate (esm->rx_retries[s->thread_index], s->session_index);
   esm->rx_retries[s->thread_index][s->session_index] = 0;
   return 0;
 }
@@ -391,7 +390,9 @@
   vec_validate (echo_server_main.vpp_queue, num_threads - 1);
   vec_validate (esm->rx_buf, num_threads - 1);
   vec_validate (esm->rx_retries, num_threads - 1);
-
+  for (i = 0; i < vec_len (esm->rx_retries); i++)
+    vec_validate (esm->rx_retries[i],
+		  pool_elts (session_manager_main.sessions[i]));
   esm->rcv_buffer_size = clib_max (esm->rcv_buffer_size, esm->fifo_size);
   for (i = 0; i < num_threads; i++)
     vec_validate (esm->rx_buf[i], esm->rcv_buffer_size);
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c
index dfc967b..568065e 100644
--- a/src/vnet/session/session.c
+++ b/src/vnet/session/session.c
@@ -1293,7 +1293,7 @@
 	clib_rwlock_init (&smm->peekers_rw_locks[i]);
     }
 
-#if SESSION_DBG
+#if SESSION_DEBUG
   vec_validate (smm->last_event_poll_by_thread, num_threads - 1);
 #endif
 
diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h
index 9d534ae..b54f461 100644
--- a/src/vnet/session/session.h
+++ b/src/vnet/session/session.h
@@ -194,7 +194,7 @@
   /** Preallocate session config parameter */
   u32 preallocated_sessions;
 
-#if SESSION_DBG
+#if SESSION_DEBUG
   /**
    * last event poll time by thread
    * Debug only. Will cause false cache-line sharing as-is
diff --git a/src/vnet/session/session_debug.h b/src/vnet/session/session_debug.h
index 12c667c..f63509d 100644
--- a/src/vnet/session/session_debug.h
+++ b/src/vnet/session/session_debug.h
@@ -44,10 +44,7 @@
   {									\
     u32 data[_size];							\
   } * ed;								\
-  transport_proto_vft_t *vft = 						\
-      transport_protocol_get_vft (_s->session_type);			\
-  transport_connection_t *_tc = 					\
-      vft->get_connection (_s->connection_index, _s->thread_index);	\
+  transport_connection_t *_tc = session_get_transport (_s);		\
   ed = ELOG_TRACK_DATA (&vlib_global_main.elog_main,			\
 			_e, _tc->elog_track)
 
@@ -101,24 +98,23 @@
 #endif /* SESSION_DEQ_NODE_EVTS */
 
 #if SESSION_EVT_POLL_DBG && SESSION_DEBUG > 1
-#define SESSION_EVT_POLL_GAP(_smm, _my_thread_index)			\
+#define SESSION_EVT_POLL_GAP(_smm, _ti)					\
 {									\
   ELOG_TYPE_DECLARE (_e) =						\
   {									\
-    .format = "nixon-gap: %d MS",					\
+    .format = "nixon-gap: %d us",					\
     .format_args = "i4",						\
   };									\
   DEC_SESSION_ED(_e, 1);						\
   ed->data[0] =	(u32) ((now -						\
-    _smm->last_event_poll_by_thread[my_thread_index])*1000.0);		\
+      _smm->last_event_poll_by_thread[_ti])*1000000.0);			\
 }
-#define SESSION_EVT_POLL_GAP_TRACK_HANDLER(_smm, _my_thread_index)	\
+#define SESSION_EVT_POLL_GAP_TRACK_HANDLER(_smm, _ti)			\
 {									\
-  if (PREDICT_TRUE(							\
-	      smm->last_event_poll_by_thread[my_thread_index] != 0.0))	\
-    if (now > smm->last_event_poll_by_thread[_my_thread_index] + 500e-6)\
-	SESSION_EVT_POLL_GAP(smm, my_thread_index);			\
-  _smm->last_event_poll_by_thread[my_thread_index] = now;		\
+  if (PREDICT_TRUE (smm->last_event_poll_by_thread[_ti] != 0.0))	\
+    if (now > smm->last_event_poll_by_thread[_ti] + 500e-6)		\
+      SESSION_EVT_POLL_GAP(smm, _ti);					\
+  _smm->last_event_poll_by_thread[_ti] = now;				\
 }
 
 #else
diff --git a/src/vnet/tcp/tcp_debug.h b/src/vnet/tcp/tcp_debug.h
index d356911..2e67c84 100755
--- a/src/vnet/tcp/tcp_debug.h
+++ b/src/vnet/tcp/tcp_debug.h
@@ -21,7 +21,7 @@
 #define TCP_DEBUG (1)
 #define TCP_DEBUG_SM (0)
 #define TCP_DEBUG_CC (0)
-#define TCP_DEBUG_CC_STAT (1)
+#define TCP_DEBUG_CC_STAT (0)
 #define TCP_DEBUG_BUFFER_ALLOCATION (0)
 
 #define foreach_tcp_dbg_evt		\
@@ -767,6 +767,9 @@
   _tc->c_cc_stat_tstamp = tcp_time_now();				\
 }									\
 }
+#else
+#define TCP_EVT_CC_STAT_HANDLER(_tc, ...)
+#endif
 
 /*
  * Buffer allocation
@@ -776,22 +779,22 @@
 #define TCP_DBG_BUFFER_ALLOC_MAYBE_FAIL(thread_index)			\
 {									\
   static u32 *buffer_fail_counters;					\
-  if (PREDICT_FALSE (buffer_fail_counters == 0))				\
+  if (PREDICT_FALSE (buffer_fail_counters == 0))			\
     {									\
       u32 num_threads;							\
-      vlib_thread_main_t *vtm = vlib_get_thread_main ();			\
+      vlib_thread_main_t *vtm = vlib_get_thread_main ();		\
       num_threads = 1 /* main thread */  + vtm->n_threads;		\
       vec_validate (buffer_fail_counters, num_threads - 1);		\
     }									\
   if (PREDICT_FALSE (tcp_main.buffer_fail_fraction != 0.0))		\
     {									\
-      if (PREDICT_TRUE (buffer_fail_counters[thread_index] > 0))		\
+      if (PREDICT_TRUE (buffer_fail_counters[thread_index] > 0))	\
         {								\
-          if ((1.0 / (f32) (buffer_fail_counters[thread_index]))		\
+          if ((1.0 / (f32) (buffer_fail_counters[thread_index]))	\
               < tcp_main.buffer_fail_fraction)				\
             {								\
               buffer_fail_counters[thread_index] = 0.0000001;		\
-              return -1;							\
+              return -1;						\
             }								\
         }								\
       buffer_fail_counters[thread_index] ++;				\
@@ -801,10 +804,6 @@
 #define TCP_DBG_BUFFER_ALLOC_MAYBE_FAIL(thread_index)
 #endif
 
-#else
-#define TCP_EVT_CC_STAT_HANDLER(_tc, ...)
-#endif
-
 #endif /* SRC_VNET_TCP_TCP_DEBUG_H_ */
 /*
  * fd.io coding-style-patch-verification: ON
diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c
index a1cdc76..497b709 100644
--- a/src/vnet/tcp/tcp_input.c
+++ b/src/vnet/tcp/tcp_input.c
@@ -2780,9 +2780,8 @@
 	  /* 3. check for a SYN (did that already) */
 
 	  /* Make sure connection wasn't just created */
-	  child0 =
-	    tcp_lookup_connection (lc0->c_fib_index, b0, my_thread_index,
-				   is_ip4);
+	  child0 = tcp_lookup_connection (lc0->c_fib_index, b0,
+					  my_thread_index, is_ip4);
 	  if (PREDICT_FALSE (child0->state != TCP_STATE_LISTEN))
 	    {
 	      error0 = TCP_ERROR_CREATE_EXISTS;