diff options
Diffstat (limited to 'src/vnet')
-rw-r--r-- | src/vnet/session/application_interface.h | 8 | ||||
-rw-r--r-- | src/vnet/session/application_local.c | 4 | ||||
-rw-r--r-- | src/vnet/session/application_worker.c | 8 | ||||
-rw-r--r-- | src/vnet/session/segment_manager.c | 8 | ||||
-rw-r--r-- | src/vnet/session/session.c | 2 | ||||
-rw-r--r-- | src/vnet/session/session_api.c | 9 | ||||
-rw-r--r-- | src/vnet/session/session_debug.c | 2 | ||||
-rw-r--r-- | src/vnet/session/session_node.c | 4 |
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)) { |