vhost-user: hint ethernet-input about single sw_if_index 72/16072/2
authorDamjan Marion <damarion@cisco.com>
Wed, 21 Nov 2018 08:54:41 +0000 (09:54 +0100)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Thu, 22 Nov 2018 19:08:08 +0000 (19:08 +0000)
Change-Id: Ia495f8f50c43baf0d6eeb8e9ba04314ce277286f
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vnet/devices/virtio/vhost_user_input.c

index 97f6792..87a01ce 100644 (file)
@@ -384,7 +384,22 @@ vhost_user_if_input (vlib_main_t * vm,
 
   while (n_left > 0)
     {
-      vlib_get_next_frame (vm, node, next_index, to_next, n_left_to_next);
+      vlib_get_new_next_frame (vm, node, next_index, to_next, n_left_to_next);
+
+      if (next_index == VNET_DEVICE_INPUT_NEXT_ETHERNET_INPUT)
+       {
+         /* give some hints to ethernet-input */
+         vlib_next_frame_t *nf;
+         vlib_frame_t *f;
+         ethernet_input_frame_t *ef;
+         nf = vlib_node_runtime_get_next_frame (vm, node, next_index);
+         f = vlib_get_frame (vm, nf->frame_index);
+         f->flags = ETH_INPUT_FRAME_F_SINGLE_SW_IF_IDX;
+
+         ef = vlib_frame_scalar_args (f);
+         ef->sw_if_index = vui->sw_if_index;
+         ef->hw_if_index = vui->hw_if_index;
+       }
 
       while (n_left > 0 && n_left_to_next > 0)
        {