session: basic fifo-tuning-logic
[vpp.git] / src / vnet / session / application_worker.c
index 0b67d29..1793998 100644 (file)
@@ -275,11 +275,16 @@ app_worker_init_accepted (session_t * s)
   app_worker_t *app_wrk;
   segment_manager_t *sm;
   session_t *listener;
+  application_t *app;
 
   listener = listen_session_get_from_handle (s->listener_handle);
   app_wrk = application_listener_select_worker (listener);
   s->app_wrk_index = app_wrk->wrk_index;
 
+  app = application_get (app_wrk->app_index);
+  if (app->cb_fns.fifo_tuning_callback)
+    s->flags |= SESSION_F_CUSTOM_FIFO_TUNING;
+
   sm = app_worker_get_listen_segment_manager (app_wrk, listener);
   if (app_worker_alloc_session_fifos (sm, s))
     return -1;
@@ -307,6 +312,10 @@ app_worker_init_connected (app_worker_t * app_wrk, session_t * s)
       if (app_worker_alloc_session_fifos (sm, s))
        return -1;
     }
+
+  if (app->cb_fns.fifo_tuning_callback)
+    s->flags |= SESSION_F_CUSTOM_FIFO_TUNING;
+
   return 0;
 }
 
@@ -432,6 +441,15 @@ app_worker_connect_session (app_worker_t * app, session_endpoint_t * sep,
   return 0;
 }
 
+int
+app_worker_session_fifo_tuning (app_worker_t * app_wrk, session_t * s,
+                               svm_fifo_t * f,
+                               session_ft_action_t act, u32 len)
+{
+  application_t *app = application_get (app_wrk->app_index);
+  return app->cb_fns.fifo_tuning_callback (s, f, act, len);
+}
+
 int
 app_worker_alloc_connects_segment_manager (app_worker_t * app_wrk)
 {