diff options
Diffstat (limited to 'src/vnet/session')
-rw-r--r-- | src/vnet/session/session.c | 2 | ||||
-rw-r--r-- | src/vnet/session/session.h | 15 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index 6e129dde018..ed205d7627f 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -396,7 +396,7 @@ stream_session_create_i (segment_manager_t * sm, transport_connection_t * tc, return rv; /* Create the session */ - pool_get (smm->sessions[thread_index], s); + pool_get_aligned (smm->sessions[thread_index], s, CLIB_CACHE_LINE_BYTES); memset (s, 0, sizeof (*s)); /* Initialize backpointers */ diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h index f152a2be0e2..5c281df7854 100644 --- a/src/vnet/session/session.h +++ b/src/vnet/session/session.h @@ -109,9 +109,6 @@ typedef struct _stream_session_t svm_fifo_t *server_rx_fifo; svm_fifo_t *server_tx_fifo; - /** svm segment index where fifos were allocated */ - u32 svm_segment_index; - /** Type */ u8 session_type; @@ -126,6 +123,12 @@ typedef struct _stream_session_t /** To avoid n**2 "one event per frame" check */ u8 enqueue_epoch; + /** Pad to a multiple of 8 octets */ + u8 align_pad[2]; + + /** svm segment index where fifos were allocated */ + u32 svm_segment_index; + /** Session index in per_thread pool */ u32 session_index; @@ -140,6 +143,9 @@ typedef struct _stream_session_t /** Parent listener session if the result of an accept */ u32 listener_index; + + /** Opaque, pad to a 64-octet boundary */ + u64 opaque[2]; } stream_session_t; /* Forward definition */ @@ -418,7 +424,8 @@ always_inline stream_session_t * listen_session_new (session_type_t type) { stream_session_t *s; - pool_get (session_manager_main.listen_sessions[type], s); + pool_get_aligned (session_manager_main.listen_sessions[type], s, + CLIB_CACHE_LINE_BYTES); memset (s, 0, sizeof (*s)); s->session_type = type; |