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