linux/include/uapi/rdma/ib_user_ioctl_verbs.h
<<
>>
Prefs
   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 two
   6 * licenses.  You may choose to be licensed under the terms of the GNU
   7 * General Public License (GPL) Version 2, available from the file
   8 * COPYING in the main directory of this source tree, or the
   9 * OpenIB.org BSD license below:
  10 *
  11 *     Redistribution and use in source and binary forms, with or
  12 *     without modification, are permitted provided that the following
  13 *     conditions are met:
  14 *
  15 *      - Redistributions of source code must retain the above
  16 *        copyright notice, this list of conditions and the following
  17 *        disclaimer.
  18 *
  19 *      - Redistributions in binary form must reproduce the above
  20 *        copyright notice, this list of conditions and the following
  21 *        disclaimer in the documentation and/or other materials
  22 *        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 OF
  26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  31 * SOFTWARE.
  32 */
  33
  34#ifndef IB_USER_IOCTL_VERBS_H
  35#define IB_USER_IOCTL_VERBS_H
  36
  37#include <linux/types.h>
  38#include <rdma/ib_user_verbs.h>
  39
  40#ifndef RDMA_UAPI_PTR
  41#define RDMA_UAPI_PTR(_type, _name)     __aligned_u64 _name
  42#endif
  43
  44enum ib_uverbs_access_flags {
  45        IB_UVERBS_ACCESS_LOCAL_WRITE = 1 << 0,
  46        IB_UVERBS_ACCESS_REMOTE_WRITE = 1 << 1,
  47        IB_UVERBS_ACCESS_REMOTE_READ = 1 << 2,
  48        IB_UVERBS_ACCESS_REMOTE_ATOMIC = 1 << 3,
  49        IB_UVERBS_ACCESS_MW_BIND = 1 << 4,
  50        IB_UVERBS_ACCESS_ZERO_BASED = 1 << 5,
  51        IB_UVERBS_ACCESS_ON_DEMAND = 1 << 6,
  52        IB_UVERBS_ACCESS_HUGETLB = 1 << 7,
  53};
  54
  55enum ib_uverbs_query_port_cap_flags {
  56        IB_UVERBS_PCF_SM = 1 << 1,
  57        IB_UVERBS_PCF_NOTICE_SUP = 1 << 2,
  58        IB_UVERBS_PCF_TRAP_SUP = 1 << 3,
  59        IB_UVERBS_PCF_OPT_IPD_SUP = 1 << 4,
  60        IB_UVERBS_PCF_AUTO_MIGR_SUP = 1 << 5,
  61        IB_UVERBS_PCF_SL_MAP_SUP = 1 << 6,
  62        IB_UVERBS_PCF_MKEY_NVRAM = 1 << 7,
  63        IB_UVERBS_PCF_PKEY_NVRAM = 1 << 8,
  64        IB_UVERBS_PCF_LED_INFO_SUP = 1 << 9,
  65        IB_UVERBS_PCF_SM_DISABLED = 1 << 10,
  66        IB_UVERBS_PCF_SYS_IMAGE_GUID_SUP = 1 << 11,
  67        IB_UVERBS_PCF_PKEY_SW_EXT_PORT_TRAP_SUP = 1 << 12,
  68        IB_UVERBS_PCF_EXTENDED_SPEEDS_SUP = 1 << 14,
  69        IB_UVERBS_PCF_CM_SUP = 1 << 16,
  70        IB_UVERBS_PCF_SNMP_TUNNEL_SUP = 1 << 17,
  71        IB_UVERBS_PCF_REINIT_SUP = 1 << 18,
  72        IB_UVERBS_PCF_DEVICE_MGMT_SUP = 1 << 19,
  73        IB_UVERBS_PCF_VENDOR_CLASS_SUP = 1 << 20,
  74        IB_UVERBS_PCF_DR_NOTICE_SUP = 1 << 21,
  75        IB_UVERBS_PCF_CAP_MASK_NOTICE_SUP = 1 << 22,
  76        IB_UVERBS_PCF_BOOT_MGMT_SUP = 1 << 23,
  77        IB_UVERBS_PCF_LINK_LATENCY_SUP = 1 << 24,
  78        IB_UVERBS_PCF_CLIENT_REG_SUP = 1 << 25,
  79        /*
  80         * IsOtherLocalChangesNoticeSupported is aliased by IP_BASED_GIDS and
  81         * is inaccessible
  82         */
  83        IB_UVERBS_PCF_LINK_SPEED_WIDTH_TABLE_SUP = 1 << 27,
  84        IB_UVERBS_PCF_VENDOR_SPECIFIC_MADS_TABLE_SUP = 1 << 28,
  85        IB_UVERBS_PCF_MCAST_PKEY_TRAP_SUPPRESSION_SUP = 1 << 29,
  86        IB_UVERBS_PCF_MCAST_FDB_TOP_SUP = 1 << 30,
  87        IB_UVERBS_PCF_HIERARCHY_INFO_SUP = 1ULL << 31,
  88
  89        /* NOTE this is an internal flag, not an IBA flag */
  90        IB_UVERBS_PCF_IP_BASED_GIDS = 1 << 26,
  91};
  92
  93enum ib_uverbs_query_port_flags {
  94        IB_UVERBS_QPF_GRH_REQUIRED = 1 << 0,
  95};
  96
  97enum ib_uverbs_flow_action_esp_keymat {
  98        IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM,
  99};
 100
 101enum ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo {
 102        IB_UVERBS_FLOW_ACTION_IV_ALGO_SEQ,
 103};
 104
 105struct ib_uverbs_flow_action_esp_keymat_aes_gcm {
 106        __aligned_u64   iv;
 107        __u32           iv_algo; /* Use enum ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo */
 108
 109        __u32           salt;
 110        __u32           icv_len;
 111
 112        __u32           key_len;
 113        __u32           aes_key[256 / 32];
 114};
 115
 116enum ib_uverbs_flow_action_esp_replay {
 117        IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE,
 118        IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP,
 119};
 120
 121struct ib_uverbs_flow_action_esp_replay_bmp {
 122        __u32   size;
 123};
 124
 125enum ib_uverbs_flow_action_esp_flags {
 126        IB_UVERBS_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO   = 0UL << 0,     /* Default */
 127        IB_UVERBS_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD    = 1UL << 0,
 128
 129        IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TUNNEL          = 0UL << 1,     /* Default */
 130        IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TRANSPORT       = 1UL << 1,
 131
 132        IB_UVERBS_FLOW_ACTION_ESP_FLAGS_DECRYPT         = 0UL << 2,     /* Default */
 133        IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ENCRYPT         = 1UL << 2,
 134
 135        IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW  = 1UL << 3,
 136};
 137
 138struct ib_uverbs_flow_action_esp_encap {
 139        /* This struct represents a list of pointers to flow_xxxx_filter that
 140         * encapsulates the payload in ESP tunnel mode.
 141         */
 142        RDMA_UAPI_PTR(void *, val_ptr); /* pointer to a flow_xxxx_filter */
 143        RDMA_UAPI_PTR(struct ib_uverbs_flow_action_esp_encap *, next_ptr);
 144        __u16   len;            /* Len of the filter struct val_ptr points to */
 145        __u16   type;           /* Use flow_spec_type enum */
 146};
 147
 148struct ib_uverbs_flow_action_esp {
 149        __u32           spi;
 150        __u32           seq;
 151        __u32           tfc_pad;
 152        __u32           flags;
 153        __aligned_u64   hard_limit_pkts;
 154};
 155
 156enum ib_uverbs_read_counters_flags {
 157        /* prefer read values from driver cache */
 158        IB_UVERBS_READ_COUNTERS_PREFER_CACHED = 1 << 0,
 159};
 160
 161enum ib_uverbs_advise_mr_advice {
 162        IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH,
 163        IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE,
 164};
 165
 166enum ib_uverbs_advise_mr_flag {
 167        IB_UVERBS_ADVISE_MR_FLAG_FLUSH = 1 << 0,
 168};
 169
 170struct ib_uverbs_query_port_resp_ex {
 171        struct ib_uverbs_query_port_resp legacy_resp;
 172        __u16 port_cap_flags2;
 173        __u8  reserved[6];
 174};
 175
 176#endif
 177