vlib: fix handoff queue sequencing bug
[vpp.git] / src / vlib / buffer_node.h
index 5ded506..96b50ae 100644 (file)
@@ -517,7 +517,6 @@ vlib_buffer_enqueue_to_thread (vlib_main_t * vm, u32 frame_queue_index,
              n_drop++;
              goto next;
            }
-         vlib_mains[next_thread_index]->check_frame_queues = 1;
 
          if (hf)
            hf->n_vectors = VLIB_FRAME_SIZE - n_left_to_next_thread;
@@ -539,6 +538,7 @@ vlib_buffer_enqueue_to_thread (vlib_main_t * vm, u32 frame_queue_index,
        {
          hf->n_vectors = VLIB_FRAME_SIZE;
          vlib_put_frame_queue_elt (hf);
+         vlib_mains[current_thread_index]->check_frame_queues = 1;
          current_thread_index = ~0;
          ptd->handoff_queue_elt_by_thread_index[next_thread_index] = 0;
          hf = 0;
@@ -567,6 +567,7 @@ vlib_buffer_enqueue_to_thread (vlib_main_t * vm, u32 frame_queue_index,
          if (1 || hf->n_vectors == hf->last_n_vectors)
            {
              vlib_put_frame_queue_elt (hf);
+             vlib_mains[i]->check_frame_queues = 1;
              ptd->handoff_queue_elt_by_thread_index[i] = 0;
            }
          else