tcp: add establish timer pops to stats

Type: improvement

Change-Id: Ibc1e391356cef415b992b65c00f3d365fc97386d
Signed-off-by: Aritra Basu <aritrbas@cisco.com>
diff --git a/src/vnet/tcp/tcp.h b/src/vnet/tcp/tcp.h
index d032a3d..8676db4 100644
--- a/src/vnet/tcp/tcp.h
+++ b/src/vnet/tcp/tcp.h
@@ -45,19 +45,21 @@
   u8 next, error;
 } tcp_lookup_dispatch_t;
 
-#define foreach_tcp_wrk_stat					\
-  _(timer_expirations, u64, "timer expirations")		\
-  _(rxt_segs, u64, "segments retransmitted")			\
-  _(tr_events, u32, "timer retransmit events")			\
-  _(to_closewait, u32, "timeout close-wait")			\
-  _(to_closewait2, u32, "timeout close-wait w/data")		\
-  _(to_finwait1, u32, "timeout fin-wait-1")			\
-  _(to_finwait2, u32, "timeout fin-wait-2")			\
-  _(to_lastack, u32, "timeout last-ack")			\
-  _(to_closing, u32, "timeout closing")				\
-  _(tr_abort, u32, "timer retransmit abort")			\
-  _(rst_unread, u32, "reset on close due to unread data")	\
-  _(no_buffer, u32, "out of buffers")				\
+#define foreach_tcp_wrk_stat                                                  \
+  _ (timer_expirations, u64, "timer expirations")                             \
+  _ (rxt_segs, u64, "segments retransmitted")                                 \
+  _ (tr_events, u32, "timer retransmit events")                               \
+  _ (to_establish, u32, "timeout establish")                                  \
+  _ (to_persist, u32, "timeout persist")                                      \
+  _ (to_closewait, u32, "timeout close-wait")                                 \
+  _ (to_closewait2, u32, "timeout close-wait w/data")                         \
+  _ (to_finwait1, u32, "timeout fin-wait-1")                                  \
+  _ (to_finwait2, u32, "timeout fin-wait-2")                                  \
+  _ (to_lastack, u32, "timeout last-ack")                                     \
+  _ (to_closing, u32, "timeout closing")                                      \
+  _ (tr_abort, u32, "timer retransmit abort")                                 \
+  _ (rst_unread, u32, "reset on close due to unread data")                    \
+  _ (no_buffer, u32, "out of buffers")
 
 typedef struct tcp_wrk_stats_
 {
diff --git a/src/vnet/tcp/tcp_output.c b/src/vnet/tcp/tcp_output.c
index 373bb2a..dd1ec55 100644
--- a/src/vnet/tcp/tcp_output.c
+++ b/src/vnet/tcp/tcp_output.c
@@ -1458,6 +1458,8 @@
   TCP_EVT (TCP_EVT_CC_EVT, tc, 2);
   tc->rtt_ts = 0;
 
+  tcp_worker_stats_inc (wrk, to_establish, 1);
+
   /* Active open establish timeout */
   if (tc->rto >= TCP_ESTABLISH_TIME >> 1)
     {
@@ -1507,6 +1509,8 @@
   int n_bytes = 0;
   u8 *data;
 
+  tcp_worker_stats_inc (wrk, to_persist, 1);
+
   /* Problem already solved or worse */
   if (tc->state == TCP_STATE_CLOSED || tc->snd_wnd > tc->snd_mss
       || (tc->flags & TCP_CONN_FINSNT))