|
@@ -43,6 +43,13 @@ typedef struct VRingDesc
|
|
|
uint16_t next;
|
|
|
} VRingDesc;
|
|
|
|
|
|
+typedef struct VRingPackedDesc {
|
|
|
+ uint64_t addr;
|
|
|
+ uint32_t len;
|
|
|
+ uint16_t id;
|
|
|
+ uint16_t flags;
|
|
|
+} VRingPackedDesc;
|
|
|
+
|
|
|
typedef struct VRingAvail
|
|
|
{
|
|
|
uint16_t flags;
|
|
@@ -81,17 +88,25 @@ typedef struct VRing
|
|
|
VRingMemoryRegionCaches *caches;
|
|
|
} VRing;
|
|
|
|
|
|
+typedef struct VRingPackedDescEvent {
|
|
|
+ uint16_t off_wrap;
|
|
|
+ uint16_t flags;
|
|
|
+} VRingPackedDescEvent ;
|
|
|
+
|
|
|
struct VirtQueue
|
|
|
{
|
|
|
VRing vring;
|
|
|
|
|
|
/* Next head to pop */
|
|
|
uint16_t last_avail_idx;
|
|
|
+ bool last_avail_wrap_counter;
|
|
|
|
|
|
/* Last avail_idx read from VQ. */
|
|
|
uint16_t shadow_avail_idx;
|
|
|
+ bool shadow_avail_wrap_counter;
|
|
|
|
|
|
uint16_t used_idx;
|
|
|
+ bool used_wrap_counter;
|
|
|
|
|
|
/* Last used index value we have signalled on */
|
|
|
uint16_t signalled_used;
|