xref: /freebsd/sys/dev/qlnx/qlnxr/qlnxr_verbs.h (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
1fa790ea9SDavid C Somayajulu /*
2fa790ea9SDavid C Somayajulu  * Copyright (c) 2018-2019 Cavium, Inc.
3fa790ea9SDavid C Somayajulu  * All rights reserved.
4fa790ea9SDavid C Somayajulu  *
5fa790ea9SDavid C Somayajulu  *  Redistribution and use in source and binary forms, with or without
6fa790ea9SDavid C Somayajulu  *  modification, are permitted provided that the following conditions
7fa790ea9SDavid C Somayajulu  *  are met:
8fa790ea9SDavid C Somayajulu  *
9fa790ea9SDavid C Somayajulu  *  1. Redistributions of source code must retain the above copyright
10fa790ea9SDavid C Somayajulu  *     notice, this list of conditions and the following disclaimer.
11fa790ea9SDavid C Somayajulu  *  2. Redistributions in binary form must reproduce the above copyright
12fa790ea9SDavid C Somayajulu  *     notice, this list of conditions and the following disclaimer in the
13fa790ea9SDavid C Somayajulu  *     documentation and/or other materials provided with the distribution.
14fa790ea9SDavid C Somayajulu  *
15fa790ea9SDavid C Somayajulu  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16fa790ea9SDavid C Somayajulu  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17fa790ea9SDavid C Somayajulu  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18fa790ea9SDavid C Somayajulu  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19fa790ea9SDavid C Somayajulu  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20fa790ea9SDavid C Somayajulu  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21fa790ea9SDavid C Somayajulu  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22fa790ea9SDavid C Somayajulu  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23fa790ea9SDavid C Somayajulu  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24fa790ea9SDavid C Somayajulu  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25fa790ea9SDavid C Somayajulu  *  POSSIBILITY OF SUCH DAMAGE.
26fa790ea9SDavid C Somayajulu  *
27fa790ea9SDavid C Somayajulu  */
28fa790ea9SDavid C Somayajulu 
29fa790ea9SDavid C Somayajulu #ifndef __QLNXR_VERBS_H__
30fa790ea9SDavid C Somayajulu #define __QLNXR_VERBS_H__
31fa790ea9SDavid C Somayajulu 
32fa790ea9SDavid C Somayajulu extern int qlnxr_iw_query_gid(struct ib_device *,
33fa790ea9SDavid C Somayajulu 			uint8_t port,
34fa790ea9SDavid C Somayajulu 			int index,
35fa790ea9SDavid C Somayajulu 			union ib_gid *gid);
36fa790ea9SDavid C Somayajulu 
37fa790ea9SDavid C Somayajulu extern int qlnxr_query_gid(struct ib_device *,
38fa790ea9SDavid C Somayajulu 			u8 port,
39fa790ea9SDavid C Somayajulu 			int index,
40fa790ea9SDavid C Somayajulu 			union ib_gid *gid);
41fa790ea9SDavid C Somayajulu 
42*b633e08cSHans Petter Selasky extern int qlnxr_create_srq(struct ib_srq *ibsrq,
43fa790ea9SDavid C Somayajulu 			struct ib_srq_init_attr *,
44fa790ea9SDavid C Somayajulu 			struct ib_udata *);
45fa790ea9SDavid C Somayajulu 
46*b633e08cSHans Petter Selasky extern void qlnxr_destroy_srq(struct ib_srq *,
47*b633e08cSHans Petter Selasky 			struct ib_udata *);
48fa790ea9SDavid C Somayajulu 
49fa790ea9SDavid C Somayajulu extern int qlnxr_modify_srq(struct ib_srq *,
50fa790ea9SDavid C Somayajulu 			struct ib_srq_attr *,
51fa790ea9SDavid C Somayajulu 			enum ib_srq_attr_mask,
52fa790ea9SDavid C Somayajulu 			struct ib_udata *);
53fa790ea9SDavid C Somayajulu 
54fa790ea9SDavid C Somayajulu extern int qlnxr_query_srq(struct ib_srq *,
55fa790ea9SDavid C Somayajulu 			struct ib_srq_attr *);
56fa790ea9SDavid C Somayajulu 
57fa790ea9SDavid C Somayajulu extern int qlnxr_post_srq_recv(struct ib_srq *,
58c3987b8eSHans Petter Selasky 			const struct ib_recv_wr *,
59c3987b8eSHans Petter Selasky 			const struct ib_recv_wr **bad_recv_wr);
60fa790ea9SDavid C Somayajulu 
61fa790ea9SDavid C Somayajulu extern int qlnxr_query_device(struct ib_device *, struct ib_device_attr *,
62fa790ea9SDavid C Somayajulu 		struct ib_udata *);
63fa790ea9SDavid C Somayajulu extern int qlnxr_get_port_immutable(struct ib_device *ibdev, u8 port_num,
64fa790ea9SDavid C Somayajulu 		struct ib_port_immutable *immutable);
65fa790ea9SDavid C Somayajulu 
66fa790ea9SDavid C Somayajulu extern int qlnxr_query_port(struct ib_device *,
67fa790ea9SDavid C Somayajulu 			u8 port,
68fa790ea9SDavid C Somayajulu 			struct ib_port_attr *props);
69fa790ea9SDavid C Somayajulu 
70fa790ea9SDavid C Somayajulu extern int qlnxr_modify_port(struct ib_device *,
71fa790ea9SDavid C Somayajulu 			u8 port,
72fa790ea9SDavid C Somayajulu 			int mask,
73fa790ea9SDavid C Somayajulu 			struct ib_port_modify *props);
74fa790ea9SDavid C Somayajulu 
75fa790ea9SDavid C Somayajulu extern enum rdma_link_layer qlnxr_link_layer(struct ib_device *device,
76fa790ea9SDavid C Somayajulu 			uint8_t port_num);
77fa790ea9SDavid C Somayajulu 
78*b633e08cSHans Petter Selasky extern int qlnxr_alloc_pd(struct ib_pd *ibpd, struct ib_udata *);
79fa790ea9SDavid C Somayajulu 
80*b633e08cSHans Petter Selasky extern void qlnxr_dealloc_pd(struct ib_pd *pd, struct ib_udata *udata);
81fa790ea9SDavid C Somayajulu 
82*b633e08cSHans Petter Selasky extern int qlnxr_create_cq(struct ib_cq *ibcq,
83fa790ea9SDavid C Somayajulu 		   const struct ib_cq_init_attr *attr,
84fa790ea9SDavid C Somayajulu 		   struct ib_udata *udata);
85fa790ea9SDavid C Somayajulu 
86*b633e08cSHans Petter Selasky extern void qlnxr_destroy_cq(struct ib_cq *, struct ib_udata *);
87fa790ea9SDavid C Somayajulu 
88fa790ea9SDavid C Somayajulu extern int qlnxr_resize_cq(struct ib_cq *,
89fa790ea9SDavid C Somayajulu 			int cqe,
90fa790ea9SDavid C Somayajulu 			struct ib_udata *);
91fa790ea9SDavid C Somayajulu 
92fa790ea9SDavid C Somayajulu extern int qlnxr_poll_cq(struct ib_cq *,
93fa790ea9SDavid C Somayajulu 			int num_entries,
94fa790ea9SDavid C Somayajulu 			struct ib_wc *wc);
95fa790ea9SDavid C Somayajulu 
96fa790ea9SDavid C Somayajulu extern struct ib_qp *qlnxr_create_qp(struct ib_pd *,
97fa790ea9SDavid C Somayajulu 		       struct ib_qp_init_attr *attrs,
98fa790ea9SDavid C Somayajulu 		       struct ib_udata *);
99fa790ea9SDavid C Somayajulu 
100fa790ea9SDavid C Somayajulu extern int qlnxr_modify_qp(struct ib_qp *,
101fa790ea9SDavid C Somayajulu 			struct ib_qp_attr *attr,
102fa790ea9SDavid C Somayajulu 			int attr_mask,
103fa790ea9SDavid C Somayajulu 			struct ib_udata *udata);
104fa790ea9SDavid C Somayajulu 
105fa790ea9SDavid C Somayajulu extern int qlnxr_query_qp(struct ib_qp *,
106fa790ea9SDavid C Somayajulu 			struct ib_qp_attr *qp_attr,
107fa790ea9SDavid C Somayajulu 			int qp_attr_mask,
108fa790ea9SDavid C Somayajulu 			struct ib_qp_init_attr *);
109fa790ea9SDavid C Somayajulu 
110*b633e08cSHans Petter Selasky extern int qlnxr_destroy_qp(struct ib_qp *, struct ib_udata *);
111fa790ea9SDavid C Somayajulu 
112fa790ea9SDavid C Somayajulu extern int qlnxr_query_pkey(struct ib_device *,
113fa790ea9SDavid C Somayajulu 			u8 port,
114fa790ea9SDavid C Somayajulu 			u16 index,
115fa790ea9SDavid C Somayajulu 			u16 *pkey);
116fa790ea9SDavid C Somayajulu 
117*b633e08cSHans Petter Selasky extern int qlnxr_create_ah(struct ib_ah *ibah,
118*b633e08cSHans Petter Selasky 			struct ib_ah_attr *attr, u32 flags,
119*b633e08cSHans Petter Selasky 			struct ib_udata *udata);
120*b633e08cSHans Petter Selasky extern void qlnxr_destroy_ah(struct ib_ah *ibah, u32 flags);
121fa790ea9SDavid C Somayajulu 
122fa790ea9SDavid C Somayajulu extern int qlnxr_query_ah(struct ib_ah *ibah,
123fa790ea9SDavid C Somayajulu 			struct ib_ah_attr *attr);
124fa790ea9SDavid C Somayajulu 
125fa790ea9SDavid C Somayajulu extern int qlnxr_modify_ah(struct ib_ah *ibah,
126fa790ea9SDavid C Somayajulu 			struct ib_ah_attr *attr);
127fa790ea9SDavid C Somayajulu 
128fa790ea9SDavid C Somayajulu extern int qlnxr_process_mad(struct ib_device *ibdev,
129fa790ea9SDavid C Somayajulu 			int process_mad_flags,
130fa790ea9SDavid C Somayajulu 			u8 port_num,
131fa790ea9SDavid C Somayajulu 			const struct ib_wc *in_wc,
132fa790ea9SDavid C Somayajulu 			const struct ib_grh *in_grh,
133fa790ea9SDavid C Somayajulu 			const struct ib_mad_hdr *mad_hdr,
134fa790ea9SDavid C Somayajulu 			size_t in_mad_size,
135fa790ea9SDavid C Somayajulu 			struct ib_mad_hdr *out_mad,
136fa790ea9SDavid C Somayajulu 			size_t *out_mad_size,
137fa790ea9SDavid C Somayajulu 			u16 *out_mad_pkey_index);
138fa790ea9SDavid C Somayajulu 
139fa790ea9SDavid C Somayajulu extern int qlnxr_post_send(struct ib_qp *,
140c3987b8eSHans Petter Selasky 			const struct ib_send_wr *,
141c3987b8eSHans Petter Selasky 			const struct ib_send_wr **bad_wr);
142fa790ea9SDavid C Somayajulu 
143fa790ea9SDavid C Somayajulu extern int qlnxr_post_recv(struct ib_qp *,
144c3987b8eSHans Petter Selasky 			const struct ib_recv_wr *,
145c3987b8eSHans Petter Selasky 			const struct ib_recv_wr **bad_wr);
146fa790ea9SDavid C Somayajulu 
147fa790ea9SDavid C Somayajulu extern int qlnxr_arm_cq(struct ib_cq *,
148fa790ea9SDavid C Somayajulu 			enum ib_cq_notify_flags flags);
149fa790ea9SDavid C Somayajulu 
150fa790ea9SDavid C Somayajulu extern struct ib_mr *qlnxr_get_dma_mr(struct ib_pd *,
151fa790ea9SDavid C Somayajulu 			int acc);
152fa790ea9SDavid C Somayajulu 
153*b633e08cSHans Petter Selasky extern int qlnxr_dereg_mr(struct ib_mr *, struct ib_udata *);
154fa790ea9SDavid C Somayajulu 
155fa790ea9SDavid C Somayajulu extern struct ib_mr *qlnxr_reg_user_mr(struct ib_pd *,
156fa790ea9SDavid C Somayajulu 			u64 start,
157fa790ea9SDavid C Somayajulu 			u64 length,
158fa790ea9SDavid C Somayajulu 			u64 virt,
159fa790ea9SDavid C Somayajulu 			int acc,
160fa790ea9SDavid C Somayajulu 			struct ib_udata *);
161fa790ea9SDavid C Somayajulu 
162fa790ea9SDavid C Somayajulu extern struct ib_mr *qlnxr_alloc_mr(struct ib_pd *pd,
163*b633e08cSHans Petter Selasky 			enum ib_mr_type mr_type, u32 max_num_sg,
164*b633e08cSHans Petter Selasky 			struct ib_udata *udata);
165*b633e08cSHans Petter Selasky 
166fa790ea9SDavid C Somayajulu extern int qlnxr_map_mr_sg(struct ib_mr *mr, struct scatterlist *sg,
167fa790ea9SDavid C Somayajulu 			int sg_nents, unsigned int *sg_offset);
168fa790ea9SDavid C Somayajulu 
169*b633e08cSHans Petter Selasky extern int qlnxr_alloc_ucontext(struct ib_ucontext *uctx,
170fa790ea9SDavid C Somayajulu 				struct ib_udata *udata);
171fa790ea9SDavid C Somayajulu 
172*b633e08cSHans Petter Selasky extern void qlnxr_dealloc_ucontext(struct ib_ucontext *ibctx);
173fa790ea9SDavid C Somayajulu 
174fa790ea9SDavid C Somayajulu extern int qlnxr_mmap(struct ib_ucontext *, struct vm_area_struct *vma);
175fa790ea9SDavid C Somayajulu 
176fa790ea9SDavid C Somayajulu extern int qlnxr_iw_connect(struct iw_cm_id *cm_id,
177fa790ea9SDavid C Somayajulu 		    struct iw_cm_conn_param *conn_param);
178fa790ea9SDavid C Somayajulu 
179fa790ea9SDavid C Somayajulu extern int qlnxr_iw_create_listen(struct iw_cm_id *cm_id, int backlog);
180fa790ea9SDavid C Somayajulu 
181fa790ea9SDavid C Somayajulu void qlnxr_iw_destroy_listen(struct iw_cm_id *cm_id);
182fa790ea9SDavid C Somayajulu 
183fa790ea9SDavid C Somayajulu extern int qlnxr_iw_accept(struct iw_cm_id *cm_id,
184fa790ea9SDavid C Somayajulu 		      struct iw_cm_conn_param *conn_param);
185fa790ea9SDavid C Somayajulu 
186fa790ea9SDavid C Somayajulu extern int qlnxr_iw_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len);
187fa790ea9SDavid C Somayajulu 
188fa790ea9SDavid C Somayajulu extern void qlnxr_iw_qp_add_ref(struct ib_qp *qp);
189fa790ea9SDavid C Somayajulu 
190fa790ea9SDavid C Somayajulu extern void qlnxr_iw_qp_rem_ref(struct ib_qp *qp);
191fa790ea9SDavid C Somayajulu 
192fa790ea9SDavid C Somayajulu extern struct ib_qp *qlnxr_iw_get_qp(struct ib_device *dev, int qpn);
193fa790ea9SDavid C Somayajulu 
194fa790ea9SDavid C Somayajulu #endif /* #ifndef __QLNXR_VERBS_H__ */
195