[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC 1/8] virtio: Define InOrderVQElement
From: |
Eugenio Perez Martin |
Subject: |
Re: [RFC 1/8] virtio: Define InOrderVQElement |
Date: |
Fri, 22 Mar 2024 10:45:12 +0100 |
On Thu, Mar 21, 2024 at 4:57 PM Jonah Palmer <jonah.palmer@oracle.com> wrote:
>
> Define the InOrderVQElement structure for the VIRTIO_F_IN_ORDER
> transport feature implementation.
>
> The InOrderVQElement structure is used to encapsulate out-of-order
> VirtQueueElement data that was processed by the host. This data
> includes:
> - The processed VirtQueueElement (elem)
> - Length of data (len)
> - VirtQueueElement array index (idx)
> - Number of processed VirtQueueElements (count)
>
> InOrderVQElements will be stored in a buffering mechanism until an
> order can be achieved.
>
> Signed-off-by: Jonah Palmer <jonah.palmer@oracle.com>
> ---
> include/hw/virtio/virtio.h | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
> index b3c74a1bca..c8aa435a5e 100644
> --- a/include/hw/virtio/virtio.h
> +++ b/include/hw/virtio/virtio.h
> @@ -77,6 +77,13 @@ typedef struct VirtQueueElement
> struct iovec *out_sg;
> } VirtQueueElement;
>
> +typedef struct InOrderVQElement {
> + const VirtQueueElement *elem;
Some subsystems allocate space for extra elements after
VirtQueueElement, like VirtIOBlockReq. You can request virtqueue_pop
to allocate this extra space by its second argument. Would it work for
this?
> + unsigned int len;
> + unsigned int idx;
> + unsigned int count;
Now I don't get why these fields cannot be obtained from elem->(len,
index, ndescs) ?
> +} InOrderVQElement;
> +
> #define VIRTIO_QUEUE_MAX 1024
>
> #define VIRTIO_NO_VECTOR 0xffff
> --
> 2.39.3
>
[RFC 5/8] virtio-net: in-order handling, Jonah Palmer, 2024/03/21
[RFC 6/8] vhost-svq: in-order handling, Jonah Palmer, 2024/03/21
[RFC 8/8] virtio: Add VIRTIO_F_IN_ORDER property definition, Jonah Palmer, 2024/03/21