Re: [PATCH net-next v2 3/5] virtio_ring: add packed ring support
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2018-09-12 16:22:29
Also in:
lkml
On Wed, Jul 11, 2018 at 10:27:09AM +0800, Tiwei Bie wrote:
quoted hunk ↗ jump to hunk
This commit introduces the support (without EVENT_IDX) for packed ring. Signed-off-by: Tiwei Bie <redacted> --- drivers/virtio/virtio_ring.c | 495 ++++++++++++++++++++++++++++++++++- 1 file changed, 487 insertions(+), 8 deletions(-)diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index c4f8abc7445a..f317b485ba54 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c@@ -55,12 +55,21 @@ #define END_USE(vq) #endif +#define _VRING_DESC_F_AVAIL(b) ((__u16)(b) << 7) +#define _VRING_DESC_F_USED(b) ((__u16)(b) << 15) + struct vring_desc_state { void *data; /* Data for callback. */ struct vring_desc *indir_desc; /* Indirect descriptor, if any. */ }; struct vring_desc_state_packed { + void *data; /* Data for callback. */ + struct vring_packed_desc *indir_desc; /* Indirect descriptor, if any. */ + int num; /* Descriptor list length. */ + dma_addr_t addr; /* Buffer DMA addr. */ + u32 len; /* Buffer length. */ + u16 flags; /* Descriptor flags. */ int next; /* The next desc state. */ };
Idea: how about using data to chain these descriptors? You can validate it's pointing within an array to distinguish e.g. on detach. -- MST