The structure RdmaRmUserMR has no benefits, remove it an move all its fields to struct RdmaRmMR. Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com> Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com> Message-Id: <20180805153518.2983-7-yuval.shaia@oracle.com> Signed-off-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * RDMA device: Definitions of Resource Manager 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_RM_DEFS_H
 | 
						|
#define RDMA_RM_DEFS_H
 | 
						|
 | 
						|
#include "rdma_backend_defs.h"
 | 
						|
 | 
						|
#define MAX_PORTS             1
 | 
						|
#define MAX_PORT_GIDS         1
 | 
						|
#define MAX_GIDS              MAX_PORT_GIDS
 | 
						|
#define MAX_PORT_PKEYS        1
 | 
						|
#define MAX_PKEYS             MAX_PORT_PKEYS
 | 
						|
#define MAX_UCS               512
 | 
						|
#define MAX_MR_SIZE           (1UL << 27)
 | 
						|
#define MAX_QP                1024
 | 
						|
#define MAX_SGE               4
 | 
						|
#define MAX_CQ                2048
 | 
						|
#define MAX_MR                1024
 | 
						|
#define MAX_PD                1024
 | 
						|
#define MAX_QP_RD_ATOM        16
 | 
						|
#define MAX_QP_INIT_RD_ATOM   16
 | 
						|
#define MAX_AH                64
 | 
						|
 | 
						|
#define MAX_RM_TBL_NAME 16
 | 
						|
typedef struct RdmaRmResTbl {
 | 
						|
    char name[MAX_RM_TBL_NAME];
 | 
						|
    QemuMutex lock;
 | 
						|
    unsigned long *bitmap;
 | 
						|
    size_t tbl_sz;
 | 
						|
    size_t res_sz;
 | 
						|
    void *tbl;
 | 
						|
} RdmaRmResTbl;
 | 
						|
 | 
						|
typedef struct RdmaRmPD {
 | 
						|
    RdmaBackendPD backend_pd;
 | 
						|
    uint32_t ctx_handle;
 | 
						|
} RdmaRmPD;
 | 
						|
 | 
						|
typedef struct RdmaRmCQ {
 | 
						|
    RdmaBackendCQ backend_cq;
 | 
						|
    void *opaque;
 | 
						|
    bool notify;
 | 
						|
} RdmaRmCQ;
 | 
						|
 | 
						|
/* MR (DMA region) */
 | 
						|
typedef struct RdmaRmMR {
 | 
						|
    RdmaBackendMR backend_mr;
 | 
						|
    void *virt;
 | 
						|
    uint64_t start;
 | 
						|
    size_t length;
 | 
						|
    uint32_t pd_handle;
 | 
						|
    uint32_t lkey;
 | 
						|
    uint32_t rkey;
 | 
						|
} RdmaRmMR;
 | 
						|
 | 
						|
typedef struct RdmaRmUC {
 | 
						|
    uint64_t uc_handle;
 | 
						|
} RdmaRmUC;
 | 
						|
 | 
						|
typedef struct RdmaRmQP {
 | 
						|
    RdmaBackendQP backend_qp;
 | 
						|
    void *opaque;
 | 
						|
    uint32_t qp_type;
 | 
						|
    uint32_t qpn;
 | 
						|
    uint32_t send_cq_handle;
 | 
						|
    uint32_t recv_cq_handle;
 | 
						|
    enum ibv_qp_state qp_state;
 | 
						|
} RdmaRmQP;
 | 
						|
 | 
						|
typedef struct RdmaRmPort {
 | 
						|
    union ibv_gid gid_tbl[MAX_PORT_GIDS];
 | 
						|
    enum ibv_port_state state;
 | 
						|
} RdmaRmPort;
 | 
						|
 | 
						|
typedef struct RdmaDeviceResources {
 | 
						|
    RdmaRmPort ports[MAX_PORTS];
 | 
						|
    RdmaRmResTbl pd_tbl;
 | 
						|
    RdmaRmResTbl mr_tbl;
 | 
						|
    RdmaRmResTbl uc_tbl;
 | 
						|
    RdmaRmResTbl qp_tbl;
 | 
						|
    RdmaRmResTbl cq_tbl;
 | 
						|
    RdmaRmResTbl cqe_ctx_tbl;
 | 
						|
    GHashTable *qp_hash; /* Keeps mapping between real and emulated */
 | 
						|
} RdmaDeviceResources;
 | 
						|
 | 
						|
#endif
 |