xref: /openbmc/linux/include/uapi/rdma/irdma-abi.h (revision 72d422c2)
1514305eeSLukas Bulwahn /* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB */
248d6b333SMustafa Ismail /*
348d6b333SMustafa Ismail  * Copyright (c) 2006 - 2021 Intel Corporation.  All rights reserved.
448d6b333SMustafa Ismail  * Copyright (c) 2005 Topspin Communications.  All rights reserved.
548d6b333SMustafa Ismail  * Copyright (c) 2005 Cisco Systems.  All rights reserved.
648d6b333SMustafa Ismail  * Copyright (c) 2005 Open Grid Computing, Inc. All rights reserved.
748d6b333SMustafa Ismail  */
848d6b333SMustafa Ismail 
948d6b333SMustafa Ismail #ifndef IRDMA_ABI_H
1048d6b333SMustafa Ismail #define IRDMA_ABI_H
1148d6b333SMustafa Ismail 
1248d6b333SMustafa Ismail #include <linux/types.h>
1348d6b333SMustafa Ismail 
1448d6b333SMustafa Ismail /* irdma must support legacy GEN_1 i40iw kernel
1548d6b333SMustafa Ismail  * and user-space whose last ABI ver is 5
1648d6b333SMustafa Ismail  */
1748d6b333SMustafa Ismail #define IRDMA_ABI_VER 5
1848d6b333SMustafa Ismail 
1948d6b333SMustafa Ismail enum irdma_memreg_type {
2048d6b333SMustafa Ismail 	IRDMA_MEMREG_TYPE_MEM  = 0,
2148d6b333SMustafa Ismail 	IRDMA_MEMREG_TYPE_QP   = 1,
2248d6b333SMustafa Ismail 	IRDMA_MEMREG_TYPE_CQ   = 2,
2348d6b333SMustafa Ismail };
2448d6b333SMustafa Ismail 
253a849872SSindhu Devale enum {
263a849872SSindhu Devale 	IRDMA_ALLOC_UCTX_USE_RAW_ATTR = 1 << 0,
27*72d422c2SSindhu Devale 	IRDMA_ALLOC_UCTX_MIN_HW_WQ_SIZE = 1 << 1,
283a849872SSindhu Devale };
293a849872SSindhu Devale 
3048d6b333SMustafa Ismail struct irdma_alloc_ucontext_req {
3148d6b333SMustafa Ismail 	__u32 rsvd32;
3248d6b333SMustafa Ismail 	__u8 userspace_ver;
3348d6b333SMustafa Ismail 	__u8 rsvd8[3];
343a849872SSindhu Devale 	__aligned_u64 comp_mask;
3548d6b333SMustafa Ismail };
3648d6b333SMustafa Ismail 
3748d6b333SMustafa Ismail struct irdma_alloc_ucontext_resp {
3848d6b333SMustafa Ismail 	__u32 max_pds;
3948d6b333SMustafa Ismail 	__u32 max_qps;
4048d6b333SMustafa Ismail 	__u32 wq_size; /* size of the WQs (SQ+RQ) in the mmaped area */
4148d6b333SMustafa Ismail 	__u8 kernel_ver;
4248d6b333SMustafa Ismail 	__u8 rsvd[3];
4348d6b333SMustafa Ismail 	__aligned_u64 feature_flags;
4448d6b333SMustafa Ismail 	__aligned_u64 db_mmap_key;
4548d6b333SMustafa Ismail 	__u32 max_hw_wq_frags;
4648d6b333SMustafa Ismail 	__u32 max_hw_read_sges;
4748d6b333SMustafa Ismail 	__u32 max_hw_inline;
4848d6b333SMustafa Ismail 	__u32 max_hw_rq_quanta;
4948d6b333SMustafa Ismail 	__u32 max_hw_wq_quanta;
5048d6b333SMustafa Ismail 	__u32 min_hw_cq_size;
5148d6b333SMustafa Ismail 	__u32 max_hw_cq_size;
5248d6b333SMustafa Ismail 	__u16 max_hw_sq_chunk;
5348d6b333SMustafa Ismail 	__u8 hw_rev;
5448d6b333SMustafa Ismail 	__u8 rsvd2;
553a849872SSindhu Devale 	__aligned_u64 comp_mask;
56*72d422c2SSindhu Devale 	__u16 min_hw_wq_size;
57*72d422c2SSindhu Devale 	__u8 rsvd3[6];
5848d6b333SMustafa Ismail };
5948d6b333SMustafa Ismail 
6048d6b333SMustafa Ismail struct irdma_alloc_pd_resp {
6148d6b333SMustafa Ismail 	__u32 pd_id;
6248d6b333SMustafa Ismail 	__u8 rsvd[4];
6348d6b333SMustafa Ismail };
6448d6b333SMustafa Ismail 
6548d6b333SMustafa Ismail struct irdma_resize_cq_req {
6648d6b333SMustafa Ismail 	__aligned_u64 user_cq_buffer;
6748d6b333SMustafa Ismail };
6848d6b333SMustafa Ismail 
6948d6b333SMustafa Ismail struct irdma_create_cq_req {
7048d6b333SMustafa Ismail 	__aligned_u64 user_cq_buf;
7148d6b333SMustafa Ismail 	__aligned_u64 user_shadow_area;
7248d6b333SMustafa Ismail };
7348d6b333SMustafa Ismail 
7448d6b333SMustafa Ismail struct irdma_create_qp_req {
7548d6b333SMustafa Ismail 	__aligned_u64 user_wqe_bufs;
7648d6b333SMustafa Ismail 	__aligned_u64 user_compl_ctx;
7748d6b333SMustafa Ismail };
7848d6b333SMustafa Ismail 
7948d6b333SMustafa Ismail struct irdma_mem_reg_req {
8048d6b333SMustafa Ismail 	__u16 reg_type; /* enum irdma_memreg_type */
8148d6b333SMustafa Ismail 	__u16 cq_pages;
8248d6b333SMustafa Ismail 	__u16 rq_pages;
8348d6b333SMustafa Ismail 	__u16 sq_pages;
8448d6b333SMustafa Ismail };
8548d6b333SMustafa Ismail 
8648d6b333SMustafa Ismail struct irdma_modify_qp_req {
8748d6b333SMustafa Ismail 	__u8 sq_flush;
8848d6b333SMustafa Ismail 	__u8 rq_flush;
8948d6b333SMustafa Ismail 	__u8 rsvd[6];
9048d6b333SMustafa Ismail };
9148d6b333SMustafa Ismail 
9248d6b333SMustafa Ismail struct irdma_create_cq_resp {
9348d6b333SMustafa Ismail 	__u32 cq_id;
9448d6b333SMustafa Ismail 	__u32 cq_size;
9548d6b333SMustafa Ismail };
9648d6b333SMustafa Ismail 
9748d6b333SMustafa Ismail struct irdma_create_qp_resp {
9848d6b333SMustafa Ismail 	__u32 qp_id;
9948d6b333SMustafa Ismail 	__u32 actual_sq_size;
10048d6b333SMustafa Ismail 	__u32 actual_rq_size;
10148d6b333SMustafa Ismail 	__u32 irdma_drv_opt;
10248d6b333SMustafa Ismail 	__u16 push_idx;
10348d6b333SMustafa Ismail 	__u8 lsmm;
10448d6b333SMustafa Ismail 	__u8 rsvd;
10548d6b333SMustafa Ismail 	__u32 qp_caps;
10648d6b333SMustafa Ismail };
10748d6b333SMustafa Ismail 
10848d6b333SMustafa Ismail struct irdma_modify_qp_resp {
10948d6b333SMustafa Ismail 	__aligned_u64 push_wqe_mmap_key;
11048d6b333SMustafa Ismail 	__aligned_u64 push_db_mmap_key;
11148d6b333SMustafa Ismail 	__u16 push_offset;
11248d6b333SMustafa Ismail 	__u8 push_valid;
11348d6b333SMustafa Ismail 	__u8 rsvd[5];
11448d6b333SMustafa Ismail };
11548d6b333SMustafa Ismail 
11648d6b333SMustafa Ismail struct irdma_create_ah_resp {
11748d6b333SMustafa Ismail 	__u32 ah_id;
11848d6b333SMustafa Ismail 	__u8 rsvd[4];
11948d6b333SMustafa Ismail };
12048d6b333SMustafa Ismail #endif /* IRDMA_ABI_H */
121