xref: /linux/include/uapi/rdma/ionic-abi.h (revision 1b78070aaef63512688aebfbc82365ef9d6660f1)
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 /* Copyright (C) 2018-2025, Advanced Micro Devices, Inc */
3 
4 #ifndef IONIC_ABI_H
5 #define IONIC_ABI_H
6 
7 #include <linux/types.h>
8 
9 #define IONIC_ABI_VERSION	1
10 
11 #define IONIC_EXPDB_64		1
12 #define IONIC_EXPDB_128		2
13 #define IONIC_EXPDB_256		4
14 #define IONIC_EXPDB_512		8
15 
16 #define IONIC_EXPDB_SQ		1
17 #define IONIC_EXPDB_RQ		2
18 
19 #define IONIC_CMB_ENABLE	1
20 #define IONIC_CMB_REQUIRE	2
21 #define IONIC_CMB_EXPDB		4
22 #define IONIC_CMB_WC		8
23 #define IONIC_CMB_UC		16
24 
25 struct ionic_ctx_req {
26 	__u32 rsvd[2];
27 };
28 
29 struct ionic_ctx_resp {
30 	__u32 rsvd;
31 	__u32 page_shift;
32 
33 	__aligned_u64 dbell_offset;
34 
35 	__u16 version;
36 	__u8 qp_opcodes;
37 	__u8 admin_opcodes;
38 
39 	__u8 sq_qtype;
40 	__u8 rq_qtype;
41 	__u8 cq_qtype;
42 	__u8 admin_qtype;
43 
44 	__u8 max_stride;
45 	__u8 max_spec;
46 	__u8 udma_count;
47 	__u8 expdb_mask;
48 	__u8 expdb_qtypes;
49 
50 	__u8 rsvd2[3];
51 	__aligned_u64 phc_offset;
52 };
53 
54 struct ionic_qdesc {
55 	__aligned_u64 addr;
56 	__u32 size;
57 	__u16 mask;
58 	__u8 depth_log2;
59 	__u8 stride_log2;
60 };
61 
62 struct ionic_ah_resp {
63 	__u32 ahid;
64 	__u32 pad;
65 };
66 
67 struct ionic_cq_req {
68 	struct ionic_qdesc cq[2];
69 	__u8 udma_mask;
70 	__u8 rsvd[7];
71 };
72 
73 struct ionic_cq_resp {
74 	__u32 cqid[2];
75 	__u8 udma_mask;
76 	__u8 rsvd[7];
77 };
78 
79 struct ionic_qp_req {
80 	struct ionic_qdesc sq;
81 	struct ionic_qdesc rq;
82 	__u8 sq_spec;
83 	__u8 rq_spec;
84 	__u8 sq_cmb;
85 	__u8 rq_cmb;
86 	__u8 udma_mask;
87 	__u8 rsvd[3];
88 };
89 
90 struct ionic_qp_resp {
91 	__u32 qpid;
92 	__u8 sq_cmb;
93 	__u8 rq_cmb;
94 	__u8 udma_idx;
95 	__u8 rsvd[1];
96 	__aligned_u64 sq_cmb_offset;
97 	__aligned_u64 rq_cmb_offset;
98 };
99 
100 struct ionic_srq_req {
101 	struct ionic_qdesc rq;
102 	__u8 rq_spec;
103 	__u8 rq_cmb;
104 	__u8 udma_mask;
105 	__u8 rsvd[5];
106 };
107 
108 struct ionic_srq_resp {
109 	__u32 qpid;
110 	__u8 rq_cmb;
111 	__u8 udma_idx;
112 	__u8 rsvd[2];
113 	__aligned_u64 rq_cmb_offset;
114 };
115 
116 #endif /* IONIC_ABI_H */
117