【RDMA】ibv_create_qp, ibv_destroy_qp

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_capcap;/*QP capabilities*/
 enum ibv_qp_typeqp_type;/*QP Transport Service Type: IBV_QPT_RC,*/
 intsq_sig_all;/*If set, each Work Request (WR) submitted to the SQ*/
   /*generates a completion entry */
 struct ibv_xrc_domainxrc_domain;/*Not supported*/
    
struct ibv_qp_cap {
    
 uint32_tmax_send_wr;/*Requested max number of outstanding*/
   /*WRs in the SQ*/
 uint32_tmax_recv_wr;/*Requested max number of outstanding*/
   /*WRs in the RQ*/
 uint32_tmax_send_sge;/*Requested max number of scatter/gather*/
   /*(s/g) elements in*/
   /*a WR in the SQ*/
 uint32_tmax_recv_sge;/*Requested max number of s/g elements*/
   /*in a WR in the SQ*/
 uint32_tmax_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

pdstruct ibv_pd from ibv_alloc_pd.
qp_init_attrInitial attributes of queue pair.

Output Parameters

qp_init_attrActual 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 ]

posted on 2022-10-04 01:23  bdy  阅读(34)  评论(0编辑  收藏  举报

导航