qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

rdma_backend_defs.h (1842B)


      1 /*
      2  *  RDMA device: Definitions of Backend Device structures
      3  *
      4  * Copyright (C) 2018 Oracle
      5  * Copyright (C) 2018 Red Hat Inc
      6  *
      7  * Authors:
      8  *     Yuval Shaia <yuval.shaia@oracle.com>
      9  *     Marcel Apfelbaum <marcel@redhat.com>
     10  *
     11  * This work is licensed under the terms of the GNU GPL, version 2 or later.
     12  * See the COPYING file in the top-level directory.
     13  *
     14  */
     15 
     16 #ifndef RDMA_BACKEND_DEFS_H
     17 #define RDMA_BACKEND_DEFS_H
     18 
     19 #include "qemu/thread.h"
     20 #include "chardev/char-fe.h"
     21 #include <infiniband/verbs.h>
     22 #include "contrib/rdmacm-mux/rdmacm-mux.h"
     23 #include "rdma_utils.h"
     24 
     25 typedef struct RdmaDeviceResources RdmaDeviceResources;
     26 
     27 typedef struct RdmaBackendThread {
     28     QemuThread thread;
     29     bool run; /* Set by thread manager to let thread know it should exit */
     30     bool is_running; /* Set by the thread to report its status */
     31 } RdmaBackendThread;
     32 
     33 typedef struct RdmaCmMux {
     34     CharBackend *chr_be;
     35     int can_receive;
     36 } RdmaCmMux;
     37 
     38 typedef struct RdmaBackendDev {
     39     RdmaBackendThread comp_thread;
     40     PCIDevice *dev;
     41     RdmaDeviceResources *rdma_dev_res;
     42     struct ibv_device *ib_dev;
     43     struct ibv_context *context;
     44     struct ibv_comp_channel *channel;
     45     uint8_t port_num;
     46     RdmaProtectedGQueue recv_mads_list;
     47     RdmaCmMux rdmacm_mux;
     48 } RdmaBackendDev;
     49 
     50 typedef struct RdmaBackendPD {
     51     struct ibv_pd *ibpd;
     52 } RdmaBackendPD;
     53 
     54 typedef struct RdmaBackendMR {
     55     struct ibv_pd *ibpd;
     56     struct ibv_mr *ibmr;
     57 } RdmaBackendMR;
     58 
     59 typedef struct RdmaBackendCQ {
     60     RdmaBackendDev *backend_dev;
     61     struct ibv_cq *ibcq;
     62 } RdmaBackendCQ;
     63 
     64 typedef struct RdmaBackendQP {
     65     struct ibv_pd *ibpd;
     66     struct ibv_qp *ibqp;
     67     uint8_t sgid_idx;
     68     RdmaProtectedGSList cqe_ctx_list;
     69 } RdmaBackendQP;
     70 
     71 typedef struct RdmaBackendSRQ {
     72     struct ibv_srq *ibsrq;
     73     RdmaProtectedGSList cqe_ctx_list;
     74 } RdmaBackendSRQ;
     75 
     76 #endif