diff options
Diffstat (limited to 'src/vcl')
-rw-r--r-- | src/vcl/vcl_private.c | 7 | ||||
-rw-r--r-- | src/vcl/vcl_private.h | 4 | ||||
-rw-r--r-- | src/vcl/vppcom.c | 20 |
3 files changed, 16 insertions, 15 deletions
diff --git a/src/vcl/vcl_private.c b/src/vcl/vcl_private.c index 6d1145bfb9e..8f8ebf9d2e8 100644 --- a/src/vcl/vcl_private.c +++ b/src/vcl/vcl_private.c @@ -409,8 +409,8 @@ vcl_segment_detach (u64 segment_handle) int vcl_segment_attach_session (uword segment_handle, uword rxf_offset, - uword txf_offset, uword mq_offset, u8 is_ct, - vcl_session_t *s) + uword txf_offset, uword mq_offset, u32 mq_index, + u8 is_ct, vcl_session_t *s) { u32 fs_index, eqs_index; svm_fifo_t *rxf, *txf; @@ -443,8 +443,7 @@ vcl_segment_attach_session (uword segment_handle, uword rxf_offset, if (!is_ct && mq_offset != (uword) ~0) { fs = fifo_segment_get_segment (&vcm->segment_main, eqs_index); - s->vpp_evt_q = - fifo_segment_msg_q_attach (fs, mq_offset, rxf->shr->slice_index); + s->vpp_evt_q = fifo_segment_msg_q_attach (fs, mq_offset, mq_index); } clib_rwlock_reader_unlock (&vcm->segment_table_lock); diff --git a/src/vcl/vcl_private.h b/src/vcl/vcl_private.h index fdc4ff8cdbd..3233aeca4b2 100644 --- a/src/vcl/vcl_private.h +++ b/src/vcl/vcl_private.h @@ -721,8 +721,8 @@ void vcl_segment_detach (u64 segment_handle); void vcl_send_session_unlisten (vcl_worker_t * wrk, vcl_session_t * s); int vcl_segment_attach_session (uword segment_handle, uword rxf_offset, - uword txf_offset, uword mq_offset, u8 is_ct, - vcl_session_t *s); + uword txf_offset, uword mq_offset, + u32 mq_index, u8 is_ct, vcl_session_t *s); int vcl_segment_attach_mq (uword segment_handle, uword mq_offset, u32 mq_index, svm_msg_q_t **mq); int vcl_segment_discover_mqs (uword segment_handle, int *fds, u32 n_fds); diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c index 3847bf224a7..940a8b92dc1 100644 --- a/src/vcl/vppcom.c +++ b/src/vcl/vppcom.c @@ -455,9 +455,9 @@ vcl_session_accepted_handler (vcl_worker_t * wrk, session_accepted_msg_t * mp, goto error; } - if (vcl_segment_attach_session (mp->segment_handle, mp->server_rx_fifo, - mp->server_tx_fifo, - mp->vpp_event_queue_address, 0, session)) + if (vcl_segment_attach_session ( + mp->segment_handle, mp->server_rx_fifo, mp->server_tx_fifo, + mp->vpp_event_queue_address, mp->mq_index, 0, session)) { VDBG (0, "failed to attach fifos for %u", session->session_index); goto error; @@ -525,9 +525,9 @@ vcl_session_connected_handler (vcl_worker_t * wrk, session->vpp_handle = mp->handle; - if (vcl_segment_attach_session (mp->segment_handle, mp->server_rx_fifo, - mp->server_tx_fifo, - mp->vpp_event_queue_address, 0, session)) + if (vcl_segment_attach_session ( + mp->segment_handle, mp->server_rx_fifo, mp->server_tx_fifo, + mp->vpp_event_queue_address, mp->mq_index, 0, session)) { VDBG (0, "failed to attach fifos for %u", session->session_index); session->session_state = VCL_STATE_DETACHED; @@ -538,7 +538,8 @@ vcl_session_connected_handler (vcl_worker_t * wrk, if (mp->ct_rx_fifo) { if (vcl_segment_attach_session (mp->ct_segment_handle, mp->ct_rx_fifo, - mp->ct_tx_fifo, (uword) ~0, 1, session)) + mp->ct_tx_fifo, (uword) ~0, ~0, 1, + session)) { VDBG (0, "failed to attach ct fifos for %u", session->session_index); session->session_state = VCL_STATE_DETACHED; @@ -654,7 +655,8 @@ vcl_session_bound_handler (vcl_worker_t * wrk, session_bound_msg_t * mp) if (vcl_session_is_cl (session)) { if (vcl_segment_attach_session (mp->segment_handle, mp->rx_fifo, - mp->tx_fifo, mp->vpp_evt_q, 0, session)) + mp->tx_fifo, mp->vpp_evt_q, mp->mq_index, + 0, session)) { VDBG (0, "failed to attach fifos for %u", session->session_index); session->session_state = VCL_STATE_DETACHED; @@ -984,7 +986,7 @@ vcl_session_worker_update_reply_handler (vcl_worker_t * wrk, void *data) if (s->rx_fifo) { if (vcl_segment_attach_session (msg->segment_handle, msg->rx_fifo, - msg->tx_fifo, (uword) ~0, 0, s)) + msg->tx_fifo, (uword) ~0, ~0, 0, s)) { VDBG (0, "failed to attach fifos for %u", s->session_index); return; |