rdma: add support for RSS configuration
[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     @param client_index - opaque cookie to identify the sender
102     @param context - sender context, to match reply w/ request
103     @param host_if - Linux netdev interface name
104     @param name - new rdma interface name
105     @param rxq_num - number of receive queues (optional)
106     @param rxq_size - receive queue size (optional)
107     @param txq_size - transmit queue size (optional)
108     @param mode - operation mode (optional)
109     @param no_multi_seg (optional) - disable chained buffer RX
110     @param max_pktlen (optional) - maximal RX packet size.
111     @param rss4 (optional) - IPv4 RSS
112     @param rss6 (optional) - IPv6 RSS
113 */
114
115 define rdma_create_v3
116 {
117   u32 client_index;
118   u32 context;
119
120   string host_if[64];
121   string name[64];
122   u16 rxq_num [default=1];
123   u16 rxq_size [default=1024];
124   u16 txq_size [default=1024];
125   vl_api_rdma_mode_t mode [default=0];
126   bool no_multi_seg [default=0];
127   u16 max_pktlen [default=0];
128   vl_api_rdma_rss4_t rss4 [default=0];
129   vl_api_rdma_rss6_t rss6 [default=0];
130   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>]";
131 };
132
133
134 /** \brief
135     @param context - sender context, to match reply w/ request
136     @param retval - return value for request
137     @param sw_if_index - software index for the new rdma interface
138 */
139
140 define rdma_create_reply
141 {
142   u32 context;
143   i32 retval;
144   vl_api_interface_index_t sw_if_index;
145 };
146
147 /** \brief
148     @param context - sender context, to match reply w/ request
149     @param retval - return value for request
150     @param sw_if_index - software index for the new rdma interface
151 */
152
153 define rdma_create_v2_reply
154 {
155   u32 context;
156   i32 retval;
157   vl_api_interface_index_t sw_if_index;
158 };
159
160 /** \brief
161     @param client_index - opaque cookie to identify the sender
162     @param context - sender context, to match reply w/ request
163     @param sw_if_index - interface index
164 */
165
166 define rdma_create_v3_reply
167 {
168   u32 context;
169   i32 retval;
170   vl_api_interface_index_t sw_if_index;
171 };
172
173 /** \brief
174     @param client_index - opaque cookie to identify the sender
175     @param context - sender context, to match reply w/ request
176     @param sw_if_index - interface index
177 */
178
179 autoreply define rdma_delete
180 {
181   u32 client_index;
182   u32 context;
183
184   vl_api_interface_index_t sw_if_index;
185   option vat_help = "<sw_if_index index>";
186 };
187
188 /*
189  * Local Variables:
190  * eval: (c-set-style "gnu")
191  * End:
192  */