xref: /aosp_15_r20/bionic/libc/kernel/uapi/rdma/siw-abi.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _SIW_USER_H
8*8d67ca89SAndroid Build Coastguard Worker #define _SIW_USER_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #define SIW_NODE_DESC_COMMON "Software iWARP stack"
11*8d67ca89SAndroid Build Coastguard Worker #define SIW_ABI_VERSION 1
12*8d67ca89SAndroid Build Coastguard Worker #define SIW_MAX_SGE 6
13*8d67ca89SAndroid Build Coastguard Worker #define SIW_UOBJ_MAX_KEY 0x08FFFF
14*8d67ca89SAndroid Build Coastguard Worker #define SIW_INVAL_UOBJ_KEY (SIW_UOBJ_MAX_KEY + 1)
15*8d67ca89SAndroid Build Coastguard Worker struct siw_uresp_create_cq {
16*8d67ca89SAndroid Build Coastguard Worker   __u32 cq_id;
17*8d67ca89SAndroid Build Coastguard Worker   __u32 num_cqe;
18*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 cq_key;
19*8d67ca89SAndroid Build Coastguard Worker };
20*8d67ca89SAndroid Build Coastguard Worker struct siw_uresp_create_qp {
21*8d67ca89SAndroid Build Coastguard Worker   __u32 qp_id;
22*8d67ca89SAndroid Build Coastguard Worker   __u32 num_sqe;
23*8d67ca89SAndroid Build Coastguard Worker   __u32 num_rqe;
24*8d67ca89SAndroid Build Coastguard Worker   __u32 pad;
25*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 sq_key;
26*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 rq_key;
27*8d67ca89SAndroid Build Coastguard Worker };
28*8d67ca89SAndroid Build Coastguard Worker struct siw_ureq_reg_mr {
29*8d67ca89SAndroid Build Coastguard Worker   __u8 stag_key;
30*8d67ca89SAndroid Build Coastguard Worker   __u8 reserved[3];
31*8d67ca89SAndroid Build Coastguard Worker   __u32 pad;
32*8d67ca89SAndroid Build Coastguard Worker };
33*8d67ca89SAndroid Build Coastguard Worker struct siw_uresp_reg_mr {
34*8d67ca89SAndroid Build Coastguard Worker   __u32 stag;
35*8d67ca89SAndroid Build Coastguard Worker   __u32 pad;
36*8d67ca89SAndroid Build Coastguard Worker };
37*8d67ca89SAndroid Build Coastguard Worker struct siw_uresp_create_srq {
38*8d67ca89SAndroid Build Coastguard Worker   __u32 num_rqe;
39*8d67ca89SAndroid Build Coastguard Worker   __u32 pad;
40*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 srq_key;
41*8d67ca89SAndroid Build Coastguard Worker };
42*8d67ca89SAndroid Build Coastguard Worker struct siw_uresp_alloc_ctx {
43*8d67ca89SAndroid Build Coastguard Worker   __u32 dev_id;
44*8d67ca89SAndroid Build Coastguard Worker   __u32 pad;
45*8d67ca89SAndroid Build Coastguard Worker };
46*8d67ca89SAndroid Build Coastguard Worker enum siw_opcode {
47*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_WRITE,
48*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_READ,
49*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_READ_LOCAL_INV,
50*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_SEND,
51*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_SEND_WITH_IMM,
52*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_SEND_REMOTE_INV,
53*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_FETCH_AND_ADD,
54*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_COMP_AND_SWAP,
55*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_RECEIVE,
56*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_READ_RESPONSE,
57*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_INVAL_STAG,
58*8d67ca89SAndroid Build Coastguard Worker   SIW_OP_REG_MR,
59*8d67ca89SAndroid Build Coastguard Worker   SIW_NUM_OPCODES
60*8d67ca89SAndroid Build Coastguard Worker };
61*8d67ca89SAndroid Build Coastguard Worker struct siw_sge {
62*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 laddr;
63*8d67ca89SAndroid Build Coastguard Worker   __u32 length;
64*8d67ca89SAndroid Build Coastguard Worker   __u32 lkey;
65*8d67ca89SAndroid Build Coastguard Worker };
66*8d67ca89SAndroid Build Coastguard Worker #define SIW_MAX_INLINE (sizeof(struct siw_sge) * (SIW_MAX_SGE - 1))
67*8d67ca89SAndroid Build Coastguard Worker #if SIW_MAX_SGE < 2
68*8d67ca89SAndroid Build Coastguard Worker #error "SIW_MAX_SGE must be at least 2"
69*8d67ca89SAndroid Build Coastguard Worker #endif
70*8d67ca89SAndroid Build Coastguard Worker enum siw_wqe_flags {
71*8d67ca89SAndroid Build Coastguard Worker   SIW_WQE_VALID = 1,
72*8d67ca89SAndroid Build Coastguard Worker   SIW_WQE_INLINE = (1 << 1),
73*8d67ca89SAndroid Build Coastguard Worker   SIW_WQE_SIGNALLED = (1 << 2),
74*8d67ca89SAndroid Build Coastguard Worker   SIW_WQE_SOLICITED = (1 << 3),
75*8d67ca89SAndroid Build Coastguard Worker   SIW_WQE_READ_FENCE = (1 << 4),
76*8d67ca89SAndroid Build Coastguard Worker   SIW_WQE_REM_INVAL = (1 << 5),
77*8d67ca89SAndroid Build Coastguard Worker   SIW_WQE_COMPLETED = (1 << 6)
78*8d67ca89SAndroid Build Coastguard Worker };
79*8d67ca89SAndroid Build Coastguard Worker struct siw_sqe {
80*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 id;
81*8d67ca89SAndroid Build Coastguard Worker   __u16 flags;
82*8d67ca89SAndroid Build Coastguard Worker   __u8 num_sge;
83*8d67ca89SAndroid Build Coastguard Worker   __u8 opcode;
84*8d67ca89SAndroid Build Coastguard Worker   __u32 rkey;
85*8d67ca89SAndroid Build Coastguard Worker   union {
86*8d67ca89SAndroid Build Coastguard Worker     __aligned_u64 raddr;
87*8d67ca89SAndroid Build Coastguard Worker     __aligned_u64 base_mr;
88*8d67ca89SAndroid Build Coastguard Worker   };
89*8d67ca89SAndroid Build Coastguard Worker   union {
90*8d67ca89SAndroid Build Coastguard Worker     struct siw_sge sge[SIW_MAX_SGE];
91*8d67ca89SAndroid Build Coastguard Worker     __aligned_u64 access;
92*8d67ca89SAndroid Build Coastguard Worker   };
93*8d67ca89SAndroid Build Coastguard Worker };
94*8d67ca89SAndroid Build Coastguard Worker struct siw_rqe {
95*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 id;
96*8d67ca89SAndroid Build Coastguard Worker   __u16 flags;
97*8d67ca89SAndroid Build Coastguard Worker   __u8 num_sge;
98*8d67ca89SAndroid Build Coastguard Worker   __u8 opcode;
99*8d67ca89SAndroid Build Coastguard Worker   __u32 unused;
100*8d67ca89SAndroid Build Coastguard Worker   struct siw_sge sge[SIW_MAX_SGE];
101*8d67ca89SAndroid Build Coastguard Worker };
102*8d67ca89SAndroid Build Coastguard Worker enum siw_notify_flags {
103*8d67ca89SAndroid Build Coastguard Worker   SIW_NOTIFY_NOT = (0),
104*8d67ca89SAndroid Build Coastguard Worker   SIW_NOTIFY_SOLICITED = (1 << 0),
105*8d67ca89SAndroid Build Coastguard Worker   SIW_NOTIFY_NEXT_COMPLETION = (1 << 1),
106*8d67ca89SAndroid Build Coastguard Worker   SIW_NOTIFY_MISSED_EVENTS = (1 << 2),
107*8d67ca89SAndroid Build Coastguard Worker   SIW_NOTIFY_ALL = SIW_NOTIFY_SOLICITED | SIW_NOTIFY_NEXT_COMPLETION | SIW_NOTIFY_MISSED_EVENTS
108*8d67ca89SAndroid Build Coastguard Worker };
109*8d67ca89SAndroid Build Coastguard Worker enum siw_wc_status {
110*8d67ca89SAndroid Build Coastguard Worker   SIW_WC_SUCCESS,
111*8d67ca89SAndroid Build Coastguard Worker   SIW_WC_LOC_LEN_ERR,
112*8d67ca89SAndroid Build Coastguard Worker   SIW_WC_LOC_PROT_ERR,
113*8d67ca89SAndroid Build Coastguard Worker   SIW_WC_LOC_QP_OP_ERR,
114*8d67ca89SAndroid Build Coastguard Worker   SIW_WC_WR_FLUSH_ERR,
115*8d67ca89SAndroid Build Coastguard Worker   SIW_WC_BAD_RESP_ERR,
116*8d67ca89SAndroid Build Coastguard Worker   SIW_WC_LOC_ACCESS_ERR,
117*8d67ca89SAndroid Build Coastguard Worker   SIW_WC_REM_ACCESS_ERR,
118*8d67ca89SAndroid Build Coastguard Worker   SIW_WC_REM_INV_REQ_ERR,
119*8d67ca89SAndroid Build Coastguard Worker   SIW_WC_GENERAL_ERR,
120*8d67ca89SAndroid Build Coastguard Worker   SIW_NUM_WC_STATUS
121*8d67ca89SAndroid Build Coastguard Worker };
122*8d67ca89SAndroid Build Coastguard Worker struct siw_cqe {
123*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 id;
124*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
125*8d67ca89SAndroid Build Coastguard Worker   __u8 opcode;
126*8d67ca89SAndroid Build Coastguard Worker   __u16 status;
127*8d67ca89SAndroid Build Coastguard Worker   __u32 bytes;
128*8d67ca89SAndroid Build Coastguard Worker   union {
129*8d67ca89SAndroid Build Coastguard Worker     __aligned_u64 imm_data;
130*8d67ca89SAndroid Build Coastguard Worker     __u32 inval_stag;
131*8d67ca89SAndroid Build Coastguard Worker   };
132*8d67ca89SAndroid Build Coastguard Worker   union {
133*8d67ca89SAndroid Build Coastguard Worker     struct ib_qp * base_qp;
134*8d67ca89SAndroid Build Coastguard Worker     __aligned_u64 qp_id;
135*8d67ca89SAndroid Build Coastguard Worker   };
136*8d67ca89SAndroid Build Coastguard Worker };
137*8d67ca89SAndroid Build Coastguard Worker struct siw_cq_ctrl {
138*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
139*8d67ca89SAndroid Build Coastguard Worker   __u32 pad;
140*8d67ca89SAndroid Build Coastguard Worker };
141*8d67ca89SAndroid Build Coastguard Worker #endif
142