aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet')
-rw-r--r--src/vnet/session/application_interface.h8
-rw-r--r--src/vnet/session/application_local.c4
-rw-r--r--src/vnet/session/application_worker.c8
-rw-r--r--src/vnet/session/segment_manager.c8
-rw-r--r--src/vnet/session/session.c2
-rw-r--r--src/vnet/session/session_api.c9
-rw-r--r--src/vnet/session/session_debug.c2
-rw-r--r--src/vnet/session/session_node.c4
8 files changed, 26 insertions, 19 deletions
diff --git a/src/vnet/session/application_interface.h b/src/vnet/session/application_interface.h
index d5656ff8341..21ed97998f2 100644
--- a/src/vnet/session/application_interface.h
+++ b/src/vnet/session/application_interface.h
@@ -688,8 +688,8 @@ app_send_dgram_raw_gso (svm_fifo_t *f, app_session_transport_t *at,
if (do_evt)
{
if (svm_fifo_set_event (f))
- app_send_io_evt_to_vpp (vpp_evt_q, f->shr->master_session_index,
- evt_type, noblock);
+ app_send_io_evt_to_vpp (vpp_evt_q, f->vpp_session_index, evt_type,
+ noblock);
}
return len;
}
@@ -712,8 +712,8 @@ app_send_stream_raw (svm_fifo_t * f, svm_msg_q_t * vpp_evt_q, u8 * data,
if (do_evt)
{
if (rv > 0 && svm_fifo_set_event (f))
- app_send_io_evt_to_vpp (vpp_evt_q, f->shr->master_session_index,
- evt_type, noblock);
+ app_send_io_evt_to_vpp (vpp_evt_q, f->vpp_session_index, evt_type,
+ noblock);
}
return rv;
}
diff --git a/src/vnet/session/application_local.c b/src/vnet/session/application_local.c
index 0800ce2b041..18ea77dc8a8 100644
--- a/src/vnet/session/application_local.c
+++ b/src/vnet/session/application_local.c
@@ -647,8 +647,8 @@ ct_init_accepted_session (app_worker_t *server_wrk, ct_connection_t *ct,
ls->rx_fifo->shr->master_session_index = ls->session_index;
ls->tx_fifo->shr->master_session_index = ls->session_index;
- ls->rx_fifo->master_thread_index = ls->thread_index;
- ls->tx_fifo->master_thread_index = ls->thread_index;
+ ls->rx_fifo->vpp_sh = ls->handle;
+ ls->tx_fifo->vpp_sh = ls->handle;
seg_handle = segment_manager_segment_handle (sm, fs);
segment_manager_segment_reader_unlock (sm);
diff --git a/src/vnet/session/application_worker.c b/src/vnet/session/application_worker.c
index cae340cd64e..ad0b18e8d75 100644
--- a/src/vnet/session/application_worker.c
+++ b/src/vnet/session/application_worker.c
@@ -175,10 +175,10 @@ app_worker_alloc_session_fifos (segment_manager_t * sm, session_t * s)
return rv;
rx_fifo->shr->master_session_index = s->session_index;
- rx_fifo->master_thread_index = s->thread_index;
+ rx_fifo->vpp_sh = s->handle;
tx_fifo->shr->master_session_index = s->session_index;
- tx_fifo->master_thread_index = s->thread_index;
+ tx_fifo->vpp_sh = s->handle;
s->rx_fifo = rx_fifo;
s->tx_fifo = tx_fifo;
@@ -210,10 +210,10 @@ app_worker_alloc_wrk_cl_session (app_worker_t *app_wrk, session_t *ls)
&tx_fifo);
rx_fifo->shr->master_session_index = s->session_index;
- rx_fifo->master_thread_index = s->thread_index;
+ rx_fifo->vpp_sh = s->handle;
tx_fifo->shr->master_session_index = s->session_index;
- tx_fifo->master_thread_index = s->thread_index;
+ tx_fifo->vpp_sh = s->handle;
s->rx_fifo = rx_fifo;
s->tx_fifo = tx_fifo;
diff --git a/src/vnet/session/segment_manager.c b/src/vnet/session/segment_manager.c
index 2b44d92e0b5..8c8b904c33d 100644
--- a/src/vnet/session/segment_manager.c
+++ b/src/vnet/session/segment_manager.c
@@ -625,7 +625,7 @@ segment_manager_del_sessions (segment_manager_t * sm)
*/
while (f)
{
- session = session_get_if_valid (f->shr->master_session_index,
+ session = session_get_if_valid (f->vpp_session_index,
f->master_thread_index);
if (session)
vec_add1 (handles, session_handle (session));
@@ -672,7 +672,7 @@ segment_manager_del_sessions_filter (segment_manager_t *sm,
f = fifo_segment_get_slice_fifo_list (fs, slice_index);
while (f)
{
- session = session_get_if_valid (f->shr->master_session_index,
+ session = session_get_if_valid (f->vpp_session_index,
f->master_thread_index);
if (session)
{
@@ -920,7 +920,7 @@ segment_manager_attach_fifo (segment_manager_t *sm, svm_fifo_t **f,
segment_manager_segment_reader_unlock (sm);
(*f)->shr->master_session_index = s->session_index;
- (*f)->master_thread_index = s->thread_index;
+ (*f)->vpp_sh = s->handle;
}
u32
@@ -1195,7 +1195,7 @@ segment_manager_format_sessions (segment_manager_t * sm, int verbose)
u32 session_index, thread_index;
session_t *session;
- session_index = f->shr->master_session_index;
+ session_index = f->vpp_session_index;
thread_index = f->master_thread_index;
session = session_get (session_index, thread_index);
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c
index cc0e89fd1e2..1b6e8ce6c6e 100644
--- a/src/vnet/session/session.c
+++ b/src/vnet/session/session.c
@@ -86,7 +86,7 @@ session_send_evt_to_thread (void *data, void *args, u32 thread_index,
int
session_send_io_evt_to_thread (svm_fifo_t * f, session_evt_type_t evt_type)
{
- return session_send_evt_to_thread (&f->shr->master_session_index, 0,
+ return session_send_evt_to_thread (&f->vpp_session_index, 0,
f->master_thread_index, evt_type);
}
diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c
index c6df47b412b..5ac21c4eb85 100644
--- a/src/vnet/session/session_api.c
+++ b/src/vnet/session/session_api.c
@@ -426,9 +426,12 @@ mq_send_session_connected_cb (u32 app_wrk_index, u32 api_context,
}
/* Setup client session index in advance, in case data arrives
- * before the app processes message and updates it */
+ * before the app processes message and updates it
+ * Maybe this needs to be done via a reply message from app */
s->rx_fifo->shr->client_session_index = api_context;
s->tx_fifo->shr->client_session_index = api_context;
+ s->rx_fifo->app_session_index = api_context;
+ s->tx_fifo->app_session_index = api_context;
snd_msg:
@@ -637,7 +640,7 @@ mq_send_io_rx_event (session_t *s)
mq_evt = svm_msg_q_msg_data (mq, &mq_msg);
mq_evt->event_type = SESSION_IO_EVT_RX;
- mq_evt->session_index = s->rx_fifo->shr->client_session_index;
+ mq_evt->session_index = s->rx_fifo->app_session_index;
(void) svm_fifo_set_event (s->rx_fifo);
@@ -658,7 +661,7 @@ mq_send_io_tx_event (session_t *s)
mq_evt = svm_msg_q_msg_data (mq, &mq_msg);
mq_evt->event_type = SESSION_IO_EVT_TX;
- mq_evt->session_index = s->tx_fifo->shr->client_session_index;
+ mq_evt->session_index = s->tx_fifo->app_session_index;
svm_msg_q_add_raw (mq, &mq_msg);
diff --git a/src/vnet/session/session_debug.c b/src/vnet/session/session_debug.c
index 2a50adac5dd..158751c4eed 100644
--- a/src/vnet/session/session_debug.c
+++ b/src/vnet/session/session_debug.c
@@ -278,7 +278,7 @@ session_node_cmp_event (session_event_t * e, svm_fifo_t * f)
case SESSION_IO_EVT_BUILTIN_RX:
case SESSION_IO_EVT_TX_MAIN:
case SESSION_IO_EVT_TX_FLUSH:
- if (e->session_index == f->shr->master_session_index)
+ if (e->session_index == f->vpp_session_index)
return 1;
break;
case SESSION_CTRL_EVT_CLOSE:
diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c
index 4d86d409e98..1d4f45e073b 100644
--- a/src/vnet/session/session_node.c
+++ b/src/vnet/session/session_node.c
@@ -474,6 +474,10 @@ session_mq_accepted_reply_handler (session_worker_t *wrk,
return;
}
+ /* TODO(fcoras) This needs to be part of the reply message */
+ s->rx_fifo->app_session_index = s->rx_fifo->shr->client_session_index;
+ s->tx_fifo->app_session_index = s->tx_fifo->shr->client_session_index;
+
/* Special handling for cut-through sessions */
if (!session_has_transport (s))
{