avf: api fix 44/13644/3
authorJakub Grajciar <jgrajcia@cisco.com>
Tue, 24 Jul 2018 12:00:41 +0000 (14:00 +0200)
committerNeale Ranns <nranns@cisco.com>
Wed, 25 Jul 2018 12:05:29 +0000 (12:05 +0000)
avf_create_reply returns software index for the new interface

Change-Id: I8a6b1a1985b072efafa24eb258b1f2cb1bea1110
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
src/plugins/avf/avf.api
src/plugins/avf/avf.h
src/plugins/avf/avf_api.c
src/plugins/avf/device.c

index 096d45b..cbded70 100644 (file)
@@ -27,7 +27,7 @@ option version = "1.0.0";
     @param txq_size - transmit queue size
 */
 
-autoreply define avf_create
+define avf_create
 {
   u32 client_index;
   u32 context;
@@ -38,6 +38,19 @@ autoreply define avf_create
   u16 txq_size;
 };
 
+/** \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 avf interface
+*/
+
+define avf_create_reply
+{
+  u32 context;
+  i32 retval;
+  u32 sw_if_index;
+};
+
 /** \brief
     @param client_index - opaque cookie to identify the sender
     @param context - sender context, to match reply w/ request
index 32bbb46..14d7819 100644 (file)
@@ -204,6 +204,7 @@ typedef struct
   u16 txq_size;
   /* return */
   int rv;
+  u32 sw_if_index;
   clib_error_t *error;
 } avf_create_if_args_t;
 
index 7c59252..3bb720b 100644 (file)
@@ -62,20 +62,24 @@ vl_api_avf_create_t_handler (vl_api_avf_create_t * mp)
   avf_main_t *am = &avf_main;
   vl_api_avf_create_reply_t *rmp;
   avf_create_if_args_t args;
-  int rv = 0;
+  int rv;
 
   memset (&args, 0, sizeof (avf_create_if_args_t));
 
   args.enable_elog = ntohl (mp->enable_elog);
   args.addr.as_u32 = ntohl (mp->pci_addr);
-  args.rxq_size = ntohl (mp->rxq_size);
-  args.txq_size = ntohl (mp->txq_size);
+  args.rxq_size = ntohs (mp->rxq_size);
+  args.txq_size = ntohs (mp->txq_size);
 
   avf_create_if (vm, &args);
-
   rv = args.rv;
 
-  REPLY_MACRO (VL_API_AVF_CREATE_REPLY + am->msg_id_base);
+  /* *INDENT-OFF* */
+  REPLY_MACRO2 (VL_API_AVF_CREATE_REPLY + am->msg_id_base,
+    ({
+      rmp->sw_if_index = ntohl (args.sw_if_index);
+    }));
+  /* *INDENT-ON* */
 }
 
 static void
index be2205b..0e9a8bf 100644 (file)
@@ -1171,7 +1171,7 @@ avf_create_if (vlib_main_t * vm, avf_create_if_args_t * args)
     goto error;
 
   vnet_sw_interface_t *sw = vnet_get_hw_sw_interface (vnm, ad->hw_if_index);
-  ad->sw_if_index = sw->sw_if_index;
+  args->sw_if_index = ad->sw_if_index = sw->sw_if_index;
 
   vnet_hw_interface_t *hw = vnet_get_hw_interface (vnm, ad->hw_if_index);
   hw->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_INT_MODE;