diff options
author | Florin Coras <fcoras@cisco.com> | 2019-07-23 23:54:47 -0700 |
---|---|---|
committer | Dave Wallace <dwallacelf@gmail.com> | 2019-07-26 14:39:30 +0000 |
commit | 26dd6de91b4d36ac04154c7eb6339684db6684a0 (patch) | |
tree | 202ff4daf1747dcf97de0efcae7af74be6f6bc64 /src/vnet/session/session.c | |
parent | 038e1dfbdfd0bd785852c364011da0a1d828093e (diff) |
session tcp: handle rxt and acks as custom events
Type: feature
Control ack generation and retransmissions with session layer scheduler.
Change-Id: Iacdf9f84ab81f44851980aa45a83e75f29be2b7b
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/session/session.c')
-rw-r--r-- | src/vnet/session/session.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index 477215e3d34..1c8b7fb4be4 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -118,6 +118,31 @@ session_send_rpc_evt_to_thread (u32 thread_index, void *fp, void *rpc_args) } } +void +session_add_self_custom_tx_evt (transport_connection_t * tc, u8 has_prio) +{ + session_t *s; + + s = session_get (tc->s_index, tc->thread_index); + ASSERT (s->thread_index == vlib_get_thread_index ()); + if (!(s->flags & SESSION_F_CUSTOM_TX)) + { + s->flags |= SESSION_F_CUSTOM_TX; + if (svm_fifo_set_event (s->tx_fifo)) + { + session_worker_t *wrk; + session_evt_elt_t *elt; + wrk = session_main_get_worker (tc->thread_index); + if (has_prio) + elt = session_evt_alloc_new (wrk); + else + elt = session_evt_alloc_old (wrk); + elt->evt.session_index = tc->s_index; + elt->evt.event_type = SESSION_IO_EVT_TX; + } + } +} + static void session_program_transport_close (session_t * s) { |