tcp: mark lost first sack hole on timeout
[vpp.git] / src / vnet / tcp / tcp_timer.h
index 45cf382..5f14a71 100644 (file)
@@ -54,9 +54,9 @@ tcp_timer_update (tcp_timer_wheel_t * tw, tcp_connection_t * tc, u8 timer_id,
 always_inline void
 tcp_retransmit_timer_set (tcp_timer_wheel_t * tw, tcp_connection_t * tc)
 {
-  ASSERT (tc->snd_una != tc->snd_una_max);
+  ASSERT (tc->snd_una != tc->snd_nxt);
   tcp_timer_set (tw, tc, TCP_TIMER_RETRANSMIT,
-                clib_max (tc->rto * TCP_TO_TIMER_TICK, 1));
+                clib_max ((u32) tc->rto * TCP_TO_TIMER_TICK, 1));
 }
 
 always_inline void
@@ -70,7 +70,7 @@ tcp_persist_timer_set (tcp_timer_wheel_t * tw, tcp_connection_t * tc)
 {
   /* Reuse RTO. It's backed off in handler */
   tcp_timer_set (tw, tc, TCP_TIMER_PERSIST,
-                clib_max (tc->rto * TCP_TO_TIMER_TICK, 1));
+                clib_max ((u32) tc->rto * TCP_TO_TIMER_TICK, 1));
 }
 
 always_inline void
@@ -81,7 +81,7 @@ tcp_persist_timer_update (tcp_timer_wheel_t * tw, tcp_connection_t * tc)
   if (seq_leq (tc->snd_una, tc->snd_congestion + tc->burst_acked))
     interval = 1;
   else
-    interval = clib_max (tc->rto * TCP_TO_TIMER_TICK, 1);
+    interval = clib_max ((u32) tc->rto * TCP_TO_TIMER_TICK, 1);
 
   tcp_timer_update (tw, tc, TCP_TIMER_PERSIST, interval);
 }
@@ -103,7 +103,7 @@ tcp_retransmit_timer_update (tcp_timer_wheel_t * tw, tcp_connection_t * tc)
     }
   else
     tcp_timer_update (tw, tc, TCP_TIMER_RETRANSMIT,
-                     clib_max (tc->rto * TCP_TO_TIMER_TICK, 1));
+                     clib_max ((u32) tc->rto * TCP_TO_TIMER_TICK, 1));
 }
 
 always_inline u8