session: add session process node
[vpp.git] / src / vnet / session / session.h
index c5779b4..b24e229 100644 (file)
@@ -143,6 +143,7 @@ typedef struct session_tx_context_
   u16 deq_per_first_buf;
   u16 deq_per_buf;
   u16 snd_mss;
+  u16 n_segs_per_evt;
   u8 n_bufs_per_seg;
     CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
   session_dgram_hdr_t hdr;
@@ -253,6 +254,10 @@ struct _session_manager_main
 
 extern session_manager_main_t session_manager_main;
 extern vlib_node_registration_t session_queue_node;
+extern vlib_node_registration_t session_queue_process_node;
+
+#define SESSION_Q_PROCESS_FLUSH_FRAMES 1
+#define SESSION_Q_PROCESS_STOP         2
 
 /*
  * Session manager function
@@ -389,13 +394,9 @@ session_has_transport (stream_session_t * s)
   return (session_get_transport_proto (s) != TRANSPORT_PROTO_NONE);
 }
 
-always_inline transport_service_type_t
-session_transport_service_type (stream_session_t * s)
-{
-  transport_proto_t tp;
-  tp = session_get_transport_proto (s);
-  return transport_protocol_service_type (tp);
-}
+transport_service_type_t session_transport_service_type (stream_session_t *);
+transport_tx_fn_type_t session_transport_tx_fn_type (stream_session_t *);
+u8 session_tx_is_dgram (stream_session_t * s);
 
 /**
  * Acquires a lock that blocks a session pool from expanding.
@@ -597,6 +598,8 @@ int
 listen_session_get_local_session_endpoint (stream_session_t * listener,
                                           session_endpoint_t * sep);
 
+void session_flush_frames_main_thread (vlib_main_t * vm);
+
 always_inline u8
 session_manager_is_enabled ()
 {