rdma: add rdma_create_v4 that handles flags properly
[vpp.git] / src / plugins / rdma / rdma.api
1 /*
2  *------------------------------------------------------------------
3  * Copyright (c) 2019 Cisco and/or its affiliates.
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *------------------------------------------------------------------
16  */
17
18 option version = "3.0.0";
19 import "vnet/interface_types.api";
20
21 enum rdma_mode
22 {
23   RDMA_API_MODE_AUTO = 0,
24   RDMA_API_MODE_IBV = 1,
25   RDMA_API_MODE_DV = 2,
26 };
27
28 /** \brief
29     @param client_index - opaque cookie to identify the sender
30     @param context - sender context, to match reply w/ request
31     @param host_if - Linux netdev interface name
32     @param name - new rdma interface name
33     @param rxq_num - number of receive queues (optional)
34     @param rxq_size - receive queue size (optional)
35     @param txq_size - transmit queue size (optional)
36     @param mode - operation mode (optional)
37 */
38
39 define rdma_create
40 {
41   option deprecated="21.01";
42   u32 client_index;
43   u32 context;
44
45   string host_if[64];
46   string name[64];
47   u16 rxq_num [default=1];
48   u16 rxq_size [default=1024];
49   u16 txq_size [default=1024];
50   vl_api_rdma_mode_t mode [default=0];
51   option vat_help = "<host-if ifname> [name <name>] [rx-queue-size <size>] [tx-queue-size <size>] [num-rx-queues <size>] [mode <auto|ibv|dv>]";
52 };
53
54 /** \brief
55     @param client_index - opaque cookie to identify the sender
56     @param context - sender context, to match reply w/ request
57     @param host_if - Linux netdev interface name
58     @param name - new rdma interface name
59     @param rxq_num - number of receive queues (optional)
60     @param rxq_size - receive queue size (optional)
61     @param txq_size - transmit queue size (optional)
62     @param mode - operation mode (optional)
63     @param no_multi_seg (optional) - disable chained buffer RX
64     @param max_pktlen (optional) - maximal RX packet size.
65 */
66
67 define rdma_create_v2
68 {
69   option deprecated;
70   u32 client_index;
71   u32 context;
72
73   string host_if[64];
74   string name[64];
75   u16 rxq_num [default=1];
76   u16 rxq_size [default=1024];
77   u16 txq_size [default=1024];
78   vl_api_rdma_mode_t mode [default=0];
79   bool no_multi_seg [default=0];
80   u16 max_pktlen [default=0];
81   option vat_help = "<host-if ifname> [name <name>] [rx-queue-size <size>] [tx-queue-size <size>] [num-rx-queues <size>] [mode <auto|ibv|dv>] [no-multi-seg] [max-pktlen <size>]";
82 };
83
84 enum rdma_rss4
85 {
86   RDMA_API_RSS4_AUTO = 0,
87   RDMA_API_RSS4_IP = 1,
88   RDMA_API_RSS4_IP_UDP = 2,
89   RDMA_API_RSS4_IP_TCP = 3,
90 };
91
92 enum rdma_rss6
93 {
94   RDMA_API_RSS6_AUTO = 0,
95   RDMA_API_RSS6_IP = 1,
96   RDMA_API_RSS6_IP_UDP = 2,
97   RDMA_API_RSS6_IP_TCP = 3,
98 };
99
100 /** \brief
101     Same as v4, just not an autoendian (expect buggy handling of flag values).
102
103     @param client_index - opaque cookie to identify the sender
104     @param context - sender context, to match reply w/ request
105     @param host_if - Linux netdev interface name
106     @param name - new rdma interface name
107     @param rxq_num - number of receive queues (optional)
108     @param rxq_size - receive queue size (optional)
109     @param txq_size - transmit queue size (optional)
110     @param mode - operation mode (optional)
111     @param no_multi_seg (optional) - disable chained buffer RX
112     @param max_pktlen (optional) - maximal RX packet size.
113     @param rss4 (optional) - IPv4 RSS
114     @param rss6 (optional) - IPv6 RSS
115 */
116
117 define rdma_create_v3
118 {
119   option deprecated;
120   option replaced_by="rdma_create_v4";
121
122   u32 client_index;
123   u32 context;
124
125   string host_if[64];
126   string name[64];
127   u16 rxq_num [default=1];
128   u16 rxq_size [default=1024];
129   u16 txq_size [default=1024];
130   vl_api_rdma_mode_t mode [default=0];
131   bool no_multi_seg [default=0];
132   u16 max_pktlen [default=0];
133   vl_api_rdma_rss4_t rss4 [default=0];
134   vl_api_rdma_rss6_t rss6 [default=0];
135   option vat_help = "<host-if ifname> [name <name>] [rx-queue-size <size>] [tx-queue-size <size>] [num-rx-queues <size>] [mode <auto|ibv|dv>] [no-multi-seg] [max-pktlen <size>] [rss <ipv4|ipv4-udp|ipv4-tcp>] [rss <ipv6|ipv6-udp|ipv6-tcp>]";
136 };
137
138 /** \brief
139     @param client_index - opaque cookie to identify the sender
140     @param context - sender context, to match reply w/ request
141     @param host_if - Linux netdev interface name
142     @param name - new rdma interface name
143     @param rxq_num - number of receive queues (optional)
144     @param rxq_size - receive queue size (optional)
145     @param txq_size - transmit queue size (optional)
146     @param mode - operation mode (optional)
147     @param no_multi_seg (optional) - disable chained buffer RX
148     @param max_pktlen (optional) - maximal RX packet size.
149     @param rss4 (optional) - IPv4 RSS
150     @param rss6 (optional) - IPv6 RSS
151 */
152
153 autoendian define rdma_create_v4
154 {
155   u32 client_index;
156   u32 context;
157
158   string host_if[64];
159   string name[64];
160   u16 rxq_num [default=1];
161   u16 rxq_size [default=1024];
162   u16 txq_size [default=1024];
163   vl_api_rdma_mode_t mode [default=0];
164   bool no_multi_seg [default=0];
165   u16 max_pktlen [default=0];
166   vl_api_rdma_rss4_t rss4 [default=0];
167   vl_api_rdma_rss6_t rss6 [default=0];
168   option vat_help = "<host-if ifname> [name <name>] [rx-queue-size <size>] [tx-queue-size <size>] [num-rx-queues <size>] [mode <auto|ibv|dv>] [no-multi-seg] [max-pktlen <size>] [rss <ipv4|ipv4-udp|ipv4-tcp>] [rss <ipv6|ipv6-udp|ipv6-tcp>]";
169 };
170
171 /** \brief
172     @param context - sender context, to match reply w/ request
173     @param retval - return value for request
174     @param sw_if_index - software index for the new rdma interface
175 */
176
177 define rdma_create_reply
178 {
179   option deprecated;
180
181   u32 context;
182   i32 retval;
183   vl_api_interface_index_t sw_if_index;
184 };
185
186 /** \brief
187     @param context - sender context, to match reply w/ request
188     @param retval - return value for request
189     @param sw_if_index - software index for the new rdma interface
190 */
191
192 define rdma_create_v2_reply
193 {
194   option deprecated;
195
196   u32 context;
197   i32 retval;
198   vl_api_interface_index_t sw_if_index;
199 };
200
201 /** \brief
202     @param client_index - opaque cookie to identify the sender
203     @param context - sender context, to match reply w/ request
204     @param sw_if_index - interface index
205 */
206
207 define rdma_create_v3_reply
208 {
209   u32 context;
210   i32 retval;
211   vl_api_interface_index_t sw_if_index;
212 };
213
214 /** \brief
215     @param client_index - opaque cookie to identify the sender
216     @param context - sender context, to match reply w/ request
217     @param sw_if_index - interface index
218 */
219
220 autoendian define rdma_create_v4_reply
221 {
222   u32 context;
223   i32 retval;
224   vl_api_interface_index_t sw_if_index;
225 };
226
227 /** \brief
228     @param client_index - opaque cookie to identify the sender
229     @param context - sender context, to match reply w/ request
230     @param sw_if_index - interface index
231 */
232
233 autoreply define rdma_delete
234 {
235   u32 client_index;
236   u32 context;
237
238   vl_api_interface_index_t sw_if_index;
239   option vat_help = "<sw_if_index index>";
240 };
241
242 /*
243  * Local Variables:
244  * eval: (c-set-style "gnu")
245  * End:
246  */