Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
session: send tx notification to app
[vpp.git]
/
src
/
vnet
/
session
/
session.h
diff --git
a/src/vnet/session/session.h
b/src/vnet/session/session.h
index
d6cc2cb
..
fe3477b
100644
(file)
--- a/
src/vnet/session/session.h
+++ b/
src/vnet/session/session.h
@@
-254,6
+254,10
@@
struct _session_manager_main
extern session_manager_main_t session_manager_main;
extern vlib_node_registration_t session_queue_node;
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
/*
* Session manager function
@@
-446,19
+450,26
@@
session_get_from_handle_safe (u64 handle)
}
always_inline u32
}
always_inline u32
-
stream_session
_max_rx_enqueue (transport_connection_t * tc)
+
transport
_max_rx_enqueue (transport_connection_t * tc)
{
stream_session_t *s = session_get (tc->s_index, tc->thread_index);
return svm_fifo_max_enqueue (s->server_rx_fifo);
}
always_inline u32
{
stream_session_t *s = session_get (tc->s_index, tc->thread_index);
return svm_fifo_max_enqueue (s->server_rx_fifo);
}
always_inline u32
-
stream_session
_rx_fifo_size (transport_connection_t * tc)
+
transport
_rx_fifo_size (transport_connection_t * tc)
{
stream_session_t *s = session_get (tc->s_index, tc->thread_index);
return s->server_rx_fifo->nitems;
}
{
stream_session_t *s = session_get (tc->s_index, tc->thread_index);
return s->server_rx_fifo->nitems;
}
+always_inline u32
+transport_tx_fifo_size (transport_connection_t * tc)
+{
+ stream_session_t *s = session_get (tc->s_index, tc->thread_index);
+ return s->server_tx_fifo->nitems;
+}
+
always_inline u32
session_get_index (stream_session_t * s)
{
always_inline u32
session_get_index (stream_session_t * s)
{
@@
-488,7
+499,7
@@
session_clone_safe (u32 session_index, u32 thread_index)
transport_connection_t *session_get_transport (stream_session_t * s);
transport_connection_t *session_get_transport (stream_session_t * s);
-u32 s
tream_s
ession_tx_fifo_max_dequeue (transport_connection_t * tc);
+u32 session_tx_fifo_max_dequeue (transport_connection_t * tc);
int
session_enqueue_stream_connection (transport_connection_t * tc,
int
session_enqueue_stream_connection (transport_connection_t * tc,
@@
-506,6
+517,7
@@
int session_stream_connect_notify (transport_connection_t * tc, u8 is_fail);
int session_dgram_connect_notify (transport_connection_t * tc,
u32 old_thread_index,
stream_session_t ** new_session);
int session_dgram_connect_notify (transport_connection_t * tc,
u32 old_thread_index,
stream_session_t ** new_session);
+int session_dequeue_notify (stream_session_t * s);
void stream_session_init_fifos_pointers (transport_connection_t * tc,
u32 rx_pointer, u32 tx_pointer);
void stream_session_init_fifos_pointers (transport_connection_t * tc,
u32 rx_pointer, u32 tx_pointer);
@@
-594,6
+606,8
@@
int
listen_session_get_local_session_endpoint (stream_session_t * listener,
session_endpoint_t * sep);
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 ()
{
always_inline u8
session_manager_is_enabled ()
{