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

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

Name of the Struct Item File name Description
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, IBV_QPT_UC, IBV_QPT_UD, IBV_QPT_XRC or IBV_QPT_RAW_PACKET */
  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 maximum number of outstanding WRs in the SQ*/
  uint32_t max_recv_wr; /*Requested maximum number of outstanding WRs in the RQ*/
  uint32_t max_send_sge; /*Requested maximum number of Scatter-gather elements in a WR in the SQ*/
  uint32_t max_recv_sge; /*Requested maximum number of Scatter-gather 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*/

Input Parameters

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

Output Parameters

Item Description
qp_init_attr Actual values that are entered.

Return Value

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

The ibv_destroy_qp() function returns 0 on success, or errno on failure that indicates the reason for failure.