aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/vmxnet3/vmxnet3.api
blob: bcea9683f08add754e2184b007f049d8f2800011 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
/*
 *------------------------------------------------------------------
 * Copyright (c) 2018 Cisco and/or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *------------------------------------------------------------------
 */

option version = "1.2.0";
import "vnet/interface_types.api";
import "vnet/ethernet/ethernet_types.api";

/** \brief
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param pci_addr - pci address as unsigned 32bit integer:
		      0-15 domain, 16-23 bus, 24-28 slot, 29-31 function 
		      ddddddddddddddddbbbbbbbbsssssfff
    @param enable_elog - turn on elog (optional - default is off)
    @param rxq_size - receive queue size (optional - default is 1024)
    @param rxq_num - number of receive queues (optional - default is 1)
    @param txq_size - transmit queue size (optional - default is 1024)
    @param txq_num - number of transmit queues (optional - default is 1)
    @param bind - automatically bind PCI to vfio-pci module
		      (optional - default is 0)
    @param enable_gso - enable gso (optional - default is 0)
*/

define vmxnet3_create
{
  u32 client_index;
  u32 context;

  u32 pci_addr;
  i32 enable_elog;
  u16 rxq_size;
  u16 rxq_num;
  u16 txq_size;
  u16 txq_num;
  u8 bind;
  bool enable_gso;
  option vat_help = "<pci-address> [rx-queue-size <size>] [tx-queue-size <size>] [num-tx-queues <num>] [num-rx-queues <num>] [bind] [gso]";
};

/** \brief
    @param context - sender context, to match reply w/ request
    @param retval - return value for request
    @param sw_if_index - software index for the new vmxnet3 interface
*/

define vmxnet3_create_reply
{
  u32 context;
  i32 retval;
  vl_api_interface_index_t sw_if_index;
};

/** \brief
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param sw_if_index - interface index
*/

autoreply define vmxnet3_delete
{
  u32 client_index;
  u32 context;

  vl_api_interface_index_t sw_if_index;
  option vat_help = "sw_if_index <sw_if_index>";
};

/** \brief vmxnet3_tx_list structure
    @param tx_qsize - tx queue size
    @param tx_next - tx next index
    @param tx_produce - tx produce index
    @param tx_consume - tx consume index
*/

typedef vmxnet3_tx_list
{
  u16 tx_qsize;
  u16 tx_next;
  u16 tx_produce;
  u16 tx_consume;
};

/** \brief vmxnet3_rx_list structure
    @param rx_qsize - rx queue size
    @param rx_fill - rx fill count
    @param rx_next - rx next index
    @param rx_produce - rx produce index
    @param rx_consume - rx consume index
*/

typedef vmxnet3_rx_list
{
  u16 rx_qsize;
  u16 rx_fill[2];
  u16 rx_next;
  u16 rx_produce[2];
  u16 rx_consume[2];
};

/** \brief Memory interface details structure
    @param context - sender context, to match reply w/ request (memif_dump)
    @param sw_if_index - index of the interface
    @param if_name - name of the interface
    @param hw_addr - interface MAC address
    @param pci_addr - pci address of the interface
    @param version - vmxnet3 hardware version
    @param admin_up_down - interface administrative status
    @param rx_count - number of elements in rx_list
    @param rx_list - list of vmxnet3_rx_list
    @param tx_count - number of elements in tx_list
    @param tx_list - list of vmnxnet3_tx_list
*/
define vmxnet3_details
{
  u32 context;

  vl_api_interface_index_t sw_if_index;
  string if_name[64];
  vl_api_mac_address_t hw_addr;
  u32 pci_addr;
  u8 version;
  bool admin_up_down;

  u8 rx_count;
  vl_api_vmxnet3_rx_list_t rx_list[16];

  u8 tx_count;
  vl_api_vmxnet3_tx_list_t tx_list[8];
};

/** \brief Dump all vmxnet3 interfaces
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
*/
define vmxnet3_dump
{
  option deprecated;
  u32 client_index;
  u32 context;
};

/** \brief Dump vmxnet3 interfaces
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param vl_api_interface_index_t sw_if_index [default=0xffffffff];
*/
define sw_vmxnet3_interface_dump
{
  u32 client_index;
  u32 context;
  vl_api_interface_index_t sw_if_index [default=0xffffffff];
};

/** \brief Reply for vmxnet3_interface_dump
    @param context - sender context, to match reply w/ request (memif_dump)
    @param sw_if_index - index of the interface
    @param if_name - name of the interface
    @param hw_addr - interface MAC address
    @param pci_addr - pci address of the interface
    @param version - vmxnet3 hardware version
    @param admin_up_down - interface administrative status
    @param rx_count - number of elements in rx_list
    @param rx_list - list of vmxnet3_rx_list
    @param tx_count - number of elements in tx_list
    @param tx_list - list of vmnxnet3_tx_list
*/
define sw_vmxnet3_interface_details
{
  u32 context;

  vl_api_interface_index_t sw_if_index;
  string if_name[64];
  vl_api_mac_address_t hw_addr;
  u32 pci_addr;
  u8 version;
  bool admin_up_down;

  u8 rx_count;
  vl_api_vmxnet3_rx_list_t rx_list[16];

  u8 tx_count;
  vl_api_vmxnet3_tx_list_t tx_list[8];
};

/*
 * Local Variables:
 * eval: (c-set-style "gnu")
 * End:
 */