12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /*
- * RDMA device: Definitions of Backend Device structures
- *
- * Copyright (C) 2018 Oracle
- * Copyright (C) 2018 Red Hat Inc
- *
- * Authors:
- * Yuval Shaia <yuval.shaia@oracle.com>
- * Marcel Apfelbaum <marcel@redhat.com>
- *
- * This work is licensed under the terms of the GNU GPL, version 2 or later.
- * See the COPYING file in the top-level directory.
- *
- */
- #ifndef RDMA_BACKEND_DEFS_H
- #define RDMA_BACKEND_DEFS_H
- #include "qemu/thread.h"
- #include "chardev/char-fe.h"
- #include <infiniband/verbs.h>
- #include "contrib/rdmacm-mux/rdmacm-mux.h"
- #include "rdma_utils.h"
- typedef struct RdmaDeviceResources RdmaDeviceResources;
- typedef struct RdmaBackendThread {
- QemuThread thread;
- bool run; /* Set by thread manager to let thread know it should exit */
- bool is_running; /* Set by the thread to report its status */
- } RdmaBackendThread;
- typedef struct RdmaCmMux {
- CharBackend *chr_be;
- int can_receive;
- } RdmaCmMux;
- typedef struct RdmaBackendDev {
- RdmaBackendThread comp_thread;
- PCIDevice *dev;
- RdmaDeviceResources *rdma_dev_res;
- struct ibv_device *ib_dev;
- struct ibv_context *context;
- struct ibv_comp_channel *channel;
- uint8_t port_num;
- RdmaProtectedQList recv_mads_list;
- RdmaCmMux rdmacm_mux;
- } RdmaBackendDev;
- typedef struct RdmaBackendPD {
- struct ibv_pd *ibpd;
- } RdmaBackendPD;
- typedef struct RdmaBackendMR {
- struct ibv_pd *ibpd;
- struct ibv_mr *ibmr;
- } RdmaBackendMR;
- typedef struct RdmaBackendCQ {
- RdmaBackendDev *backend_dev;
- struct ibv_cq *ibcq;
- } RdmaBackendCQ;
- typedef struct RdmaBackendQP {
- struct ibv_pd *ibpd;
- struct ibv_qp *ibqp;
- uint8_t sgid_idx;
- RdmaProtectedGSList cqe_ctx_list;
- } RdmaBackendQP;
- typedef struct RdmaBackendSRQ {
- struct ibv_srq *ibsrq;
- RdmaProtectedGSList cqe_ctx_list;
- } RdmaBackendSRQ;
- #endif
|