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