]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/ofed/libibverbs/man/ibv_create_qp.3
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / ofed / libibverbs / man / ibv_create_qp.3
1 .\" -*- nroff -*-
2 .\"
3 .TH IBV_CREATE_QP 3 2006-10-31 libibverbs "Libibverbs Programmer's Manual"
4 .SH "NAME"
5 ibv_create_qp, ibv_destroy_qp \- create or destroy a queue pair (QP)
6 .SH "SYNOPSIS"
7 .nf
8 .B #include <infiniband/verbs.h>
9 .sp
10 .BI "struct ibv_qp *ibv_create_qp(struct ibv_pd " "*pd" ,
11 .BI "                             struct ibv_qp_init_attr " "*qp_init_attr" );
12 .sp
13 .BI "int ibv_destroy_qp(struct ibv_qp " "*qp" );
14 .fi
15 .SH "DESCRIPTION"
16 .B ibv_create_qp()
17 creates a queue pair (QP) associated with the protection domain
18 .I pd\fR.
19 The argument
20 .I qp_init_attr
21 is an ibv_qp_init_attr struct, as defined in <infiniband/verbs.h>.
22 .PP
23 .nf
24 struct ibv_qp_init_attr {
25 .in +8
26 void                   *qp_context;     /* Associated context of the QP */
27 struct ibv_cq          *send_cq;        /* CQ to be associated with the Send Queue (SQ) */ 
28 struct ibv_cq          *recv_cq;        /* CQ to be associated with the Receive Queue (RQ) */
29 struct ibv_srq         *srq;            /* SRQ handle if QP is to be associated with an SRQ, otherwise NULL */
30 struct ibv_qp_cap       cap;            /* QP capabilities */
31 enum ibv_qp_type        qp_type;        /* QP Transport Service Type: IBV_QPT_RC, IBV_QPT_UC, IBV_QPT_UD or IBV_QPT_XRC */
32 int                     sq_sig_all;     /* If set, each Work Request (WR) submitted to the SQ generates a completion entry */
33 struct ibv_xrc_domain  *xrc_domain;     /* XRC domain the QP will be associated with (valid only for IBV_QPT_XRC QP), otherwise NULL */
34 .in -8
35 };
36 .sp
37 .nf
38 struct ibv_qp_cap {
39 .in +8
40 uint32_t                max_send_wr;    /* Requested max number of outstanding WRs in the SQ */
41 uint32_t                max_recv_wr;    /* Requested max number of outstanding WRs in the RQ */
42 uint32_t                max_send_sge;   /* Requested max number of scatter/gather (s/g) elements in a WR in the SQ */
43 uint32_t                max_recv_sge;   /* Requested max number of s/g elements in a WR in the SQ */
44 uint32_t                max_inline_data;/* Requested max number of data (bytes) that can be posted inline to the SQ, otherwise 0 */
45 .in -8
46 };
47 .fi
48 .PP
49 The function
50 .B ibv_create_qp()
51 will update the
52 .I qp_init_attr\fB\fR->cap
53 struct with the actual \s-1QP\s0 values of the QP that was created;
54 the values will be greater than or equal to the values requested.
55 .PP
56 .B ibv_destroy_qp()
57 destroys the QP
58 .I qp\fR.
59 .SH "RETURN VALUE"
60 .B ibv_create_qp()
61 returns a pointer to the created QP, or NULL if the request fails.
62 Check the QP number (\fBqp_num\fR) in the returned QP.
63 .PP
64 .B ibv_destroy_qp()
65 returns 0 on success, or the value of errno on failure (which indicates the failure reason).
66 .SH "NOTES"
67 .B ibv_create_qp()
68 will fail if a it is asked to create QP of a type other than
69 .B IBV_QPT_RC
70 or
71 .B IBV_QPT_UD
72 associated with an SRQ.
73 .PP
74 The attributes max_recv_wr and max_recv_sge are ignored by
75 .B ibv_create_qp()
76 if the QP is to be associated with an SRQ.
77 .PP
78 .B ibv_destroy_qp()
79 fails if the QP is attached to a multicast group.
80 .SH "SEE ALSO"
81 .BR ibv_alloc_pd (3),
82 .BR ibv_modify_qp (3),
83 .BR ibv_query_qp (3)
84 .SH "AUTHORS"
85 .TP
86 Dotan Barak <dotanb@mellanox.co.il>