Open CMRC connection.
404 cmrc =
zalloc (
sizeof ( *cmrc ) );
420 DBGC ( cmrc,
"CMRC %s %s could not open device: %s\n",
428 DBGC ( cmrc,
"CMRC %s %s could not create completion queue: " 437 &cmrc->
qp ) ) != 0 ) {
438 DBGC ( cmrc,
"CMRC %s %s could not create queue pair: %s\n",
443 DBGC ( cmrc,
"CMRC %s %s using QPN %#lx\n",
struct ib_completion_queue * cq
Completion queue.
struct arbelprm_rc_send_wqe rc
static struct interface_descriptor ib_cmrc_xfer_desc
CMRC data transfer interface descriptor.
char name[IBDEV_NAME_LEN]
Name of this Infiniband device.
#define ref_init(refcnt, free)
Initialise a reference counter.
int ib_create_cq(struct ib_device *ibdev, unsigned int num_cqes, struct ib_completion_queue_operations *op, struct ib_completion_queue **new_cq)
Create completion queue.
static struct ib_queue_pair_operations ib_cmrc_queue_pair_ops
Infiniband CMRC queue pair operations.
int ib_open(struct ib_device *ibdev)
Open port.
void intf_plug_plug(struct interface *a, struct interface *b)
Plug two object interfaces together.
static struct process_descriptor ib_cmrc_shutdown_desc
CMRC shutdown process descriptor.
void ib_close(struct ib_device *ibdev)
Close port.
struct process shutdown
Shutdown process.
union ib_gid dgid
Destination GID.
void ib_destroy_cq(struct ib_device *ibdev, struct ib_completion_queue *cq)
Destroy completion queue.
#define ENOMEM
Not enough space.
#define IB_CMRC_NUM_RECV_WQES
CMRC number of receive WQEs.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
An Infiniband Communication-Managed Reliable Connection.
unsigned long qpn
Queue pair number.
#define IB_CMRC_NUM_SEND_WQES
CMRC number of send WQEs.
#define IB_CMRC_NUM_CQES
CMRC number of completion queue entries.
char * strerror(int errno)
Retrieve string representation of error number.
void * zalloc(size_t size)
Allocate cleared memory.
void ib_destroy_qp(struct ib_device *ibdev, struct ib_queue_pair *qp)
Destroy queue pair.
static void process_init_stopped(struct process *process, struct process_descriptor *desc, struct refcnt *refcnt)
Initialise process without adding to process list.
static struct ib_completion_queue_operations ib_cmrc_completion_ops
Infiniband CMRC completion operations.
union ib_guid service_id
Service ID.
struct interface xfer
Data transfer interface.
struct refcnt refcnt
Reference count.
int ib_create_qp(struct ib_device *ibdev, enum ib_queue_pair_type type, unsigned int num_send_wqes, struct ib_completion_queue *send_cq, unsigned int num_recv_wqes, struct ib_completion_queue *recv_cq, struct ib_queue_pair_operations *op, const char *name, struct ib_queue_pair **new_qp)
Create queue pair.
struct ib_queue_pair * qp
Queue pair.
union ib_guid service_id
Service ID.
static void intf_init(struct interface *intf, struct interface_descriptor *desc, struct refcnt *refcnt)
Initialise an object interface.
#define NULL
NULL pointer (VOID *)
static __always_inline void ib_qp_set_ownerdata(struct ib_queue_pair *qp, void *priv)
Set Infiniband queue pair owner-private data.
struct ib_device * ibdev
Infiniband device.
#define ref_put(refcnt)
Drop reference to object.