aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/session')
-rw-r--r--src/vnet/session/session.c2
-rw-r--r--src/vnet/session/session.h15
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;