Commit | Line | Data |
---|---|---|
d50e14ab | 1 | /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB) */ |
64b19e13 | 2 | /* |
1f7ff9d5 | 3 | * Copyright (c) 2017-2018, Mellanox Technologies inc. All rights reserved. |
64b19e13 MB |
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 | ||
1f7ff9d5 | 37 | #include <linux/types.h> |
9ee79fce | 38 | |
1f7ff9d5 | 39 | #ifndef RDMA_UAPI_PTR |
be23fb9a | 40 | #define RDMA_UAPI_PTR(_type, _name) __aligned_u64 _name |
64b19e13 MB |
41 | #endif |
42 | ||
2eb9beae MB |
43 | enum ib_uverbs_flow_action_esp_keymat { |
44 | IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM, | |
45 | }; | |
46 | ||
47 | enum ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo { | |
48 | IB_UVERBS_FLOW_ACTION_IV_ALGO_SEQ, | |
49 | }; | |
50 | ||
51 | struct ib_uverbs_flow_action_esp_keymat_aes_gcm { | |
52 | __aligned_u64 iv; | |
53 | __u32 iv_algo; /* Use enum ib_uverbs_flow_action_esp_keymat_aes_gcm_iv_algo */ | |
54 | ||
55 | __u32 salt; | |
56 | __u32 icv_len; | |
57 | ||
58 | __u32 key_len; | |
59 | __u32 aes_key[256 / 32]; | |
60 | }; | |
61 | ||
62 | enum ib_uverbs_flow_action_esp_replay { | |
63 | IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE, | |
64 | IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP, | |
65 | }; | |
66 | ||
67 | struct ib_uverbs_flow_action_esp_replay_bmp { | |
68 | __u32 size; | |
69 | }; | |
70 | ||
71 | enum ib_uverbs_flow_action_esp_flags { | |
72 | IB_UVERBS_FLOW_ACTION_ESP_FLAGS_INLINE_CRYPTO = 0UL << 0, /* Default */ | |
73 | IB_UVERBS_FLOW_ACTION_ESP_FLAGS_FULL_OFFLOAD = 1UL << 0, | |
74 | ||
75 | IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TUNNEL = 0UL << 1, /* Default */ | |
76 | IB_UVERBS_FLOW_ACTION_ESP_FLAGS_TRANSPORT = 1UL << 1, | |
77 | ||
78 | IB_UVERBS_FLOW_ACTION_ESP_FLAGS_DECRYPT = 0UL << 2, /* Default */ | |
79 | IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ENCRYPT = 1UL << 2, | |
80 | ||
81 | IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW = 1UL << 3, | |
82 | }; | |
83 | ||
84 | struct ib_uverbs_flow_action_esp_encap { | |
85 | /* This struct represents a list of pointers to flow_xxxx_filter that | |
86 | * encapsulates the payload in ESP tunnel mode. | |
87 | */ | |
88 | RDMA_UAPI_PTR(void *, val_ptr); /* pointer to a flow_xxxx_filter */ | |
89 | RDMA_UAPI_PTR(struct ib_uverbs_flow_action_esp_encap *, next_ptr); | |
90 | __u16 len; /* Len of the filter struct val_ptr points to */ | |
91 | __u16 type; /* Use flow_spec_type enum */ | |
92 | }; | |
93 | ||
94 | struct ib_uverbs_flow_action_esp { | |
95 | __u32 spi; | |
96 | __u32 seq; | |
97 | __u32 tfc_pad; | |
98 | __u32 flags; | |
99 | __aligned_u64 hard_limit_pkts; | |
100 | }; | |
101 | ||
1f7ff9d5 | 102 | #endif |