From b7e4e6d1d24685cec2b1b8c72998661ae237fe94 Mon Sep 17 00:00:00 2001 From: Mohsin Kazmi Date: Mon, 13 Dec 2021 18:32:42 +0000 Subject: virtio: integrate with new tx infra Type: improvement Change-Id: I337ec63d0868f665329d68eadf1744e080b73a0d Signed-off-by: Mohsin Kazmi --- src/vnet/devices/virtio/virtio.h | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'src/vnet/devices/virtio/virtio.h') diff --git a/src/vnet/devices/virtio/virtio.h b/src/vnet/devices/virtio/virtio.h index 87ecfcbdf71..267d8f94bb1 100644 --- a/src/vnet/devices/virtio/virtio.h +++ b/src/vnet/devices/virtio/virtio.h @@ -103,6 +103,7 @@ typedef struct }; }; #define VRING_TX_OUT_OF_ORDER 1 +#define VRING_TX_SCHEDULED 2 u16 flags; u8 buffer_pool_index; vnet_hw_if_rx_mode mode; @@ -213,7 +214,7 @@ typedef struct typedef struct { - u32 interrupt_queues_count; + u32 gro_or_buffering_if_count; /* logging */ vlib_log_class_t log_default; @@ -224,7 +225,6 @@ typedef struct extern virtio_main_t virtio_main; extern vnet_device_class_t virtio_device_class; extern vlib_node_registration_t virtio_input_node; -extern vlib_node_registration_t virtio_send_interrupt_node; clib_error_t *virtio_vring_init (vlib_main_t * vm, virtio_if_t * vif, u16 idx, u16 sz); @@ -233,6 +233,7 @@ clib_error_t *virtio_vring_free_rx (vlib_main_t * vm, virtio_if_t * vif, clib_error_t *virtio_vring_free_tx (vlib_main_t * vm, virtio_if_t * vif, u32 idx); void virtio_vring_set_rx_queues (vlib_main_t *vm, virtio_if_t *vif); +void virtio_vring_set_tx_queues (vlib_main_t *vm, virtio_if_t *vif); extern void virtio_free_buffers (vlib_main_t * vm, virtio_vring_t * vring); extern void virtio_set_net_hdr_size (virtio_if_t * vif); extern void virtio_show (vlib_main_t *vm, u32 *hw_if_indices, u8 show_descr, @@ -245,6 +246,9 @@ extern void virtio_pci_legacy_notify_queue (vlib_main_t * vm, extern void virtio_pci_modern_notify_queue (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id, u16 queue_notify_offset); +extern void virtio_pre_input_node_enable (vlib_main_t *vm, virtio_if_t *vif); +extern void virtio_pre_input_node_disable (vlib_main_t *vm, virtio_if_t *vif); + format_function_t format_virtio_device_name; format_function_t format_virtio_log_name; @@ -270,6 +274,28 @@ virtio_kick (vlib_main_t * vm, virtio_vring_t * vring, virtio_if_t * vif) } } +static_always_inline u8 +virtio_txq_is_scheduled (virtio_vring_t *vring) +{ + if (vring) + return (vring->flags & VRING_TX_SCHEDULED); + return 1; +} + +static_always_inline void +virtio_txq_set_scheduled (virtio_vring_t *vring) +{ + if (vring) + vring->flags |= VRING_TX_SCHEDULED; +} + +static_always_inline void +virtio_txq_clear_scheduled (virtio_vring_t *vring) +{ + if (vring) + vring->flags &= ~VRING_TX_SCHEDULED; +} + #define virtio_log_debug(vif, f, ...) \ { \ vlib_log(VLIB_LOG_LEVEL_DEBUG, virtio_main.log_default, \ -- cgit 1.2.3-korg