2 * RDMA device: Definitions of Backend Device structures
4 * Copyright (C) 2018 Oracle
5 * Copyright (C) 2018 Red Hat Inc
8 * Yuval Shaia <yuval.shaia@oracle.com>
9 * Marcel Apfelbaum <marcel@redhat.com>
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.
16 #ifndef RDMA_BACKEND_DEFS_H
17 #define RDMA_BACKEND_DEFS_H
19 #include "qemu/thread.h"
20 #include "chardev/char-fe.h"
21 #include <infiniband/verbs.h>
22 #include "contrib/rdmacm-mux/rdmacm-mux.h"
24 typedef struct RdmaDeviceResources RdmaDeviceResources
;
26 typedef struct RdmaBackendThread
{
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 */
33 typedef struct RecvMadList
{
38 typedef struct RdmaCmMux
{
43 typedef struct RdmaBackendDev
{
44 RdmaBackendThread comp_thread
;
46 RdmaDeviceResources
*rdma_dev_res
;
47 struct ibv_device
*ib_dev
;
48 struct ibv_context
*context
;
49 struct ibv_comp_channel
*channel
;
51 RecvMadList recv_mads_list
;
55 typedef struct RdmaBackendPD
{
59 typedef struct RdmaBackendMR
{
64 typedef struct RdmaBackendCQ
{
65 RdmaBackendDev
*backend_dev
;
69 typedef struct RdmaBackendQP
{