tls: fix multi threaded medium scale test (VPP-1457)

- ensure session enqueue epoch does not wrap between two enqueues
- use 3 states for echo clients app, to distinguish between starting and
closing phases
- force tcp fin retransmit if out of buffers while sending a fin

Change-Id: I6f2cab46affd1148aba2a33fb6d58bcc54f32805
Signed-off-by: Florin Coras <fcoras@cisco.com>
diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h
index 1e08ccc..914e058 100644
--- a/src/vnet/session/session.h
+++ b/src/vnet/session/session.h
@@ -195,7 +195,7 @@
   clib_rwlock_t *peekers_rw_locks;
 
   /** Per-proto, per-worker enqueue epoch counters */
-  u32 *current_enqueue_epoch[TRANSPORT_N_PROTO];
+  u64 *current_enqueue_epoch[TRANSPORT_N_PROTO];
 
   /** Per-proto, per-worker thread vector of sessions to enqueue */
   u32 **session_to_enqueue[TRANSPORT_N_PROTO];
@@ -308,6 +308,7 @@
 stream_session_t *session_alloc (u32 thread_index);
 int session_alloc_fifos (segment_manager_t * sm, stream_session_t * s);
 void session_free (stream_session_t * s);
+void session_free_w_fifos (stream_session_t * s);
 
 always_inline stream_session_t *
 session_get (u32 si, u32 thread_index)