diff options
Diffstat (limited to 'src/vnet/session')
-rw-r--r-- | src/vnet/session/session.h | 9 | ||||
-rw-r--r-- | src/vnet/session/transport.c | 6 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h index f874ac2a263..b583c3ef0dd 100644 --- a/src/vnet/session/session.h +++ b/src/vnet/session/session.h @@ -189,6 +189,9 @@ typedef struct session_main_ * Trade memory for speed, for now */ u32 *session_type_to_next; + /** Thread for cl and ho that rely on cl allocs */ + u32 transport_cl_thread; + transport_proto_t last_transport_proto_type; /* @@ -619,6 +622,12 @@ transport_add_tx_event (transport_connection_t * tc) session_send_io_evt_to_thread (s->tx_fifo, SESSION_IO_EVT_TX); } +always_inline u32 +transport_cl_thread (void) +{ + return session_main.transport_cl_thread; +} + /* * Listen sessions */ diff --git a/src/vnet/session/transport.c b/src/vnet/session/transport.c index 2c88a4c4931..5975197609d 100644 --- a/src/vnet/session/transport.c +++ b/src/vnet/session/transport.c @@ -853,7 +853,11 @@ transport_init (void) smm->local_endpoints_table_memory); num_threads = 1 /* main thread */ + vtm->n_threads; if (num_threads > 1) - clib_spinlock_init (&local_endpoints_lock); + { + clib_spinlock_init (&local_endpoints_lock); + /* Main not polled if there are workers */ + smm->transport_cl_thread = 1; + } } /* |