1cdcd52d4SBartosz Sobczak /*- 2cdcd52d4SBartosz Sobczak * SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB 3cdcd52d4SBartosz Sobczak * 4*5b5f7d0eSBartosz Sobczak * Copyright (C) 2019 - 2023 Intel Corporation 5cdcd52d4SBartosz Sobczak * 6cdcd52d4SBartosz Sobczak * This software is available to you under a choice of one of two 7cdcd52d4SBartosz Sobczak * licenses. You may choose to be licensed under the terms of the GNU 8cdcd52d4SBartosz Sobczak * General Public License (GPL) Version 2, available from the file 9cdcd52d4SBartosz Sobczak * COPYING in the main directory of this source tree, or the 10cdcd52d4SBartosz Sobczak * OpenFabrics.org BSD license below: 11cdcd52d4SBartosz Sobczak * 12cdcd52d4SBartosz Sobczak * Redistribution and use in source and binary forms, with or 13cdcd52d4SBartosz Sobczak * without modification, are permitted provided that the following 14cdcd52d4SBartosz Sobczak * conditions are met: 15cdcd52d4SBartosz Sobczak * 16cdcd52d4SBartosz Sobczak * - Redistributions of source code must retain the above 17cdcd52d4SBartosz Sobczak * copyright notice, this list of conditions and the following 18cdcd52d4SBartosz Sobczak * disclaimer. 19cdcd52d4SBartosz Sobczak * 20cdcd52d4SBartosz Sobczak * - Redistributions in binary form must reproduce the above 21cdcd52d4SBartosz Sobczak * copyright notice, this list of conditions and the following 22cdcd52d4SBartosz Sobczak * disclaimer in the documentation and/or other materials 23cdcd52d4SBartosz Sobczak * provided with the distribution. 24cdcd52d4SBartosz Sobczak * 25cdcd52d4SBartosz Sobczak * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26cdcd52d4SBartosz Sobczak * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27cdcd52d4SBartosz Sobczak * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 28cdcd52d4SBartosz Sobczak * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 29cdcd52d4SBartosz Sobczak * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 30cdcd52d4SBartosz Sobczak * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 31cdcd52d4SBartosz Sobczak * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 32cdcd52d4SBartosz Sobczak * SOFTWARE. 33cdcd52d4SBartosz Sobczak */ 34cdcd52d4SBartosz Sobczak 35cdcd52d4SBartosz Sobczak #ifndef PROVIDER_IRDMA_ABI_H 36cdcd52d4SBartosz Sobczak #define PROVIDER_IRDMA_ABI_H 37cdcd52d4SBartosz Sobczak 38cdcd52d4SBartosz Sobczak #include "irdma.h" 39cdcd52d4SBartosz Sobczak #include <infiniband/kern-abi.h> 40cdcd52d4SBartosz Sobczak #include "irdma-abi.h" 41cdcd52d4SBartosz Sobczak 42cdcd52d4SBartosz Sobczak #define IRDMA_MIN_ABI_VERSION 0 43cdcd52d4SBartosz Sobczak #define IRDMA_MAX_ABI_VERSION 5 44cdcd52d4SBartosz Sobczak 45cdcd52d4SBartosz Sobczak struct irdma_ualloc_pd_resp { 46cdcd52d4SBartosz Sobczak struct ibv_alloc_pd_resp ibv_resp; 47cdcd52d4SBartosz Sobczak __u32 pd_id; 48cdcd52d4SBartosz Sobczak __u8 rsvd[4]; 49cdcd52d4SBartosz Sobczak 50cdcd52d4SBartosz Sobczak }; 51cdcd52d4SBartosz Sobczak struct irdma_ucreate_cq { 52cdcd52d4SBartosz Sobczak struct ibv_create_cq ibv_cmd; 53cdcd52d4SBartosz Sobczak __aligned_u64 user_cq_buf; 54cdcd52d4SBartosz Sobczak __aligned_u64 user_shadow_area; 55cdcd52d4SBartosz Sobczak 56cdcd52d4SBartosz Sobczak }; 57cdcd52d4SBartosz Sobczak struct irdma_ucreate_cq_resp { 58cdcd52d4SBartosz Sobczak struct ibv_create_cq_resp ibv_resp; 59cdcd52d4SBartosz Sobczak __u32 cq_id; 60cdcd52d4SBartosz Sobczak __u32 cq_size; 61cdcd52d4SBartosz Sobczak 62cdcd52d4SBartosz Sobczak }; 63cdcd52d4SBartosz Sobczak struct irdma_ucreate_cq_ex { 64cdcd52d4SBartosz Sobczak struct ibv_create_cq_ex ibv_cmd; 65cdcd52d4SBartosz Sobczak __aligned_u64 user_cq_buf; 66cdcd52d4SBartosz Sobczak __aligned_u64 user_shadow_area; 67cdcd52d4SBartosz Sobczak 68cdcd52d4SBartosz Sobczak }; 69cdcd52d4SBartosz Sobczak struct irdma_ucreate_cq_ex_resp { 70cdcd52d4SBartosz Sobczak struct ibv_create_cq_resp_ex ibv_resp; 71cdcd52d4SBartosz Sobczak __u32 cq_id; 72cdcd52d4SBartosz Sobczak __u32 cq_size; 73cdcd52d4SBartosz Sobczak 74cdcd52d4SBartosz Sobczak }; 75cdcd52d4SBartosz Sobczak struct irdma_uresize_cq { 76cdcd52d4SBartosz Sobczak struct ibv_resize_cq ibv_cmd; 77cdcd52d4SBartosz Sobczak __aligned_u64 user_cq_buffer; 78cdcd52d4SBartosz Sobczak 79cdcd52d4SBartosz Sobczak }; 80cdcd52d4SBartosz Sobczak struct irdma_uresize_cq_resp { 81cdcd52d4SBartosz Sobczak struct ibv_resize_cq_resp ibv_resp; 82cdcd52d4SBartosz Sobczak 83cdcd52d4SBartosz Sobczak }; 84cdcd52d4SBartosz Sobczak struct irdma_ucreate_qp { 85cdcd52d4SBartosz Sobczak struct ibv_create_qp ibv_cmd; 86cdcd52d4SBartosz Sobczak __aligned_u64 user_wqe_bufs; 87cdcd52d4SBartosz Sobczak __aligned_u64 user_compl_ctx; 88*5b5f7d0eSBartosz Sobczak __aligned_u64 comp_mask; 89cdcd52d4SBartosz Sobczak 90cdcd52d4SBartosz Sobczak }; 91cdcd52d4SBartosz Sobczak struct irdma_ucreate_qp_resp { 92cdcd52d4SBartosz Sobczak struct ibv_create_qp_resp ibv_resp; 93cdcd52d4SBartosz Sobczak __u32 qp_id; 94cdcd52d4SBartosz Sobczak __u32 actual_sq_size; 95cdcd52d4SBartosz Sobczak __u32 actual_rq_size; 96cdcd52d4SBartosz Sobczak __u32 irdma_drv_opt; 97cdcd52d4SBartosz Sobczak __u16 push_idx; 98cdcd52d4SBartosz Sobczak __u8 lsmm; 99cdcd52d4SBartosz Sobczak __u8 rsvd; 100cdcd52d4SBartosz Sobczak __u32 qp_caps; 101*5b5f7d0eSBartosz Sobczak __aligned_u64 comp_mask; 102*5b5f7d0eSBartosz Sobczak __u8 start_wqe_idx; 103*5b5f7d0eSBartosz Sobczak __u8 rsvd2[7]; 104cdcd52d4SBartosz Sobczak 105cdcd52d4SBartosz Sobczak }; 106cdcd52d4SBartosz Sobczak struct irdma_umodify_qp_resp { 107cdcd52d4SBartosz Sobczak struct ibv_modify_qp_resp_ex ibv_resp; 108cdcd52d4SBartosz Sobczak __aligned_u64 push_wqe_mmap_key; 109cdcd52d4SBartosz Sobczak __aligned_u64 push_db_mmap_key; 110cdcd52d4SBartosz Sobczak __u16 push_offset; 111cdcd52d4SBartosz Sobczak __u8 push_valid; 112cdcd52d4SBartosz Sobczak __u8 rd_fence_rate; 113cdcd52d4SBartosz Sobczak __u8 rsvd[4]; 114cdcd52d4SBartosz Sobczak 115cdcd52d4SBartosz Sobczak }; 116cdcd52d4SBartosz Sobczak struct irdma_get_context { 117cdcd52d4SBartosz Sobczak struct ibv_get_context ibv_cmd; 118cdcd52d4SBartosz Sobczak __u32 rsvd32; 119cdcd52d4SBartosz Sobczak __u8 userspace_ver; 120cdcd52d4SBartosz Sobczak __u8 rsvd8[3]; 12135105900SBartosz Sobczak __aligned_u64 comp_mask; 122cdcd52d4SBartosz Sobczak 123cdcd52d4SBartosz Sobczak }; 124cdcd52d4SBartosz Sobczak struct irdma_get_context_resp { 125cdcd52d4SBartosz Sobczak struct ibv_get_context_resp ibv_resp; 126cdcd52d4SBartosz Sobczak __u32 max_pds; 127cdcd52d4SBartosz Sobczak __u32 max_qps; 128cdcd52d4SBartosz Sobczak __u32 wq_size; /* size of the WQs (SQ+RQ) in the mmaped area */ 129cdcd52d4SBartosz Sobczak __u8 kernel_ver; 130cdcd52d4SBartosz Sobczak __u8 rsvd[3]; 131cdcd52d4SBartosz Sobczak __aligned_u64 feature_flags; 132cdcd52d4SBartosz Sobczak __aligned_u64 db_mmap_key; 133cdcd52d4SBartosz Sobczak __u32 max_hw_wq_frags; 134cdcd52d4SBartosz Sobczak __u32 max_hw_read_sges; 135cdcd52d4SBartosz Sobczak __u32 max_hw_inline; 136cdcd52d4SBartosz Sobczak __u32 max_hw_rq_quanta; 137cdcd52d4SBartosz Sobczak __u32 max_hw_wq_quanta; 138cdcd52d4SBartosz Sobczak __u32 min_hw_cq_size; 139cdcd52d4SBartosz Sobczak __u32 max_hw_cq_size; 140cdcd52d4SBartosz Sobczak __u16 max_hw_sq_chunk; 141cdcd52d4SBartosz Sobczak __u8 hw_rev; 142cdcd52d4SBartosz Sobczak __u8 rsvd2; 14335105900SBartosz Sobczak __aligned_u64 comp_mask; 144*5b5f7d0eSBartosz Sobczak __u16 min_hw_wq_size; 145*5b5f7d0eSBartosz Sobczak __u8 rsvd3[6]; 146cdcd52d4SBartosz Sobczak 147cdcd52d4SBartosz Sobczak }; 148cdcd52d4SBartosz Sobczak struct irdma_ureg_mr { 149cdcd52d4SBartosz Sobczak struct ibv_reg_mr ibv_cmd; 150cdcd52d4SBartosz Sobczak __u16 reg_type; /* enum irdma_memreg_type */ 151cdcd52d4SBartosz Sobczak __u16 cq_pages; 152cdcd52d4SBartosz Sobczak __u16 rq_pages; 153cdcd52d4SBartosz Sobczak __u16 sq_pages; 154cdcd52d4SBartosz Sobczak 155cdcd52d4SBartosz Sobczak }; 156777e472cSBartosz Sobczak struct irdma_urereg_mr { 157777e472cSBartosz Sobczak struct ibv_rereg_mr ibv_cmd; 158777e472cSBartosz Sobczak __u16 reg_type; /* enum irdma_memreg_type */ 159777e472cSBartosz Sobczak __u16 cq_pages; 160777e472cSBartosz Sobczak __u16 rq_pages; 161777e472cSBartosz Sobczak __u16 sq_pages; 162777e472cSBartosz Sobczak 163777e472cSBartosz Sobczak }; 164cdcd52d4SBartosz Sobczak struct irdma_ucreate_ah_resp { 165cdcd52d4SBartosz Sobczak struct ibv_create_ah_resp ibv_resp; 166cdcd52d4SBartosz Sobczak __u32 ah_id; 167cdcd52d4SBartosz Sobczak __u8 rsvd[4]; 168cdcd52d4SBartosz Sobczak 169cdcd52d4SBartosz Sobczak }; 170cdcd52d4SBartosz Sobczak 171cdcd52d4SBartosz Sobczak struct irdma_modify_qp_cmd { 172cdcd52d4SBartosz Sobczak struct ibv_modify_qp_ex ibv_cmd; 173cdcd52d4SBartosz Sobczak __u8 sq_flush; 174cdcd52d4SBartosz Sobczak __u8 rq_flush; 175cdcd52d4SBartosz Sobczak __u8 rsvd[6]; 176cdcd52d4SBartosz Sobczak }; 177cdcd52d4SBartosz Sobczak 178cdcd52d4SBartosz Sobczak struct irdma_query_device_ex { 179cdcd52d4SBartosz Sobczak struct ibv_query_device_ex ibv_cmd; 180cdcd52d4SBartosz Sobczak }; 181cdcd52d4SBartosz Sobczak 182cdcd52d4SBartosz Sobczak struct irdma_query_device_ex_resp { 183cdcd52d4SBartosz Sobczak struct ibv_query_device_resp_ex ibv_resp; 184cdcd52d4SBartosz Sobczak __u32 comp_mask; 185cdcd52d4SBartosz Sobczak __u32 response_length; 186cdcd52d4SBartosz Sobczak struct ibv_odp_caps_resp odp_caps; 187cdcd52d4SBartosz Sobczak __u64 timestamp_mask; 188cdcd52d4SBartosz Sobczak __u64 hca_core_clock; 189cdcd52d4SBartosz Sobczak __u64 device_cap_flags_ex; 190cdcd52d4SBartosz Sobczak struct ibv_rss_caps_resp rss_caps; 191cdcd52d4SBartosz Sobczak __u32 max_wq_type_rq; 192cdcd52d4SBartosz Sobczak __u32 raw_packet_caps; 193cdcd52d4SBartosz Sobczak struct ibv_tso_caps tso_caps; 194cdcd52d4SBartosz Sobczak }; 195cdcd52d4SBartosz Sobczak #endif /* PROVIDER_IRDMA_ABI_H */ 196