API sw_interface_dump: Dump all if index is zero
[vpp.git] / src / vnet / devices / netmap / device.c
index 409a52f..47407aa 100644 (file)
@@ -93,9 +93,9 @@ format_netmap_tx_trace (u8 * s, va_list * args)
   return s;
 }
 
-static uword
-netmap_interface_tx (vlib_main_t * vm,
-                    vlib_node_runtime_t * node, vlib_frame_t * frame)
+VNET_DEVICE_CLASS_TX_FN (netmap_device_class) (vlib_main_t * vm,
+                                              vlib_node_runtime_t * node,
+                                              vlib_frame_t * frame)
 {
   netmap_main_t *nm = &netmap_main;
   u32 *buffers = vlib_frame_vector_args (frame);
@@ -143,8 +143,8 @@ netmap_interface_tx (vlib_main_t * vm,
              b0 = vlib_get_buffer (vm, bi);
              len = b0->current_length;
              /* memcpy */
-             clib_memcpy ((u8 *) NETMAP_BUF (ring, slot->buf_idx) + offset,
-                          vlib_buffer_get_current (b0), len);
+             clib_memcpy_fast ((u8 *) NETMAP_BUF (ring, slot->buf_idx) +
+                               offset, vlib_buffer_get_current (b0), len);
              offset += len;
            }
          while ((bi = b0->next_buffer));
@@ -231,7 +231,6 @@ netmap_subif_add_del_function (vnet_main_t * vnm,
 /* *INDENT-OFF* */
 VNET_DEVICE_CLASS (netmap_device_class) = {
   .name = "netmap",
-  .tx_function = netmap_interface_tx,
   .format_device_name = format_netmap_device_name,
   .format_device = format_netmap_device,
   .format_tx_trace = format_netmap_tx_trace,
@@ -242,9 +241,6 @@ VNET_DEVICE_CLASS (netmap_device_class) = {
   .admin_up_down_function = netmap_interface_admin_up_down,
   .subif_add_del_function = netmap_subif_add_del_function,
 };
-
-VLIB_DEVICE_TX_FUNCTION_MULTIARCH(netmap_device_class,
-                                 netmap_interface_tx)
 /* *INDENT-ON* */
 
 /*