xref: /freebsd/contrib/ofed/libirdma/abi.h (revision 5b5f7d0e77a9eee73eb5d596f43aef4e1a3674d8)
1cdcd52d4SBartosz Sobczak /*-
2cdcd52d4SBartosz Sobczak  * SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB
3cdcd52d4SBartosz Sobczak  *
4*5b5f7d0eSBartosz Sobczak  * Copyright (C) 2019 - 2023 Intel Corporation
5cdcd52d4SBartosz Sobczak  *
6cdcd52d4SBartosz Sobczak  * This software is available to you under a choice of one of two
7cdcd52d4SBartosz Sobczak  * licenses.  You may choose to be licensed under the terms of the GNU
8cdcd52d4SBartosz Sobczak  * General Public License (GPL) Version 2, available from the file
9cdcd52d4SBartosz Sobczak  * COPYING in the main directory of this source tree, or the
10cdcd52d4SBartosz Sobczak  * OpenFabrics.org BSD license below:
11cdcd52d4SBartosz Sobczak  *
12cdcd52d4SBartosz Sobczak  *   Redistribution and use in source and binary forms, with or
13cdcd52d4SBartosz Sobczak  *   without modification, are permitted provided that the following
14cdcd52d4SBartosz Sobczak  *   conditions are met:
15cdcd52d4SBartosz Sobczak  *
16cdcd52d4SBartosz Sobczak  *    - Redistributions of source code must retain the above
17cdcd52d4SBartosz Sobczak  *	copyright notice, this list of conditions and the following
18cdcd52d4SBartosz Sobczak  *	disclaimer.
19cdcd52d4SBartosz Sobczak  *
20cdcd52d4SBartosz Sobczak  *    - Redistributions in binary form must reproduce the above
21cdcd52d4SBartosz Sobczak  *	copyright notice, this list of conditions and the following
22cdcd52d4SBartosz Sobczak  *	disclaimer in the documentation and/or other materials
23cdcd52d4SBartosz Sobczak  *	provided with the distribution.
24cdcd52d4SBartosz Sobczak  *
25cdcd52d4SBartosz Sobczak  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26cdcd52d4SBartosz Sobczak  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27cdcd52d4SBartosz Sobczak  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28cdcd52d4SBartosz Sobczak  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
29cdcd52d4SBartosz Sobczak  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
30cdcd52d4SBartosz Sobczak  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
31cdcd52d4SBartosz Sobczak  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32cdcd52d4SBartosz Sobczak  * SOFTWARE.
33cdcd52d4SBartosz Sobczak  */
34cdcd52d4SBartosz Sobczak 
35cdcd52d4SBartosz Sobczak #ifndef PROVIDER_IRDMA_ABI_H
36cdcd52d4SBartosz Sobczak #define PROVIDER_IRDMA_ABI_H
37cdcd52d4SBartosz Sobczak 
38cdcd52d4SBartosz Sobczak #include "irdma.h"
39cdcd52d4SBartosz Sobczak #include <infiniband/kern-abi.h>
40cdcd52d4SBartosz Sobczak #include "irdma-abi.h"
41cdcd52d4SBartosz Sobczak 
42cdcd52d4SBartosz Sobczak #define IRDMA_MIN_ABI_VERSION	0
43cdcd52d4SBartosz Sobczak #define IRDMA_MAX_ABI_VERSION	5
44cdcd52d4SBartosz Sobczak 
45cdcd52d4SBartosz Sobczak struct irdma_ualloc_pd_resp {
46cdcd52d4SBartosz Sobczak 	struct ibv_alloc_pd_resp	ibv_resp;
47cdcd52d4SBartosz Sobczak 	__u32 pd_id;
48cdcd52d4SBartosz Sobczak 	__u8 rsvd[4];
49cdcd52d4SBartosz Sobczak 
50cdcd52d4SBartosz Sobczak };
51cdcd52d4SBartosz Sobczak struct irdma_ucreate_cq {
52cdcd52d4SBartosz Sobczak 	struct ibv_create_cq	ibv_cmd;
53cdcd52d4SBartosz Sobczak 	__aligned_u64 user_cq_buf;
54cdcd52d4SBartosz Sobczak 	__aligned_u64 user_shadow_area;
55cdcd52d4SBartosz Sobczak 
56cdcd52d4SBartosz Sobczak };
57cdcd52d4SBartosz Sobczak struct irdma_ucreate_cq_resp {
58cdcd52d4SBartosz Sobczak 	struct ibv_create_cq_resp	ibv_resp;
59cdcd52d4SBartosz Sobczak 	__u32 cq_id;
60cdcd52d4SBartosz Sobczak 	__u32 cq_size;
61cdcd52d4SBartosz Sobczak 
62cdcd52d4SBartosz Sobczak };
63cdcd52d4SBartosz Sobczak struct irdma_ucreate_cq_ex {
64cdcd52d4SBartosz Sobczak 	struct ibv_create_cq_ex	ibv_cmd;
65cdcd52d4SBartosz Sobczak 	__aligned_u64 user_cq_buf;
66cdcd52d4SBartosz Sobczak 	__aligned_u64 user_shadow_area;
67cdcd52d4SBartosz Sobczak 
68cdcd52d4SBartosz Sobczak };
69cdcd52d4SBartosz Sobczak struct irdma_ucreate_cq_ex_resp {
70cdcd52d4SBartosz Sobczak 	struct ibv_create_cq_resp_ex	ibv_resp;
71cdcd52d4SBartosz Sobczak 	__u32 cq_id;
72cdcd52d4SBartosz Sobczak 	__u32 cq_size;
73cdcd52d4SBartosz Sobczak 
74cdcd52d4SBartosz Sobczak };
75cdcd52d4SBartosz Sobczak struct irdma_uresize_cq {
76cdcd52d4SBartosz Sobczak 	struct ibv_resize_cq	ibv_cmd;
77cdcd52d4SBartosz Sobczak 	__aligned_u64 user_cq_buffer;
78cdcd52d4SBartosz Sobczak 
79cdcd52d4SBartosz Sobczak };
80cdcd52d4SBartosz Sobczak struct irdma_uresize_cq_resp {
81cdcd52d4SBartosz Sobczak 	struct ibv_resize_cq_resp	ibv_resp;
82cdcd52d4SBartosz Sobczak 
83cdcd52d4SBartosz Sobczak };
84cdcd52d4SBartosz Sobczak struct irdma_ucreate_qp {
85cdcd52d4SBartosz Sobczak 	struct ibv_create_qp	ibv_cmd;
86cdcd52d4SBartosz Sobczak 	__aligned_u64 user_wqe_bufs;
87cdcd52d4SBartosz Sobczak 	__aligned_u64 user_compl_ctx;
88*5b5f7d0eSBartosz Sobczak 	__aligned_u64 comp_mask;
89cdcd52d4SBartosz Sobczak 
90cdcd52d4SBartosz Sobczak };
91cdcd52d4SBartosz Sobczak struct irdma_ucreate_qp_resp {
92cdcd52d4SBartosz Sobczak 	struct ibv_create_qp_resp	ibv_resp;
93cdcd52d4SBartosz Sobczak 	__u32 qp_id;
94cdcd52d4SBartosz Sobczak 	__u32 actual_sq_size;
95cdcd52d4SBartosz Sobczak 	__u32 actual_rq_size;
96cdcd52d4SBartosz Sobczak 	__u32 irdma_drv_opt;
97cdcd52d4SBartosz Sobczak 	__u16 push_idx;
98cdcd52d4SBartosz Sobczak 	__u8 lsmm;
99cdcd52d4SBartosz Sobczak 	__u8 rsvd;
100cdcd52d4SBartosz Sobczak 	__u32 qp_caps;
101*5b5f7d0eSBartosz Sobczak 	__aligned_u64 comp_mask;
102*5b5f7d0eSBartosz Sobczak 	__u8 start_wqe_idx;
103*5b5f7d0eSBartosz Sobczak 	__u8 rsvd2[7];
104cdcd52d4SBartosz Sobczak 
105cdcd52d4SBartosz Sobczak };
106cdcd52d4SBartosz Sobczak struct irdma_umodify_qp_resp {
107cdcd52d4SBartosz Sobczak 	struct ibv_modify_qp_resp_ex	ibv_resp;
108cdcd52d4SBartosz Sobczak 	__aligned_u64 push_wqe_mmap_key;
109cdcd52d4SBartosz Sobczak 	__aligned_u64 push_db_mmap_key;
110cdcd52d4SBartosz Sobczak 	__u16 push_offset;
111cdcd52d4SBartosz Sobczak 	__u8 push_valid;
112cdcd52d4SBartosz Sobczak 	__u8 rd_fence_rate;
113cdcd52d4SBartosz Sobczak 	__u8 rsvd[4];
114cdcd52d4SBartosz Sobczak 
115cdcd52d4SBartosz Sobczak };
116cdcd52d4SBartosz Sobczak struct irdma_get_context {
117cdcd52d4SBartosz Sobczak 	struct ibv_get_context	ibv_cmd;
118cdcd52d4SBartosz Sobczak 	__u32 rsvd32;
119cdcd52d4SBartosz Sobczak 	__u8 userspace_ver;
120cdcd52d4SBartosz Sobczak 	__u8 rsvd8[3];
12135105900SBartosz Sobczak 	__aligned_u64 comp_mask;
122cdcd52d4SBartosz Sobczak 
123cdcd52d4SBartosz Sobczak };
124cdcd52d4SBartosz Sobczak struct irdma_get_context_resp {
125cdcd52d4SBartosz Sobczak 	struct ibv_get_context_resp	ibv_resp;
126cdcd52d4SBartosz Sobczak 	__u32 max_pds;
127cdcd52d4SBartosz Sobczak 	__u32 max_qps;
128cdcd52d4SBartosz Sobczak 	__u32 wq_size; /* size of the WQs (SQ+RQ) in the mmaped area */
129cdcd52d4SBartosz Sobczak 	__u8 kernel_ver;
130cdcd52d4SBartosz Sobczak 	__u8 rsvd[3];
131cdcd52d4SBartosz Sobczak 	__aligned_u64 feature_flags;
132cdcd52d4SBartosz Sobczak 	__aligned_u64 db_mmap_key;
133cdcd52d4SBartosz Sobczak 	__u32 max_hw_wq_frags;
134cdcd52d4SBartosz Sobczak 	__u32 max_hw_read_sges;
135cdcd52d4SBartosz Sobczak 	__u32 max_hw_inline;
136cdcd52d4SBartosz Sobczak 	__u32 max_hw_rq_quanta;
137cdcd52d4SBartosz Sobczak 	__u32 max_hw_wq_quanta;
138cdcd52d4SBartosz Sobczak 	__u32 min_hw_cq_size;
139cdcd52d4SBartosz Sobczak 	__u32 max_hw_cq_size;
140cdcd52d4SBartosz Sobczak 	__u16 max_hw_sq_chunk;
141cdcd52d4SBartosz Sobczak 	__u8 hw_rev;
142cdcd52d4SBartosz Sobczak 	__u8 rsvd2;
14335105900SBartosz Sobczak 	__aligned_u64 comp_mask;
144*5b5f7d0eSBartosz Sobczak 	__u16 min_hw_wq_size;
145*5b5f7d0eSBartosz Sobczak 	__u8 rsvd3[6];
146cdcd52d4SBartosz Sobczak 
147cdcd52d4SBartosz Sobczak };
148cdcd52d4SBartosz Sobczak struct irdma_ureg_mr {
149cdcd52d4SBartosz Sobczak 	struct ibv_reg_mr	ibv_cmd;
150cdcd52d4SBartosz Sobczak 	__u16 reg_type; /* enum irdma_memreg_type */
151cdcd52d4SBartosz Sobczak 	__u16 cq_pages;
152cdcd52d4SBartosz Sobczak 	__u16 rq_pages;
153cdcd52d4SBartosz Sobczak 	__u16 sq_pages;
154cdcd52d4SBartosz Sobczak 
155cdcd52d4SBartosz Sobczak };
156777e472cSBartosz Sobczak struct irdma_urereg_mr {
157777e472cSBartosz Sobczak 	struct ibv_rereg_mr	ibv_cmd;
158777e472cSBartosz Sobczak 	__u16 reg_type; /* enum irdma_memreg_type */
159777e472cSBartosz Sobczak 	__u16 cq_pages;
160777e472cSBartosz Sobczak 	__u16 rq_pages;
161777e472cSBartosz Sobczak 	__u16 sq_pages;
162777e472cSBartosz Sobczak 
163777e472cSBartosz Sobczak };
164cdcd52d4SBartosz Sobczak struct irdma_ucreate_ah_resp {
165cdcd52d4SBartosz Sobczak 	struct ibv_create_ah_resp	ibv_resp;
166cdcd52d4SBartosz Sobczak 	__u32 ah_id;
167cdcd52d4SBartosz Sobczak 	__u8 rsvd[4];
168cdcd52d4SBartosz Sobczak 
169cdcd52d4SBartosz Sobczak };
170cdcd52d4SBartosz Sobczak 
171cdcd52d4SBartosz Sobczak struct irdma_modify_qp_cmd {
172cdcd52d4SBartosz Sobczak 	struct ibv_modify_qp_ex ibv_cmd;
173cdcd52d4SBartosz Sobczak 	__u8 sq_flush;
174cdcd52d4SBartosz Sobczak 	__u8 rq_flush;
175cdcd52d4SBartosz Sobczak 	__u8 rsvd[6];
176cdcd52d4SBartosz Sobczak };
177cdcd52d4SBartosz Sobczak 
178cdcd52d4SBartosz Sobczak struct irdma_query_device_ex {
179cdcd52d4SBartosz Sobczak 	struct ibv_query_device_ex ibv_cmd;
180cdcd52d4SBartosz Sobczak };
181cdcd52d4SBartosz Sobczak 
182cdcd52d4SBartosz Sobczak struct irdma_query_device_ex_resp {
183cdcd52d4SBartosz Sobczak 	struct ibv_query_device_resp_ex ibv_resp;
184cdcd52d4SBartosz Sobczak 	__u32				comp_mask;
185cdcd52d4SBartosz Sobczak 	__u32				response_length;
186cdcd52d4SBartosz Sobczak 	struct ibv_odp_caps_resp	odp_caps;
187cdcd52d4SBartosz Sobczak 	__u64				timestamp_mask;
188cdcd52d4SBartosz Sobczak 	__u64				hca_core_clock;
189cdcd52d4SBartosz Sobczak 	__u64				device_cap_flags_ex;
190cdcd52d4SBartosz Sobczak 	struct ibv_rss_caps_resp	rss_caps;
191cdcd52d4SBartosz Sobczak 	__u32				max_wq_type_rq;
192cdcd52d4SBartosz Sobczak 	__u32				raw_packet_caps;
193cdcd52d4SBartosz Sobczak 	struct ibv_tso_caps		tso_caps;
194cdcd52d4SBartosz Sobczak };
195cdcd52d4SBartosz Sobczak #endif /* PROVIDER_IRDMA_ABI_H */
196