tcp: treat pending timers as active

Type: fix

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Ic63af51fab8dbefe79439554ea563f20e3788afa
diff --git a/src/vnet/tcp/tcp.c b/src/vnet/tcp/tcp.c
index 5ebb638..d4da601 100644
--- a/src/vnet/tcp/tcp.c
+++ b/src/vnet/tcp/tcp.c
@@ -1101,7 +1101,7 @@
 	continue;
 
       /* Skip if the timer is not pending. Probably it was reset while
-       * wating for dispatch */
+       * waiting for dispatch */
       if (PREDICT_FALSE (!(tc->pending_timers & (1 << timer_id))))
 	continue;
 
diff --git a/src/vnet/tcp/tcp_timer.h b/src/vnet/tcp/tcp_timer.h
index f604152..06322a2 100644
--- a/src/vnet/tcp/tcp_timer.h
+++ b/src/vnet/tcp/tcp_timer.h
@@ -117,7 +117,8 @@
 always_inline u8
 tcp_timer_is_active (tcp_connection_t * tc, tcp_timers_e timer)
 {
-  return tc->timers[timer] != TCP_TIMER_HANDLE_INVALID;
+  return tc->timers[timer] != TCP_TIMER_HANDLE_INVALID
+    || (tc->pending_timers & (1 << timer));
 }
 
 always_inline void
diff --git a/src/vnet/tcp/tcp_types.h b/src/vnet/tcp/tcp_types.h
index 95d5b73..0ffc036 100644
--- a/src/vnet/tcp/tcp_types.h
+++ b/src/vnet/tcp/tcp_types.h
@@ -75,7 +75,7 @@
   foreach_tcp_timer
 #undef _
   TCP_N_TIMERS
-} tcp_timers_e;
+} __clib_packed tcp_timers_e;
 
 #define TCP_TIMER_HANDLE_INVALID ((u32) ~0)