summaryrefslogtreecommitdiffstats
path: root/src/vnet/session/session_node.c
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2022-01-20 18:10:26 -0800
committerDave Barach <openvpp@barachs.net>2022-01-22 00:29:30 +0000
commit5384cca85573f553452254abc888f0153a26c15e (patch)
treecec0101efd61ec4d0240ca11165772b8d6268de9 /src/vnet/session/session_node.c
parent77e69ae2d172dce74f4da4cae52bb63e28daa3ae (diff)
session: update time for list of subscribers
Instead of constantly scanning all transport vfts for update time functions, build list at transport enable time. Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Id5c07cc03ee1fdd072ebbbd40119d1a440a5e3b1
Diffstat (limited to 'src/vnet/session/session_node.c')
-rw-r--r--src/vnet/session/session_node.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c
index 403c28f28ce..162d54e7697 100644
--- a/src/vnet/session/session_node.c
+++ b/src/vnet/session/session_node.c
@@ -1642,6 +1642,16 @@ static const u32 session_evt_msg_sizes[] = {
/* *INDENT-ON* */
always_inline void
+session_update_time_subscribers (session_main_t *smm, clib_time_type_t now,
+ u32 thread_index)
+{
+ session_update_time_fn *fn;
+
+ vec_foreach (fn, smm->update_time_fns)
+ (*fn) (now, thread_index);
+}
+
+always_inline void
session_evt_add_to_list (session_worker_t * wrk, session_event_t * evt)
{
session_evt_elt_t *elt;
@@ -1755,7 +1765,7 @@ session_queue_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
/*
* Update transport time
*/
- transport_update_time (wrk->last_vlib_time, thread_index);
+ session_update_time_subscribers (smm, wrk->last_vlib_time, thread_index);
n_tx_packets = vec_len (wrk->pending_tx_buffers);
SESSION_EVT (SESSION_EVT_DSP_CNTRS, UPDATE_TIME, wrk);