[dpdk-dev] [PATCH v9 1/8] net/virtio: vring init for packed queues

Jens Freimann jfreimann at redhat.com
Thu Oct 25 17:12:48 CEST 2018


On Thu, Oct 25, 2018 at 03:51:19PM +0200, Maxime Coquelin wrote:
>
>
>On 10/25/18 3:48 PM, Jens Freimann wrote:
>>On Thu, Oct 25, 2018 at 05:21:15PM +0800, Tiwei Bie wrote:
>>>On Wed, Oct 24, 2018 at 04:32:29PM +0200, Jens Freimann wrote:
>>>>Signed-off-by: Jens Freimann <jfreimann at redhat.com>
>>>>??struct vring {
>>>>???????? unsigned int num;
>>>>-?????? struct vring_desc?? *desc;
>>>>-?????? struct vring_avail *avail;
>>>>-?????? struct vring_used?? *used;
>>>>+?????? union {
>>>>+?????????????? struct vring_desc_packed *desc_packed;
>>>>+?????????????? struct vring_desc *desc;
>>>>+?????? };
>>>>+?????? union {
>>>>+?????????????? struct vring_avail *avail;
>>>>+?????????????? struct vring_packed_desc_event *driver_event;
>>>>+?????? };
>>>>+?????? union {
>>>>+?????????????? struct vring_used?? *used;
>>>>+?????????????? struct vring_packed_desc_event *device_event;
>>>>+?????? };
>>>>??};
>>>>
>>>
>>>We should define a new `vring` structure for packed ring.
>>
>>I think it was requested to have it as a union before, but I can do
>>it.
>
>I guess oyu vcan have a union between struct vring and struct
>vring_packed?

Like this?

 struct vring {
          unsigned int num;
          union {
                 struct vring_split *split;
_                struct vring_packed *packed;
          };
  };

We will have to write vq->vq_ring.split.avail->flags and 
vq->vq_ring.packed.desc[xx] and similar things in a lot of places, no?

Should we just add both vring_split and vring_packed to struct
virtqueue instead? Only one of them will have memory allocated per virtqueue
anyway.

regards,
Jens 


More information about the dev mailing list