Re: [PATCH 01/17] net/virtio: vring init for packed queues
From: Tiwei Bie <hidden>
Date: 2018-03-19 08:05:31
On Fri, Mar 16, 2018 at 04:21:04PM +0100, Jens Freimann wrote:
Add and initialize descriptor data structures. Signed-off-by: Jens Freimann <redacted> ---
[...]
quoted hunk ↗ jump to hunk
--- 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.
quoted hunk ↗ jump to hunk
/* 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.
quoted hunk ↗ jump to hunk
}; /* 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