brintos

brintos / linux-shallow public Read only

0
0
Text · 5.5 KiB · faa9d62 Raw
219 lines · c
1/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */2/*3 * Broadcom NetXtreme-E RoCE driver.4 *5 * Copyright (c) 2016 - 2017, Broadcom. All rights reserved.  The term6 * Broadcom refers to Broadcom Limited and/or its subsidiaries.7 *8 * This software is available to you under a choice of one of two9 * licenses.  You may choose to be licensed under the terms of the GNU10 * General Public License (GPL) Version 2, available from the file11 * COPYING in the main directory of this source tree, or the12 * BSD license below:13 *14 * Redistribution and use in source and binary forms, with or without15 * modification, are permitted provided that the following conditions16 * are met:17 *18 * 1. Redistributions of source code must retain the above copyright19 *    notice, this list of conditions and the following disclaimer.20 * 2. Redistributions in binary form must reproduce the above copyright21 *    notice, this list of conditions and the following disclaimer in22 *    the documentation and/or other materials provided with the23 *    distribution.24 *25 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,27 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR28 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS29 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR32 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,33 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE34 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN35 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.36 *37 * Description: Uverbs ABI header file38 */39 40#ifndef __BNXT_RE_UVERBS_ABI_H__41#define __BNXT_RE_UVERBS_ABI_H__42 43#include <linux/types.h>44#include <rdma/ib_user_ioctl_cmds.h>45 46#define BNXT_RE_ABI_VERSION	147 48#define BNXT_RE_CHIP_ID0_CHIP_NUM_SFT		0x0049#define BNXT_RE_CHIP_ID0_CHIP_REV_SFT		0x1050#define BNXT_RE_CHIP_ID0_CHIP_MET_SFT		0x1851 52enum {53	BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL,54	BNXT_RE_UCNTX_CMASK_HAVE_MODE = 0x02ULL,55	BNXT_RE_UCNTX_CMASK_WC_DPI_ENABLED = 0x04ULL,56	BNXT_RE_UCNTX_CMASK_DBR_PACING_ENABLED = 0x08ULL,57	BNXT_RE_UCNTX_CMASK_POW2_DISABLED = 0x10ULL,58	BNXT_RE_UCNTX_CMASK_MSN_TABLE_ENABLED = 0x40,59};60 61enum bnxt_re_wqe_mode {62	BNXT_QPLIB_WQE_MODE_STATIC	= 0x00,63	BNXT_QPLIB_WQE_MODE_VARIABLE	= 0x01,64	BNXT_QPLIB_WQE_MODE_INVALID	= 0x02,65};66 67enum {68	BNXT_RE_COMP_MASK_REQ_UCNTX_POW2_SUPPORT = 0x01,69	BNXT_RE_COMP_MASK_REQ_UCNTX_VAR_WQE_SUPPORT = 0x02,70};71 72struct bnxt_re_uctx_req {73	__aligned_u64 comp_mask;74};75 76struct bnxt_re_uctx_resp {77	__u32 dev_id;78	__u32 max_qp;79	__u32 pg_size;80	__u32 cqe_sz;81	__u32 max_cqd;82	__u32 rsvd;83	__aligned_u64 comp_mask;84	__u32 chip_id0;85	__u32 chip_id1;86	__u32 mode;87	__u32 rsvd1; /* padding */88};89 90/*91 * This struct is placed after the ib_uverbs_alloc_pd_resp struct, which is92 * not 8 byted aligned. To avoid undesired padding in various cases we have to93 * set this struct to packed.94 */95struct bnxt_re_pd_resp {96	__u32 pdid;97	__u32 dpi;98	__u64 dbr;99} __attribute__((packed, aligned(4)));100 101struct bnxt_re_cq_req {102	__aligned_u64 cq_va;103	__aligned_u64 cq_handle;104};105 106enum bnxt_re_cq_mask {107	BNXT_RE_CQ_TOGGLE_PAGE_SUPPORT = 0x1,108};109 110struct bnxt_re_cq_resp {111	__u32 cqid;112	__u32 tail;113	__u32 phase;114	__u32 rsvd;115	__aligned_u64 comp_mask;116};117 118struct bnxt_re_resize_cq_req {119	__aligned_u64 cq_va;120};121 122enum bnxt_re_qp_mask {123	BNXT_RE_QP_REQ_MASK_VAR_WQE_SQ_SLOTS = 0x1,124};125 126struct bnxt_re_qp_req {127	__aligned_u64 qpsva;128	__aligned_u64 qprva;129	__aligned_u64 qp_handle;130	__aligned_u64 comp_mask;131	__u32 sq_slots;132};133 134struct bnxt_re_qp_resp {135	__u32 qpid;136	__u32 rsvd;137};138 139struct bnxt_re_srq_req {140	__aligned_u64 srqva;141	__aligned_u64 srq_handle;142};143 144enum bnxt_re_srq_mask {145	BNXT_RE_SRQ_TOGGLE_PAGE_SUPPORT = 0x1,146};147 148struct bnxt_re_srq_resp {149	__u32 srqid;150	__u32 rsvd; /* padding */151	__aligned_u64 comp_mask;152};153 154enum bnxt_re_shpg_offt {155	BNXT_RE_BEG_RESV_OFFT	= 0x00,156	BNXT_RE_AVID_OFFT	= 0x10,157	BNXT_RE_AVID_SIZE	= 0x04,158	BNXT_RE_END_RESV_OFFT	= 0xFF0159};160 161enum bnxt_re_objects {162	BNXT_RE_OBJECT_ALLOC_PAGE = (1U << UVERBS_ID_NS_SHIFT),163	BNXT_RE_OBJECT_NOTIFY_DRV,164	BNXT_RE_OBJECT_GET_TOGGLE_MEM,165};166 167enum bnxt_re_alloc_page_type {168	BNXT_RE_ALLOC_WC_PAGE = 0,169	BNXT_RE_ALLOC_DBR_BAR_PAGE,170	BNXT_RE_ALLOC_DBR_PAGE,171};172 173enum bnxt_re_var_alloc_page_attrs {174	BNXT_RE_ALLOC_PAGE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),175	BNXT_RE_ALLOC_PAGE_TYPE,176	BNXT_RE_ALLOC_PAGE_DPI,177	BNXT_RE_ALLOC_PAGE_MMAP_OFFSET,178	BNXT_RE_ALLOC_PAGE_MMAP_LENGTH,179};180 181enum bnxt_re_alloc_page_attrs {182	BNXT_RE_DESTROY_PAGE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),183};184 185enum bnxt_re_alloc_page_methods {186	BNXT_RE_METHOD_ALLOC_PAGE = (1U << UVERBS_ID_NS_SHIFT),187	BNXT_RE_METHOD_DESTROY_PAGE,188};189 190enum bnxt_re_notify_drv_methods {191	BNXT_RE_METHOD_NOTIFY_DRV = (1U << UVERBS_ID_NS_SHIFT),192};193 194/* Toggle mem */195 196enum bnxt_re_get_toggle_mem_type {197	BNXT_RE_CQ_TOGGLE_MEM = 0,198	BNXT_RE_SRQ_TOGGLE_MEM,199};200 201enum bnxt_re_var_toggle_mem_attrs {202	BNXT_RE_TOGGLE_MEM_HANDLE = (1U << UVERBS_ID_NS_SHIFT),203	BNXT_RE_TOGGLE_MEM_TYPE,204	BNXT_RE_TOGGLE_MEM_RES_ID,205	BNXT_RE_TOGGLE_MEM_MMAP_PAGE,206	BNXT_RE_TOGGLE_MEM_MMAP_OFFSET,207	BNXT_RE_TOGGLE_MEM_MMAP_LENGTH,208};209 210enum bnxt_re_toggle_mem_attrs {211	BNXT_RE_RELEASE_TOGGLE_MEM_HANDLE = (1U << UVERBS_ID_NS_SHIFT),212};213 214enum bnxt_re_toggle_mem_methods {215	BNXT_RE_METHOD_GET_TOGGLE_MEM = (1U << UVERBS_ID_NS_SHIFT),216	BNXT_RE_METHOD_RELEASE_TOGGLE_MEM,217};218#endif /* __BNXT_RE_UVERBS_ABI_H__*/219