[dpdk-dev] [PATCH 01/17] net/virtio: vring init for packed queues

Tiwei Bie tiwei.bie at intel.com
Mon Mar 19 09:03:55 CET 2018


On Fri, Mar 16, 2018 at 04:21:04PM +0100, Jens Freimann wrote:
> Add and initialize descriptor data structures.
> 
> Signed-off-by: Jens Freimann <jfreimann at redhat.com>
> ---
[...]
> --- a/drivers/net/virtio/virtio_ring.h
> +++ b/drivers/net/virtio/virtio_ring.h
> @@ -9,6 +9,7 @@
>  
>  #include <rte_common.h>
>  
> +

There is no need to add this blank line.

>  /* This marks a buffer as continuing via the next field. */
>  #define VRING_DESC_F_NEXT       1
>  /* This marks a buffer as write-only (otherwise read-only). */
> @@ -54,11 +55,23 @@ struct vring_used {
>  	struct vring_used_elem ring[0];
>  };
[...]
>  struct vring {
>  	unsigned int num;
>  	struct vring_desc  *desc;
>  	struct vring_avail *avail;
>  	struct vring_used  *used;
> +	struct vring_desc_packed *desc_packed;

Maybe it's better to use anonymous union here.

>  };
>  
>  /* The standard layout for the ring is a continuous chunk of memory which
> @@ -95,10 +108,13 @@ struct vring {
>  #define vring_avail_event(vr) (*(uint16_t *)&(vr)->used->ring[(vr)->num])
>  
>  static inline size_t
> -vring_size(unsigned int num, unsigned long align)
> +vring_size(struct virtio_hw *hw, unsigned int num, unsigned long align)
>  {
>  	size_t size;
>  
> +	if (vtpci_packed_queue(hw))
> +		return num * sizeof(struct vring_desc_packed);
> +

Besides the descriptors, the ring also contains event
suppression structures.

Thanks


More information about the dev mailing list