diff options
| author | Cornelia Huck <cohuck@redhat.com> | 2021-01-22 19:00:29 +0100 |
|---|---|---|
| committer | Jason Wang <jasowang@redhat.com> | 2021-03-15 16:41:22 +0800 |
| commit | 3aa1b7af0f5fbfdf1b4759658e1445bda680b40d (patch) | |
| tree | 7908c80f6c63ffe97e1d92c2888579bfd0140d93 /hw/rdma/vmw/pvrdma_dev_ring.h | |
| parent | 37cee01784ff0df13e5209517e1b3594a5e792d1 (diff) | |
| download | focaccia-qemu-3aa1b7af0f5fbfdf1b4759658e1445bda680b40d.tar.gz focaccia-qemu-3aa1b7af0f5fbfdf1b4759658e1445bda680b40d.zip | |
pvrdma: wean code off pvrdma_ring.h kernel header
The pvrdma code relies on the pvrdma_ring.h kernel header for some basic ring buffer handling. The content of that header isn't very exciting, but contains some (q)atomic_*() invocations that (a) cause manual massaging when doing a headers update, and (b) are an indication that we probably should not be importing that header at all. Let's reimplement the ring buffer handling directly in the pvrdma code instead. This arguably also improves readability of the code. Importing the header can now be dropped. Signed-off-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Yuval Shaia <yuval.shaia.ml@gmail.com> Tested-by: Yuval Shaia <yuval.shaia.ml@gmail.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'hw/rdma/vmw/pvrdma_dev_ring.h')
| -rw-r--r-- | hw/rdma/vmw/pvrdma_dev_ring.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/hw/rdma/vmw/pvrdma_dev_ring.h b/hw/rdma/vmw/pvrdma_dev_ring.h index 5f2a0cf9b9..d231588ce0 100644 --- a/hw/rdma/vmw/pvrdma_dev_ring.h +++ b/hw/rdma/vmw/pvrdma_dev_ring.h @@ -19,18 +19,23 @@ #define MAX_RING_NAME_SZ 32 +typedef struct PvrdmaRingState { + int prod_tail; /* producer tail */ + int cons_head; /* consumer head */ +} PvrdmaRingState; + typedef struct PvrdmaRing { char name[MAX_RING_NAME_SZ]; PCIDevice *dev; uint32_t max_elems; size_t elem_sz; - struct pvrdma_ring *ring_state; /* used only for unmap */ + PvrdmaRingState *ring_state; /* used only for unmap */ int npages; void **pages; } PvrdmaRing; int pvrdma_ring_init(PvrdmaRing *ring, const char *name, PCIDevice *dev, - struct pvrdma_ring *ring_state, uint32_t max_elems, + PvrdmaRingState *ring_state, uint32_t max_elems, size_t elem_sz, dma_addr_t *tbl, uint32_t npages); void *pvrdma_ring_next_elem_read(PvrdmaRing *ring); void pvrdma_ring_read_inc(PvrdmaRing *ring); |