On Fri, Mar 16, 2018 at 04:21:04PM +0100, Jens Freimann wrote: > Add and initialize descriptor data structures. > > Signed-off-by: Jens Freimann <jfreim...@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