​https://www.rdmamojo.com/2012/12/21/ibv_create_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*/

 

    qp_type: The desired QP type (see enum ibv_qp_type)

     qp_context: Associated QP context

    scq: Send CQ to be used for this QP

      rcq: Receive CQ to be used for this QP

  srq: Shared receive queue to be used as RQ in QP

     cap: A QPCap object

    sq_sig_all: If set, each send WR will generate a completion

     entry

     :return: A QpInitAttr object

     

 

 

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).

Parent topic: ​​Queue Pair Management​

Feedback ]