Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

ibv_create_qp(3) [centos man page]

IBV_CREATE_QP(3)					  Libibverbs Programmer's Manual					  IBV_CREATE_QP(3)

NAME
ibv_create_qp, ibv_destroy_qp - create or destroy a queue pair (QP) SYNOPSIS
#include <infiniband/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 <infiniband/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; /* SRQ handle if QP is to be associated with an SRQ, otherwise NULL */ 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 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_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() will update 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. RETURN VALUE
ibv_create_qp() returns a pointer to the created QP, or NULL if the request fails. Check the QP number (qp_num) in the returned QP. ibv_destroy_qp() returns 0 on success, or the value of errno on failure (which indicates the failure reason). NOTES
ibv_create_qp() will fail if a it is asked to create QP of a type other than IBV_QPT_RC or IBV_QPT_UD associated with an SRQ. The attributes max_recv_wr and max_recv_sge are ignored by ibv_create_qp() if the QP is to be associated with an SRQ. ibv_destroy_qp() fails if the QP is attached to a multicast group. SEE ALSO
ibv_alloc_pd(3), ibv_modify_qp(3), ibv_query_qp(3) AUTHORS
Dotan Barak <dotanba@gmail.com> libibverbs 2006-10-31 IBV_CREATE_QP(3)

Check Out this Related Man Page

IBV_QUERY_QP(3) 					  Libibverbs Programmer's Manual					   IBV_QUERY_QP(3)

NAME
ibv_query_qp - get the attributes of a queue pair (QP) SYNOPSIS
#include <infiniband/verbs.h> int ibv_query_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr, int attr_mask, struct ibv_qp_init_attr *init_attr); DESCRIPTION
ibv_query_qp() gets the attributes specified in attr_mask for the QP qp and returns them through the pointers attr and init_attr. The argument attr is an ibv_qp_attr struct, as defined in <infiniband/verbs.h>. struct ibv_qp_attr { enum ibv_qp_state qp_state; /* Current QP state */ enum ibv_qp_state cur_qp_state; /* Current QP state - irrelevant for ibv_query_qp */ enum ibv_mtu path_mtu; /* Path MTU (valid only for RC/UC QPs) */ enum ibv_mig_state path_mig_state; /* Path migration state (valid if HCA supports APM) */ uint32_t qkey; /* Q_Key of the QP (valid only for UD QPs) */ uint32_t rq_psn; /* PSN for receive queue (valid only for RC/UC QPs) */ uint32_t sq_psn; /* PSN for send queue (valid only for RC/UC QPs) */ uint32_t dest_qp_num; /* Destination QP number (valid only for RC/UC QPs) */ int qp_access_flags; /* Mask of enabled remote access operations (valid only for RC/UC QPs) */ struct ibv_qp_cap cap; /* QP capabilities */ struct ibv_ah_attr ah_attr; /* Primary path address vector (valid only for RC/UC QPs) */ struct ibv_ah_attr alt_ah_attr; /* Alternate path address vector (valid only for RC/UC QPs) */ uint16_t pkey_index; /* Primary P_Key index */ uint16_t alt_pkey_index; /* Alternate P_Key index */ uint8_t en_sqd_async_notify; /* Enable SQD.drained async notification - irrelevant for ibv_query_qp */ uint8_t sq_draining; /* Is the QP draining? (Valid only if qp_state is SQD) */ uint8_t max_rd_atomic; /* Number of outstanding RDMA reads & atomic operations on the destination QP (valid only for RC QPs) */ uint8_t max_dest_rd_atomic; /* Number of responder resources for handling incoming RDMA reads & atomic operations (valid only for RC QPs) */ uint8_t min_rnr_timer; /* Minimum RNR NAK timer (valid only for RC QPs) */ uint8_t port_num; /* Primary port number */ uint8_t timeout; /* Local ack timeout for primary path (valid only for RC QPs) */ uint8_t retry_cnt; /* Retry count (valid only for RC QPs) */ uint8_t rnr_retry; /* RNR retry (valid only for RC QPs) */ uint8_t alt_port_num; /* Alternate port number */ uint8_t alt_timeout; /* Local ack timeout for alternate path (valid only for RC QPs) */ }; For details on struct ibv_qp_cap see the description of ibv_create_qp(). For details on struct ibv_ah_attr see the description of ibv_cre- ate_ah(). RETURN VALUE
ibv_query_qp() returns 0 on success, or the value of errno on failure (which indicates the failure reason). NOTES
The argument attr_mask is a hint that specifies the minimum list of attributes to retrieve. Some RDMA devices may return extra attributes not requested, for example if the value can be returned cheaply. This has the same form as in ibv_modify_qp(). Attribute values are valid if they have been set using ibv_modify_qp(). The exact list of valid attributes depends on the QP state. Multiple calls to ibv_query_qp() may yield some differences in the values returned for the following attributes: qp_state, path_mig_state, sq_draining, ah_attr (if APM is enabled). SEE ALSO
ibv_create_qp(3), ibv_destroy_qp(3), ibv_modify_qp(3), ibv_create_ah(3) AUTHORS
Dotan Barak <dotanba@gmail.com> libibverbs 2006-10-31 IBV_QUERY_QP(3)
Man Page