X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdevices%2Fvirtio%2Fvirtio.c;h=b8054d13e5bb59bfec13cfce5e4bc7b6590466c5;hb=6799f9b45379a8188bf418c61fe0e0aed5c14f01;hp=4f812b1e7aaadfeac37db1ddcc9b0289aee173ed;hpb=db023809043f1dc64ed8c30dd5a575763df6045b;p=vpp.git diff --git a/src/vnet/devices/virtio/virtio.c b/src/vnet/devices/virtio/virtio.c index 4f812b1e7aa..b8054d13e5b 100644 --- a/src/vnet/devices/virtio/virtio.c +++ b/src/vnet/devices/virtio/virtio.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -220,6 +221,19 @@ virtio_set_packet_buffering (virtio_if_t * vif, u16 buffering_size) return error; } +static void +virtio_vring_fill (vlib_main_t *vm, virtio_if_t *vif, virtio_vring_t *vring) +{ + if (vif->is_packed) + virtio_refill_vring_packed (vm, vif, vif->type, vring, + vif->virtio_net_hdr_sz, + virtio_input_node.index); + else + virtio_refill_vring_split (vm, vif, vif->type, vring, + vif->virtio_net_hdr_sz, + virtio_input_node.index); +} + void virtio_vring_set_rx_queues (vlib_main_t *vm, virtio_if_t *vif) { @@ -262,6 +276,10 @@ virtio_vring_set_rx_queues (vlib_main_t *vm, virtio_if_t *vif) file_index); i++; } + vnet_hw_if_set_rx_queue_mode (vnm, vring->queue_index, + VNET_HW_IF_RX_MODE_POLLING); + vring->mode = VNET_HW_IF_RX_MODE_POLLING; + virtio_vring_fill (vm, vif, vring); } vnet_hw_if_update_runtime_data (vnm, vif->hw_if_index); }