On Tue, Mar 12, 2024 at 11:36 AM Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> wrote: > > This commit structure the indirect desc table. > Then we can get the desc num directly when doing unmap. > > And save the dma info to the struct, then the indirect > will not use the dma fields of the desc_extra. The subsequent > commits will make the dma fields are optional. But for > the indirect case, we must record the dma info. > > Signed-off-by: Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> > --- > drivers/virtio/virtio_ring.c | 66 +++++++++++++++++++++--------------- > 1 file changed, 38 insertions(+), 28 deletions(-) > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > index 0dfbd17e5a87..22a588bba166 100644 > --- a/drivers/virtio/virtio_ring.c > +++ b/drivers/virtio/virtio_ring.c > @@ -72,9 +72,16 @@ struct vring_desc_state_split { > struct vring_desc *indir_desc; /* Indirect descriptor, if any. */ > }; > > +struct vring_packed_desc_indir { > + dma_addr_t addr; /* Descriptor Array DMA addr. */ > + u32 len; /* Descriptor Array length. */ > + u32 num; > + struct vring_packed_desc desc[]; > +}; > + > struct vring_desc_state_packed { > void *data; /* Data for callback. */ > - struct vring_packed_desc *indir_desc; /* Indirect descriptor, if any. */ > + struct vring_packed_desc_indir *indir_desc; /* Indirect descriptor, if any. */ Maybe it's better just to have a vring_desc_extra here. Thanks