ibv_create_qp, ibv_destroy_qp

Creates or destroys a queue pair (QP).

Syntax

#include <rdma/verbs.h>
struct ibv_qp *ibv_create_qp(struct ibv_pd *pd, struct ibv_qp_init_attr *qp_init_attr);
int ibv_destroy_qp(struct ibv_qp *qp)

Description

ibv_create_qp() creates a queue pair (QP) associated with the protection domain pd. The argument qp_init_attr is an ibv_qp_init_attr struct, as defined in <rdma/verbs.h>.

struct ibv_qp_init_attr {
  void *qp_context; /*Associated context of the QP*/
  struct ibv_cq *send_cq; /*CQ to be associated with the Send Queue (SQ)*/
  struct ibv_cq *recv_cq; /*CQ to be associated with the Receive Queue (RQ)*/
  struct ibv_srq *srq; /*Not Supported*/
  struct ibv_qp_cap cap; /*QP capabilities*/
  enum ibv_qp_type qp_type; /*QP Transport Service Type: IBV_QPT_RC,*/
  int sq_sig_all; /*If set, each Work Request (WR) submitted to the SQ*/
  /*generates a completion entry */
  struct ibv_xrc_domain xrc_domain; /*Not supported*/
       
struct ibv_qp_cap {
       
uint32_t max_send_wr; /*Requested max number of outstanding*/
/*WRs in the SQ*/
uint32_t max_recv_wr; /*Requested max number of outstanding*/
/*WRs in the RQ*/
uint32_t max_send_sge; /*Requested max number of scatter/gather*/
/*(s/g) elements in*/
/*a WR in the SQ*/
uint32_t max_recv_sge; /*Requested max number of s/g elements*/
/*in a WR in the SQ*/
uint32_t max_inline_data; /*Requested max number of data (bytes)*/
/*that can be posted*/
/*inline to the SQ, otherwise 0*/

The function ibv_create_qp() updates the qp_init_attr->cap struct with the actual QP values of the QP that was created; the values will be greater than or equal to the values requested. ibv_destroy_qp() destroys the QP qp.

Input Parameters

pd struct ibv_pd from ibv_alloc_pd.
qp_init_attr Initial attributes of queue pair.

Output Parameters

qp_init_attr Actual values are filled in.

Return Value

ibv_create_qp() returns a pointer to the created QP on success, or NULL if the request fails.

ibv_destroy_qp() returns 0 on success, or the value of errno on failure (which indicates the failure reason).

[ Feedback ]