API: Add support for type aliases
[vpp.git] / src / vnet / interface.api
index a8d4d71..84e0483 100644 (file)
@@ -1,4 +1,22 @@
-option version = "2.0.0";
+/* Hey Emacs use -*- mode: C -*- */
+/*
+ * 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 = "2.2.0";
+
+import "vnet/interface_types.api";
 
 service {
   rpc want_interface_events returns want_interface_events_reply
@@ -99,7 +117,7 @@ autoreply define want_interface_events
     @param pid - the interface's l2 address
     @param interface_name - name of the interface
     @param link_duplex - 1 if half duplex, 2 if full duplex
-    @param link_speed - 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G
+    @param link_speed - value in kbps
     @param link_MTU - max. transmission unit
     @param sub_if_id - A number 0-N to uniquely identify this subif on super if
     @param sub_dot1ad - 0 = dot1q, 1 = dot1ad
@@ -144,8 +162,8 @@ define sw_interface_details
   /* 1 = half duplex, 2 = full duplex */
   u8 link_duplex;
 
-  /* 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G */
-  u8 link_speed;
+  /* link speed in kbps */
+  u32 link_speed;
 
   /* MTU */
   u16 link_mtu;
@@ -433,6 +451,9 @@ autoreply define sw_interface_set_rx_mode
 };
 
 /** \brief Set an interface's rx-placement
+    Rx-Queue placement on specific thread is operational for only hardware
+    interface. It will not set queue - thread placement for sub-interfaces,
+    p2p and pipe interfaces.
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
     @param sw_if_index - the interface whose rx-placement will be set
@@ -450,6 +471,44 @@ autoreply define sw_interface_set_rx_placement
     u8 is_main;
 };
 
+/** \brief dump the rx queue placement of interface(s)
+    @param sw_if_index - optional interface index for which queue placement to
+      be requested. sw_if_index = ~0 will dump placement information for all
+      interfaces. It will not dump information related to sub-interfaces, p2p
+      and pipe interfaces.
+*/
+define sw_interface_rx_placement_dump
+{
+  u32 client_index;
+  u32 context;
+  u32 sw_if_index;
+};
+
+/** \brief show the interface's queue - thread placement
+    This api is used to display the interface and queue worker
+    thread placement. One message per rx-queue per interface will
+    be sent to client.
+    Each message will contain information about rx-queue id of an
+    interface, interface index, thread on which this rx-queue is
+    placed and mode of rx-queue.
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param sw_if_index - the interface whose rx-placement will be dumped
+    @param queue_id - the queue id
+    @param worker_id - the worker id on which queue_id is placed,
+                       worker_id = 0 means main thread.
+    @param mode - polling=1, interrupt=2, adaptive=3
+*/
+define sw_interface_rx_placement_details
+{
+  u32 client_index;
+  u32 context;
+  u32 sw_if_index;
+  u32 queue_id;
+  u32 worker_id;
+  u8 mode;
+};
+
 /* Gross kludge, DGMS */
 autoreply define interface_name_renumber
 {