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
diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c
index 403c28f..162d54e 100644
--- a/src/vnet/session/session_node.c
+++ b/src/vnet/session/session_node.c
@@ -1642,6 +1642,16 @@
 /* *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 @@
   /*
    *  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);