[3/3] net/virtio: pack virtuqueue struct
Checks
Commit Message
This patch optimizes packing of the virtuqueue
struct by moving fields around to fill holes.
Offset field is not used and so can be removed.
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
drivers/net/virtio/virtqueue.h | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
Comments
Hi Maxime,
> -----Original Message-----
> From: Maxime Coquelin <maxime.coquelin@redhat.com>
> Sent: Tuesday, December 22, 2020 12:15 AM
> To: dev@dpdk.org; Xia, Chenbo <chenbo.xia@intel.com>; amorenoz@redhat.com;
> david.marchand@redhat.com; olivier.matz@6wind.com
> Cc: Maxime Coquelin <maxime.coquelin@redhat.com>
> Subject: [PATCH 3/3] net/virtio: pack virtuqueue struct
s/virtuqueue/virtqueue
>
> This patch optimizes packing of the virtuqueue
Ditto
With above fixed:
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
> struct by moving fields around to fill holes.
>
> Offset field is not used and so can be removed.
>
> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> ---
> drivers/net/virtio/virtqueue.h | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/virtio/virtqueue.h b/drivers/net/virtio/virtqueue.h
> index c64e7dcbdf..3b08aac931 100644
> --- a/drivers/net/virtio/virtqueue.h
> +++ b/drivers/net/virtio/virtqueue.h
> @@ -245,6 +245,15 @@ struct virtqueue {
> uint16_t vq_avail_idx; /**< sync until needed */
> uint16_t vq_free_thresh; /**< free threshold */
>
> + /**
> + * Head of the free chain in the descriptor table. If
> + * there are no free descriptors, this will be set to
> + * VQ_RING_DESC_CHAIN_END.
> + */
> + uint16_t vq_desc_head_idx;
> + uint16_t vq_desc_tail_idx;
> + uint16_t vq_queue_index; /**< PCI queue index */
> +
> void *vq_ring_virt_mem; /**< linear address of vring*/
> unsigned int vq_ring_size;
>
> @@ -257,15 +266,6 @@ struct virtqueue {
> rte_iova_t vq_ring_mem; /**< physical address of vring,
> * or virtual address for virtio_user. */
>
> - /**
> - * Head of the free chain in the descriptor table. If
> - * there are no free descriptors, this will be set to
> - * VQ_RING_DESC_CHAIN_END.
> - */
> - uint16_t vq_desc_head_idx;
> - uint16_t vq_desc_tail_idx;
> - uint16_t vq_queue_index; /**< PCI queue index */
> - uint16_t offset; /**< relative offset to obtain addr in mbuf */
> uint16_t *notify_addr;
> struct rte_mbuf **sw_ring; /**< RX software ring. */
> struct vq_desc_extra vq_descx[0];
> --
> 2.29.2
@@ -245,6 +245,15 @@ struct virtqueue {
uint16_t vq_avail_idx; /**< sync until needed */
uint16_t vq_free_thresh; /**< free threshold */
+ /**
+ * Head of the free chain in the descriptor table. If
+ * there are no free descriptors, this will be set to
+ * VQ_RING_DESC_CHAIN_END.
+ */
+ uint16_t vq_desc_head_idx;
+ uint16_t vq_desc_tail_idx;
+ uint16_t vq_queue_index; /**< PCI queue index */
+
void *vq_ring_virt_mem; /**< linear address of vring*/
unsigned int vq_ring_size;
@@ -257,15 +266,6 @@ struct virtqueue {
rte_iova_t vq_ring_mem; /**< physical address of vring,
* or virtual address for virtio_user. */
- /**
- * Head of the free chain in the descriptor table. If
- * there are no free descriptors, this will be set to
- * VQ_RING_DESC_CHAIN_END.
- */
- uint16_t vq_desc_head_idx;
- uint16_t vq_desc_tail_idx;
- uint16_t vq_queue_index; /**< PCI queue index */
- uint16_t offset; /**< relative offset to obtain addr in mbuf */
uint16_t *notify_addr;
struct rte_mbuf **sw_ring; /**< RX software ring. */
struct vq_desc_extra vq_descx[0];