vcl: initialize ctrl_mq in workers 27/21627/3
authorFlorin Coras <fcoras@cisco.com>
Fri, 30 Aug 2019 05:45:04 +0000 (22:45 -0700)
committerDamjan Marion <dmarion@me.com>
Fri, 30 Aug 2019 13:16:08 +0000 (13:16 +0000)
Type: fix

Change-Id: I1b9c8b0f9292f039b941e18d8aca5d734d5f1e77
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/vcl/vcl_bapi.c
src/vcl/vcl_private.h

index cdfc286..2091a71 100644 (file)
@@ -126,7 +126,7 @@ vl_api_app_attach_reply_t_handler (vl_api_app_attach_reply_t * mp)
   ctrl_mq = uword_to_pointer (mp->vpp_ctrl_mq, svm_msg_q_t *);
   vec_validate (wrk->vpp_event_queues, mp->vpp_ctrl_mq_thread);
   wrk->vpp_event_queues[mp->vpp_ctrl_mq_thread] = ctrl_mq;
-  wrk->ctrl_mq = ctrl_mq;
+  vcm->ctrl_mq = wrk->ctrl_mq = ctrl_mq;
   segment_handle = clib_net_to_host_u64 (mp->segment_handle);
   if (segment_handle == VCL_INVALID_SEGMENT_HANDLE)
     {
@@ -205,6 +205,7 @@ vl_api_app_worker_add_del_reply_t_handler (vl_api_app_worker_add_del_reply_t *
   wrk->vpp_wrk_index = clib_net_to_host_u32 (mp->wrk_index);
   wrk->app_event_queue = uword_to_pointer (mp->app_event_queue_address,
                                           svm_msg_q_t *);
+  wrk->ctrl_mq = vcm->ctrl_mq;
 
   segment_handle = clib_net_to_host_u64 (mp->segment_handle);
   if (segment_handle == VCL_INVALID_SEGMENT_HANDLE)
index cd2544c..7746862 100644 (file)
@@ -333,6 +333,9 @@ typedef struct vppcom_main_t_
   /** Mapped segments table */
   uword *segment_table;
 
+  /** Control mq obtained from attach */
+  svm_msg_q_t *ctrl_mq;
+
   fifo_segment_main_t segment_main;
 
 #ifdef VCL_ELOG