diff options
Diffstat (limited to 'src/vnet/tcp/tcp_input.c')
-rw-r--r-- | src/vnet/tcp/tcp_input.c | 27 |
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)); |