brintos

brintos / linux-shallow public Read only

0
0
Text · 7.8 KiB · fe15bc7 Raw
275 lines · c
1/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB) */2/*3 * Copyright (c) 2017-2018, Mellanox Technologies inc.  All rights reserved.4 *5 * This software is available to you under a choice of one of two6 * licenses.  You may choose to be licensed under the terms of the GNU7 * General Public License (GPL) Version 2, available from the file8 * COPYING in the main directory of this source tree, or the9 * OpenIB.org BSD license below:10 *11 *     Redistribution and use in source and binary forms, with or12 *     without modification, are permitted provided that the following13 *     conditions are met:14 *15 *      - Redistributions of source code must retain the above16 *        copyright notice, this list of conditions and the following17 *        disclaimer.18 *19 *      - Redistributions in binary form must reproduce the above20 *        copyright notice, this list of conditions and the following21 *        disclaimer in the documentation and/or other materials22 *        provided with the distribution.23 *24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE31 * SOFTWARE.32 */33 34#ifndef IB_USER_IOCTL_VERBS_H35#define IB_USER_IOCTL_VERBS_H36 37#include <linux/types.h>38#include <rdma/ib_user_verbs.h>39 40#ifndef RDMA_UAPI_PTR41#define RDMA_UAPI_PTR(_type, _name)	__aligned_u64 _name42#endif43 44#define IB_UVERBS_ACCESS_OPTIONAL_FIRST (1 << 20)45#define IB_UVERBS_ACCESS_OPTIONAL_LAST (1 << 29)46 47enum ib_uverbs_core_support {48	IB_UVERBS_CORE_SUPPORT_OPTIONAL_MR_ACCESS = 1 << 0,49};50 51enum ib_uverbs_access_flags {52	IB_UVERBS_ACCESS_LOCAL_WRITE = 1 << 0,53	IB_UVERBS_ACCESS_REMOTE_WRITE = 1 << 1,54	IB_UVERBS_ACCESS_REMOTE_READ = 1 << 2,55	IB_UVERBS_ACCESS_REMOTE_ATOMIC = 1 << 3,56	IB_UVERBS_ACCESS_MW_BIND = 1 << 4,57	IB_UVERBS_ACCESS_ZERO_BASED = 1 << 5,58	IB_UVERBS_ACCESS_ON_DEMAND = 1 << 6,59	IB_UVERBS_ACCESS_HUGETLB = 1 << 7,60	IB_UVERBS_ACCESS_FLUSH_GLOBAL = 1 << 8,61	IB_UVERBS_ACCESS_FLUSH_PERSISTENT = 1 << 9,62 63	IB_UVERBS_ACCESS_RELAXED_ORDERING = IB_UVERBS_ACCESS_OPTIONAL_FIRST,64	IB_UVERBS_ACCESS_OPTIONAL_RANGE =65		((IB_UVERBS_ACCESS_OPTIONAL_LAST << 1) - 1) &66		~(IB_UVERBS_ACCESS_OPTIONAL_FIRST - 1)67};68 69enum ib_uverbs_srq_type {70	IB_UVERBS_SRQT_BASIC,71	IB_UVERBS_SRQT_XRC,72	IB_UVERBS_SRQT_TM,73};74 75enum ib_uverbs_wq_type {76	IB_UVERBS_WQT_RQ,77};78 79enum ib_uverbs_wq_flags {80	IB_UVERBS_WQ_FLAGS_CVLAN_STRIPPING = 1 << 0,81	IB_UVERBS_WQ_FLAGS_SCATTER_FCS = 1 << 1,82	IB_UVERBS_WQ_FLAGS_DELAY_DROP = 1 << 2,83	IB_UVERBS_WQ_FLAGS_PCI_WRITE_END_PADDING = 1 << 3,84};85 86enum ib_uverbs_qp_type {87	IB_UVERBS_QPT_RC = 2,88	IB_UVERBS_QPT_UC,89	IB_UVERBS_QPT_UD,90	IB_UVERBS_QPT_RAW_PACKET = 8,91	IB_UVERBS_QPT_XRC_INI,92	IB_UVERBS_QPT_XRC_TGT,93	IB_UVERBS_QPT_DRIVER = 0xFF,94};95 96enum ib_uverbs_qp_create_flags {97	IB_UVERBS_QP_CREATE_BLOCK_MULTICAST_LOOPBACK = 1 << 1,98	IB_UVERBS_QP_CREATE_SCATTER_FCS = 1 << 8,99	IB_UVERBS_QP_CREATE_CVLAN_STRIPPING = 1 << 9,100	IB_UVERBS_QP_CREATE_PCI_WRITE_END_PADDING = 1 << 11,101	IB_UVERBS_QP_CREATE_SQ_SIG_ALL = 1 << 12,102};103 104enum ib_uverbs_query_port_cap_flags {105	IB_UVERBS_PCF_SM = 1 << 1,106	IB_UVERBS_PCF_NOTICE_SUP = 1 << 2,107	IB_UVERBS_PCF_TRAP_SUP = 1 << 3,108	IB_UVERBS_PCF_OPT_IPD_SUP = 1 << 4,109	IB_UVERBS_PCF_AUTO_MIGR_SUP = 1 << 5,110	IB_UVERBS_PCF_SL_MAP_SUP = 1 << 6,111	IB_UVERBS_PCF_MKEY_NVRAM = 1 << 7,112	IB_UVERBS_PCF_PKEY_NVRAM = 1 << 8,113	IB_UVERBS_PCF_LED_INFO_SUP = 1 << 9,114	IB_UVERBS_PCF_SM_DISABLED = 1 << 10,115	IB_UVERBS_PCF_SYS_IMAGE_GUID_SUP = 1 << 11,116	IB_UVERBS_PCF_PKEY_SW_EXT_PORT_TRAP_SUP = 1 << 12,117	IB_UVERBS_PCF_EXTENDED_SPEEDS_SUP = 1 << 14,118	IB_UVERBS_PCF_CM_SUP = 1 << 16,119	IB_UVERBS_PCF_SNMP_TUNNEL_SUP = 1 << 17,120	IB_UVERBS_PCF_REINIT_SUP = 1 << 18,121	IB_UVERBS_PCF_DEVICE_MGMT_SUP = 1 << 19,122	IB_UVERBS_PCF_VENDOR_CLASS_SUP = 1 << 20,123	IB_UVERBS_PCF_DR_NOTICE_SUP = 1 << 21,124	IB_UVERBS_PCF_CAP_MASK_NOTICE_SUP = 1 << 22,125	IB_UVERBS_PCF_BOOT_MGMT_SUP = 1 << 23,126	IB_UVERBS_PCF_LINK_LATENCY_SUP = 1 << 24,127	IB_UVERBS_PCF_CLIENT_REG_SUP = 1 << 25,128	/*129	 * IsOtherLocalChangesNoticeSupported is aliased by IP_BASED_GIDS and130	 * is inaccessible131	 */132	IB_UVERBS_PCF_LINK_SPEED_WIDTH_TABLE_SUP = 1 << 27,133	IB_UVERBS_PCF_VENDOR_SPECIFIC_MADS_TABLE_SUP = 1 << 28,134	IB_UVERBS_PCF_MCAST_PKEY_TRAP_SUPPRESSION_SUP = 1 << 29,135	IB_UVERBS_PCF_MCAST_FDB_TOP_SUP = 1 << 30,136	IB_UVERBS_PCF_HIERARCHY_INFO_SUP = 1ULL << 31,137 138	/* NOTE this is an internal flag, not an IBA flag */139	IB_UVERBS_PCF_IP_BASED_GIDS = 1 << 26,140};141 142enum ib_uverbs_query_port_flags {143	IB_UVERBS_QPF_GRH_REQUIRED = 1 << 0,144};145 146enum ib_uverbs_flow_action_esp_keymat {147	IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM,148};149 150enum ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo {151	IB_UVERBS_FLOW_ACTION_IV_ALGO_SEQ,152};153 154struct ib_uverbs_flow_action_esp_keymat_aes_gcm {155	__aligned_u64	iv;156	__u32		iv_algo; /* Use enum ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo */157 158	__u32		salt;159	__u32		icv_len;160 161	__u32		key_len;162	__u32		aes_key[256 / 32];163};164 165enum ib_uverbs_flow_action_esp_replay {166	IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE,167	IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP,168};169 170struct ib_uverbs_flow_action_esp_replay_bmp {171	__u32	size;172};173 174enum ib_uverbs_flow_action_esp_flags {175	IB_UVERBS_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO	= 0UL << 0,	/* Default */176	IB_UVERBS_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD	= 1UL << 0,177 178	IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TUNNEL		= 0UL << 1,	/* Default */179	IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TRANSPORT	= 1UL << 1,180 181	IB_UVERBS_FLOW_ACTION_ESP_FLAGS_DECRYPT		= 0UL << 2,	/* Default */182	IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ENCRYPT		= 1UL << 2,183 184	IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW	= 1UL << 3,185};186 187struct ib_uverbs_flow_action_esp_encap {188	/* This struct represents a list of pointers to flow_xxxx_filter that189	 * encapsulates the payload in ESP tunnel mode.190	 */191	RDMA_UAPI_PTR(void *, val_ptr); /* pointer to a flow_xxxx_filter */192	RDMA_UAPI_PTR(struct ib_uverbs_flow_action_esp_encap *, next_ptr);193	__u16	len;		/* Len of the filter struct val_ptr points to */194	__u16	type;		/* Use flow_spec_type enum */195};196 197struct ib_uverbs_flow_action_esp {198	__u32		spi;199	__u32		seq;200	__u32		tfc_pad;201	__u32		flags;202	__aligned_u64	hard_limit_pkts;203};204 205enum ib_uverbs_read_counters_flags {206	/* prefer read values from driver cache */207	IB_UVERBS_READ_COUNTERS_PREFER_CACHED = 1 << 0,208};209 210enum ib_uverbs_advise_mr_advice {211	IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH,212	IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE,213	IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT,214};215 216enum ib_uverbs_advise_mr_flag {217	IB_UVERBS_ADVISE_MR_FLAG_FLUSH = 1 << 0,218};219 220struct ib_uverbs_query_port_resp_ex {221	struct ib_uverbs_query_port_resp legacy_resp;222	__u16 port_cap_flags2;223	__u8  reserved[2];224	__u32 active_speed_ex;225};226 227struct ib_uverbs_qp_cap {228	__u32 max_send_wr;229	__u32 max_recv_wr;230	__u32 max_send_sge;231	__u32 max_recv_sge;232	__u32 max_inline_data;233};234 235enum rdma_driver_id {236	RDMA_DRIVER_UNKNOWN,237	RDMA_DRIVER_MLX5,238	RDMA_DRIVER_MLX4,239	RDMA_DRIVER_CXGB3,240	RDMA_DRIVER_CXGB4,241	RDMA_DRIVER_MTHCA,242	RDMA_DRIVER_BNXT_RE,243	RDMA_DRIVER_OCRDMA,244	RDMA_DRIVER_NES,245	RDMA_DRIVER_I40IW,246	RDMA_DRIVER_IRDMA = RDMA_DRIVER_I40IW,247	RDMA_DRIVER_VMW_PVRDMA,248	RDMA_DRIVER_QEDR,249	RDMA_DRIVER_HNS,250	RDMA_DRIVER_USNIC,251	RDMA_DRIVER_RXE,252	RDMA_DRIVER_HFI1,253	RDMA_DRIVER_QIB,254	RDMA_DRIVER_EFA,255	RDMA_DRIVER_SIW,256	RDMA_DRIVER_ERDMA,257	RDMA_DRIVER_MANA,258};259 260enum ib_uverbs_gid_type {261	IB_UVERBS_GID_TYPE_IB,262	IB_UVERBS_GID_TYPE_ROCE_V1,263	IB_UVERBS_GID_TYPE_ROCE_V2,264};265 266struct ib_uverbs_gid_entry {267	__aligned_u64 gid[2];268	__u32 gid_index;269	__u32 port_num;270	__u32 gid_type;271	__u32 netdev_ifindex; /* It is 0 if there is no netdev associated with it */272};273 274#endif275