summaryrefslogtreecommitdiffstats
path: root/src/vcl
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2021-07-21 18:17:20 -0700
committerDave Barach <openvpp@barachs.net>2021-07-22 16:50:46 +0000
commitf6e284b20c7a5b774ae21934fbf3f07801d61fc2 (patch)
treebebb5d84fff954af8762c70724559a4c721dd8e1 /src/vcl
parent4cef6de5915d22508c3e79335fbbe226f47ad0f5 (diff)
session vcl: explit mq indices in ctrl messages
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I8e80252b85dda9a8f5699109264dc1b913581442
Diffstat (limited to 'src/vcl')
-rw-r--r--src/vcl/vcl_private.c7
-rw-r--r--src/vcl/vcl_private.h4
-rw-r--r--src/vcl/vppcom.c20
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;