2 * Copyright (c) 2018-2019 Cavium, Inc.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE.
31 #ifndef __QLNXR_VERBS_H__
32 #define __QLNXR_VERBS_H__
34 extern int qlnxr_iw_query_gid(struct ib_device *,
39 extern int qlnxr_query_gid(struct ib_device *,
44 extern struct ib_srq *qlnxr_create_srq(struct ib_pd *,
45 struct ib_srq_init_attr *,
48 extern int qlnxr_destroy_srq(struct ib_srq *);
51 extern int qlnxr_modify_srq(struct ib_srq *,
53 enum ib_srq_attr_mask,
56 extern int qlnxr_query_srq(struct ib_srq *,
57 struct ib_srq_attr *);
59 extern int qlnxr_post_srq_recv(struct ib_srq *,
61 struct ib_recv_wr **bad_recv_wr);
63 #if __FreeBSD_version < 1102000
64 extern int qlnxr_query_device(struct ib_device *, struct ib_device_attr *);
66 extern int qlnxr_query_device(struct ib_device *, struct ib_device_attr *,
68 extern int qlnxr_get_port_immutable(struct ib_device *ibdev, u8 port_num,
69 struct ib_port_immutable *immutable);
72 extern int qlnxr_query_port(struct ib_device *,
74 struct ib_port_attr *props);
76 extern int qlnxr_modify_port(struct ib_device *,
79 struct ib_port_modify *props);
81 extern enum rdma_link_layer qlnxr_link_layer(struct ib_device *device,
84 struct ib_pd *qlnxr_alloc_pd(struct ib_device *,
88 extern int qlnxr_dealloc_pd(struct ib_pd *pd);
90 #if __FreeBSD_version >= 1102000
91 extern struct ib_cq *qlnxr_create_cq(struct ib_device *ibdev,
92 const struct ib_cq_init_attr *attr,
93 struct ib_ucontext *ib_ctx,
94 struct ib_udata *udata);
96 #if __FreeBSD_version >= 1100000
97 extern struct ib_cq *qlnxr_create_cq(struct ib_device *ibdev,
98 struct ib_cq_init_attr *attr,
99 struct ib_ucontext *ib_ctx,
100 struct ib_udata *udata);
102 extern struct ib_cq *qlnxr_create_cq(struct ib_device *ibdev,
105 struct ib_ucontext *ib_ctx,
106 struct ib_udata *udata);
108 #endif /* #if __FreeBSD_version >= 1102000 */
110 extern int qlnxr_destroy_cq(struct ib_cq *);
112 extern int qlnxr_resize_cq(struct ib_cq *,
116 extern int qlnxr_poll_cq(struct ib_cq *,
121 extern struct ib_qp *qlnxr_create_qp(struct ib_pd *,
122 struct ib_qp_init_attr *attrs,
125 extern int qlnxr_modify_qp(struct ib_qp *,
126 struct ib_qp_attr *attr,
128 struct ib_udata *udata);
130 extern int qlnxr_query_qp(struct ib_qp *,
131 struct ib_qp_attr *qp_attr,
133 struct ib_qp_init_attr *);
135 extern int qlnxr_destroy_qp(struct ib_qp *);
137 extern int qlnxr_query_pkey(struct ib_device *,
142 #if __FreeBSD_version >= 1102000
143 extern struct ib_ah *qlnxr_create_ah(struct ib_pd *ibpd,
144 struct ib_ah_attr *attr, struct ib_udata *udata);
146 extern struct ib_ah *qlnxr_create_ah(struct ib_pd *ibpd,
147 struct ib_ah_attr *attr);
148 #endif /* #if __FreeBSD_version >= 1102000 */
150 extern int qlnxr_destroy_ah(struct ib_ah *ibah);
152 extern int qlnxr_query_ah(struct ib_ah *ibah,
153 struct ib_ah_attr *attr);
155 extern int qlnxr_modify_ah(struct ib_ah *ibah,
156 struct ib_ah_attr *attr);
158 #if __FreeBSD_version >= 1102000
159 extern int qlnxr_process_mad(struct ib_device *ibdev,
160 int process_mad_flags,
162 const struct ib_wc *in_wc,
163 const struct ib_grh *in_grh,
164 const struct ib_mad_hdr *mad_hdr,
166 struct ib_mad_hdr *out_mad,
167 size_t *out_mad_size,
168 u16 *out_mad_pkey_index);
170 extern int qlnxr_process_mad(struct ib_device *ibdev,
171 int process_mad_flags,
174 struct ib_grh *in_grh,
175 struct ib_mad *in_mad,
176 struct ib_mad *out_mad);
177 #endif /* #if __FreeBSD_version >= 1102000 */
179 extern int qlnxr_post_send(struct ib_qp *,
181 struct ib_send_wr **bad_wr);
183 extern int qlnxr_post_recv(struct ib_qp *,
185 struct ib_recv_wr **bad_wr);
187 extern int qlnxr_arm_cq(struct ib_cq *,
188 enum ib_cq_notify_flags flags);
190 extern struct ib_mr *qlnxr_get_dma_mr(struct ib_pd *,
193 #if __FreeBSD_version < 1102000
194 extern struct ib_mr *qlnxr_reg_kernel_mr(struct ib_pd *,
195 struct ib_phys_buf *buffer_list,
199 #endif /* #if __FreeBSD_version < 1102000 */
201 extern int qlnxr_dereg_mr(struct ib_mr *);
203 #if __FreeBSD_version >= 1102000
204 extern struct ib_mr *qlnxr_reg_user_mr(struct ib_pd *,
211 extern struct ib_mr *qlnxr_reg_user_mr(struct ib_pd *,
218 #endif /* #if __FreeBSD_version >= 1102000 */
220 #if __FreeBSD_version >= 1102000
222 extern struct ib_mr *qlnxr_alloc_mr(struct ib_pd *pd,
223 enum ib_mr_type mr_type, u32 max_num_sg);
224 extern int qlnxr_map_mr_sg(struct ib_mr *mr, struct scatterlist *sg,
225 int sg_nents, unsigned int *sg_offset);
228 extern struct ib_mr *qlnxr_alloc_frmr(struct ib_pd *pd,
229 int max_page_list_len);
232 extern struct ib_fast_reg_page_list *qlnxr_alloc_frmr_page_list(
233 struct ib_device *ibdev,
236 extern void qlnxr_free_frmr_page_list(struct ib_fast_reg_page_list *page_list);
238 #endif /* #if __FreeBSD_version >= 1102000 */
240 extern struct ib_ucontext *qlnxr_alloc_ucontext(struct ib_device *ibdev,
241 struct ib_udata *udata);
243 extern int qlnxr_dealloc_ucontext(struct ib_ucontext *ibctx);
246 extern int qlnxr_mmap(struct ib_ucontext *, struct vm_area_struct *vma);
248 extern int qlnxr_iw_connect(struct iw_cm_id *cm_id,
249 struct iw_cm_conn_param *conn_param);
251 extern int qlnxr_iw_create_listen(struct iw_cm_id *cm_id, int backlog);
253 void qlnxr_iw_destroy_listen(struct iw_cm_id *cm_id);
255 extern int qlnxr_iw_accept(struct iw_cm_id *cm_id,
256 struct iw_cm_conn_param *conn_param);
258 extern int qlnxr_iw_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len);
260 extern void qlnxr_iw_qp_add_ref(struct ib_qp *qp);
262 extern void qlnxr_iw_qp_rem_ref(struct ib_qp *qp);
264 extern struct ib_qp *qlnxr_iw_get_qp(struct ib_device *dev, int qpn);
266 #endif /* #ifndef __QLNXR_VERBS_H__ */