]> git.ipfire.org Git - thirdparty/u-boot.git/blobdiff - include/virtio_ring.h
Prepare v2024.10-rc5
[thirdparty/u-boot.git] / include / virtio_ring.h
index c77c212cffd3d5e2d2cc9a3a689a528c10a0aed3..e8e91044a272f976bd1bd23da0f44c1e96519061 100644 (file)
@@ -86,6 +86,8 @@ struct vring_used {
 
 struct vring {
        unsigned int num;
+       size_t size;
+       struct bounce_buffer *bouncebufs;
        struct vring_desc *desc;
        struct vring_avail *avail;
        struct vring_used *used;
@@ -137,23 +139,26 @@ struct virtqueue {
 #define vring_used_event(vr)   ((vr)->avail->ring[(vr)->num])
 #define vring_avail_event(vr)  (*(__virtio16 *)&(vr)->used->ring[(vr)->num])
 
+static inline unsigned int vring_size(unsigned int num, unsigned long align)
+{
+       return ((sizeof(struct vring_desc) * num +
+               sizeof(__virtio16) * (3 + num)  + align - 1) & ~(align - 1)) +
+               sizeof(__virtio16) * 3 + sizeof(struct vring_used_elem) * num;
+}
+
 static inline void vring_init(struct vring *vr, unsigned int num, void *p,
-                             unsigned long align)
+                             unsigned long align,
+                             struct bounce_buffer *bouncebufs)
 {
        vr->num = num;
+       vr->size = vring_size(num, align);
+       vr->bouncebufs = bouncebufs;
        vr->desc = p;
        vr->avail = p + num * sizeof(struct vring_desc);
        vr->used = (void *)(((uintptr_t)&vr->avail->ring[num] +
                   sizeof(__virtio16) + align - 1) & ~(align - 1));
 }
 
-static inline unsigned int vring_size(unsigned int num, unsigned long align)
-{
-       return ((sizeof(struct vring_desc) * num +
-               sizeof(__virtio16) * (3 + num)  + align - 1) & ~(align - 1)) +
-               sizeof(__virtio16) * 3 + sizeof(struct vring_used_elem) * num;
-}
-
 /*
  * The following is used with USED_EVENT_IDX and AVAIL_EVENT_IDX.
  * Assuming a given event_idx value from the other side, if we have just