summaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp/tcp_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/tcp/tcp_input.c')
-rw-r--r--src/vnet/tcp/tcp_input.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c
index 5a7ae5eb2ab..50860ab1c8d 100644
--- a/src/vnet/tcp/tcp_input.c
+++ b/src/vnet/tcp/tcp_input.c
@@ -1183,8 +1183,9 @@ tcp_cc_recovery_exit (tcp_connection_t * tc)
TCP_EVT_DBG (TCP_EVT_CC_EVT, tc, 3);
}
-static inline void
-tcp_cc_fastrecovery_clear_inline (tcp_connection_t * tc)
+#ifndef CLIB_MARCH_VARIANT
+void
+tcp_cc_fastrecovery_clear (tcp_connection_t * tc)
{
tc->snd_rxt_bytes = 0;
tc->rcv_dupacks = 0;
@@ -1195,20 +1196,6 @@ tcp_cc_fastrecovery_clear_inline (tcp_connection_t * tc)
TCP_EVT_DBG (TCP_EVT_CC_EVT, tc, 3);
}
-
-static void
-tcp_cc_fastrecovery_exit (tcp_connection_t * tc)
-{
- tc->cc_algo->recovered (tc);
- tcp_cc_fastrecovery_clear_inline (tc);
-}
-
-#ifndef CLIB_MARCH_VARIANT
-void
-tcp_cc_fastrecovery_clear (tcp_connection_t * tc)
-{
- tcp_cc_fastrecovery_clear_inline (tc);
-}
#endif /* CLIB_MARCH_VARIANT */
static void
@@ -1224,8 +1211,9 @@ tcp_cc_congestion_undo (tcp_connection_t * tc)
}
else if (tcp_in_fastrecovery (tc))
{
- tcp_cc_fastrecovery_exit (tc);
+ tcp_cc_fastrecovery_clear (tc);
}
+ tcp_cc_undo_recovery (tc);
ASSERT (tc->rto_boff == 0);
TCP_EVT_DBG (TCP_EVT_CC_EVT, tc, 5);
}
@@ -1266,7 +1254,10 @@ tcp_cc_recover (tcp_connection_t * tc)
if (tcp_in_recovery (tc))
tcp_cc_recovery_exit (tc);
else if (tcp_in_fastrecovery (tc))
- tcp_cc_fastrecovery_exit (tc);
+ {
+ tcp_cc_recovered (tc);
+ tcp_cc_fastrecovery_clear (tc);
+ }
ASSERT (tc->rto_boff == 0);
ASSERT (!tcp_in_cong_recovery (tc));