xref: /linux/include/uapi/rdma/irdma-abi.h (revision 96020566a5756d667252a42a26ddf1628dbb49d6)
1*514305eeSLukas 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 
2548d6b333SMustafa Ismail struct irdma_alloc_ucontext_req {
2648d6b333SMustafa Ismail 	__u32 rsvd32;
2748d6b333SMustafa Ismail 	__u8 userspace_ver;
2848d6b333SMustafa Ismail 	__u8 rsvd8[3];
2948d6b333SMustafa Ismail };
3048d6b333SMustafa Ismail 
3148d6b333SMustafa Ismail struct irdma_alloc_ucontext_resp {
3248d6b333SMustafa Ismail 	__u32 max_pds;
3348d6b333SMustafa Ismail 	__u32 max_qps;
3448d6b333SMustafa Ismail 	__u32 wq_size; /* size of the WQs (SQ+RQ) in the mmaped area */
3548d6b333SMustafa Ismail 	__u8 kernel_ver;
3648d6b333SMustafa Ismail 	__u8 rsvd[3];
3748d6b333SMustafa Ismail 	__aligned_u64 feature_flags;
3848d6b333SMustafa Ismail 	__aligned_u64 db_mmap_key;
3948d6b333SMustafa Ismail 	__u32 max_hw_wq_frags;
4048d6b333SMustafa Ismail 	__u32 max_hw_read_sges;
4148d6b333SMustafa Ismail 	__u32 max_hw_inline;
4248d6b333SMustafa Ismail 	__u32 max_hw_rq_quanta;
4348d6b333SMustafa Ismail 	__u32 max_hw_wq_quanta;
4448d6b333SMustafa Ismail 	__u32 min_hw_cq_size;
4548d6b333SMustafa Ismail 	__u32 max_hw_cq_size;
4648d6b333SMustafa Ismail 	__u16 max_hw_sq_chunk;
4748d6b333SMustafa Ismail 	__u8 hw_rev;
4848d6b333SMustafa Ismail 	__u8 rsvd2;
4948d6b333SMustafa Ismail };
5048d6b333SMustafa Ismail 
5148d6b333SMustafa Ismail struct irdma_alloc_pd_resp {
5248d6b333SMustafa Ismail 	__u32 pd_id;
5348d6b333SMustafa Ismail 	__u8 rsvd[4];
5448d6b333SMustafa Ismail };
5548d6b333SMustafa Ismail 
5648d6b333SMustafa Ismail struct irdma_resize_cq_req {
5748d6b333SMustafa Ismail 	__aligned_u64 user_cq_buffer;
5848d6b333SMustafa Ismail };
5948d6b333SMustafa Ismail 
6048d6b333SMustafa Ismail struct irdma_create_cq_req {
6148d6b333SMustafa Ismail 	__aligned_u64 user_cq_buf;
6248d6b333SMustafa Ismail 	__aligned_u64 user_shadow_area;
6348d6b333SMustafa Ismail };
6448d6b333SMustafa Ismail 
6548d6b333SMustafa Ismail struct irdma_create_qp_req {
6648d6b333SMustafa Ismail 	__aligned_u64 user_wqe_bufs;
6748d6b333SMustafa Ismail 	__aligned_u64 user_compl_ctx;
6848d6b333SMustafa Ismail };
6948d6b333SMustafa Ismail 
7048d6b333SMustafa Ismail struct irdma_mem_reg_req {
7148d6b333SMustafa Ismail 	__u16 reg_type; /* enum irdma_memreg_type */
7248d6b333SMustafa Ismail 	__u16 cq_pages;
7348d6b333SMustafa Ismail 	__u16 rq_pages;
7448d6b333SMustafa Ismail 	__u16 sq_pages;
7548d6b333SMustafa Ismail };
7648d6b333SMustafa Ismail 
7748d6b333SMustafa Ismail struct irdma_modify_qp_req {
7848d6b333SMustafa Ismail 	__u8 sq_flush;
7948d6b333SMustafa Ismail 	__u8 rq_flush;
8048d6b333SMustafa Ismail 	__u8 rsvd[6];
8148d6b333SMustafa Ismail };
8248d6b333SMustafa Ismail 
8348d6b333SMustafa Ismail struct irdma_create_cq_resp {
8448d6b333SMustafa Ismail 	__u32 cq_id;
8548d6b333SMustafa Ismail 	__u32 cq_size;
8648d6b333SMustafa Ismail };
8748d6b333SMustafa Ismail 
8848d6b333SMustafa Ismail struct irdma_create_qp_resp {
8948d6b333SMustafa Ismail 	__u32 qp_id;
9048d6b333SMustafa Ismail 	__u32 actual_sq_size;
9148d6b333SMustafa Ismail 	__u32 actual_rq_size;
9248d6b333SMustafa Ismail 	__u32 irdma_drv_opt;
9348d6b333SMustafa Ismail 	__u16 push_idx;
9448d6b333SMustafa Ismail 	__u8 lsmm;
9548d6b333SMustafa Ismail 	__u8 rsvd;
9648d6b333SMustafa Ismail 	__u32 qp_caps;
9748d6b333SMustafa Ismail };
9848d6b333SMustafa Ismail 
9948d6b333SMustafa Ismail struct irdma_modify_qp_resp {
10048d6b333SMustafa Ismail 	__aligned_u64 push_wqe_mmap_key;
10148d6b333SMustafa Ismail 	__aligned_u64 push_db_mmap_key;
10248d6b333SMustafa Ismail 	__u16 push_offset;
10348d6b333SMustafa Ismail 	__u8 push_valid;
10448d6b333SMustafa Ismail 	__u8 rsvd[5];
10548d6b333SMustafa Ismail };
10648d6b333SMustafa Ismail 
10748d6b333SMustafa Ismail struct irdma_create_ah_resp {
10848d6b333SMustafa Ismail 	__u32 ah_id;
10948d6b333SMustafa Ismail 	__u8 rsvd[4];
11048d6b333SMustafa Ismail };
11148d6b333SMustafa Ismail #endif /* IRDMA_ABI_H */
112