net/virtio: pack virtqueue structure
authorMaxime Coquelin <maxime.coquelin@redhat.com>
Tue, 16 Mar 2021 09:38:25 +0000 (10:38 +0100)
committerChenbo Xia <chenbo.xia@intel.com>
Wed, 31 Mar 2021 05:31:50 +0000 (07:31 +0200)
This patch optimizes packing of the virtqueue
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>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Tested-by: Balazs Nemeth <bnemeth@redhat.com>
drivers/net/virtio/virtqueue.h

index 17e76f0..e9992b7 100644 (file)
@@ -244,6 +244,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;
 
@@ -256,15 +265,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;
-       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];