On Wed, Jul 11, 2018 at 10:27:09AM +0800, Tiwei Bie wrote:
> This commit introduces the support (without EVENT_IDX) for
> packed ring.
> 
> Signed-off-by: Tiwei Bie <[email protected]>
> ---
>  drivers/virtio/virtio_ring.c | 495 ++++++++++++++++++++++++++++++++++-
>  1 file changed, 487 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index c4f8abc7445a..f317b485ba54 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -55,12 +55,21 @@
>  #define END_USE(vq)
>  #endif
>  
> +#define _VRING_DESC_F_AVAIL(b)       ((__u16)(b) << 7)
> +#define _VRING_DESC_F_USED(b)        ((__u16)(b) << 15)
> +
>  struct vring_desc_state {
>       void *data;                     /* Data for callback. */
>       struct vring_desc *indir_desc;  /* Indirect descriptor, if any. */
>  };
>  
>  struct vring_desc_state_packed {
> +     void *data;                     /* Data for callback. */
> +     struct vring_packed_desc *indir_desc; /* Indirect descriptor, if any. */
> +     int num;                        /* Descriptor list length. */
> +     dma_addr_t addr;                /* Buffer DMA addr. */
> +     u32 len;                        /* Buffer length. */
> +     u16 flags;                      /* Descriptor flags. */
>       int next;                       /* The next desc state. */
>  };
>  

Idea: how about using data to chain these descriptors?
You can validate it's pointing within an array to distinguish
e.g. on detach.

-- 
MST
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to