From 10e5b4a016061f2d9485ff309d1239abb012aae0 Mon Sep 17 00:00:00 2001 From: Steven Luong Date: Mon, 10 Oct 2022 11:37:57 -0700 Subject: session: make session code compile with SESSION_DEBUG enable Session debug code does not compile anymore due to vlib_mains global variable disappearing over time. Replace it with vlib_get_main_by_index call. Add a cmake variable and pass it from make command line to enable session debug. Notice transport debug is required for session debug. make rebuild VPP_EXTRA_CMAKE_ARGS=-DVPP_TCP_DEBUG_ALWAYS=ON VPP_EXTRA_CMAKE_ARGS+=-DVPP_SESSION_DEBUG=ON Type: fix Signed-off-by: Steven Luong Change-Id: Ic2e887c6b10b77cbabd56934f4931fcfa04a6751 --- src/vnet/session/session_debug.c | 11 +++++++++-- src/vnet/session/session_debug.h | 6 ++++++ 2 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src/vnet') diff --git a/src/vnet/session/session_debug.c b/src/vnet/session/session_debug.c index 8e4588ecd0b..e4efe1b244e 100644 --- a/src/vnet/session/session_debug.c +++ b/src/vnet/session/session_debug.c @@ -61,6 +61,13 @@ VLIB_CLI_COMMAND (show_session_dbg_clock_cycles_command, static) = }; /* *INDENT-ON* */ +static_always_inline f64 +session_dbg_time_now (u32 thread) +{ + vlib_main_t *vm = vlib_get_main_by_index (thread); + + return clib_time_now (&vm->clib_time) + vm->time_offset; +} static clib_error_t * clear_session_dbg_clock_cycles_fn (vlib_main_t * vm, unformat_input_t * input, @@ -77,7 +84,7 @@ clear_session_dbg_clock_cycles_fn (vlib_main_t * vm, unformat_input_t * input, { sde = &session_dbg_main.wrk[thread]; clib_memset (sde, 0, sizeof (session_dbg_evts_t)); - sde->last_time = vlib_time_now (vlib_mains[thread]); + sde->last_time = session_dbg_time_now (thread); sde->start_time = sde->last_time; } @@ -107,7 +114,7 @@ session_debug_init (void) for (thread = 0; thread < num_threads; thread++) { clib_memset (&sdm->wrk[thread], 0, sizeof (session_dbg_evts_t)); - sdm->wrk[thread].start_time = vlib_time_now (vlib_mains[thread]); + sdm->wrk[thread].start_time = session_dbg_time_now (thread); } } #else diff --git a/src/vnet/session/session_debug.h b/src/vnet/session/session_debug.h index 9e49a35dbe6..4f49ea1d2f2 100644 --- a/src/vnet/session/session_debug.h +++ b/src/vnet/session/session_debug.h @@ -17,6 +17,7 @@ #include #include +#include #define foreach_session_dbg_evt \ _(ENQ, "enqueue") \ @@ -94,7 +95,12 @@ typedef struct session_dbg_main_ extern session_dbg_main_t session_dbg_main; +#ifdef VPP_SESSION_DEBUG +#define SESSION_DEBUG 1 * (TRANSPORT_DEBUG > 0) +#else #define SESSION_DEBUG 0 * (TRANSPORT_DEBUG > 0) +#endif + #define SESSION_DEQ_EVTS (0) #define SESSION_DISPATCH_DBG (0) #define SESSION_EVT_POLL_DBG (0) -- cgit 1.2.3-korg