Move rte_delay_us_override so it overrides DPDK
[vpp.git] / vnet / vnet / devices / dpdk / device.c
index a38c8d1..c53d22b 100644 (file)
@@ -1201,7 +1201,7 @@ u32 dpdk_get_admin_up_down_in_progress (void)
   return dpdk_main.admin_up_down_in_progress;
 }
 
-static uword
+uword
 admin_up_down_process (vlib_main_t * vm,
                        vlib_node_runtime_t * rt,
                        vlib_frame_t * f)
@@ -1266,47 +1266,6 @@ void post_sw_interface_set_flags (vlib_main_t *vm, u32 sw_if_index, u32 flags)
   d[1] = flags;
 }
 
-/*
- * Called by the dpdk driver's rte_delay_us() function. 
- * Return 0 to have the dpdk do a regular delay loop.
- * Return 1 if to skip the delay loop because we are suspending
- * the calling vlib process instead.
- */
-int rte_delay_us_override (unsigned us) {
-  vlib_main_t * vm;
-
-  /* Don't bother intercepting for short delays */
-  if (us < 10) return 0;
-
-  /* 
-   * Only intercept if we are in a vlib process. 
-   * If we are called from a vlib worker thread or the vlib main
-   * thread then do not intercept. (Must not be called from an 
-   * independent pthread).
-   */
-  if (os_get_cpu_number() == 0)
-    {
-      /* 
-       * We're in the vlib main thread or a vlib process. Make sure
-       * the process is running and we're not still initializing.
-       */
-      vm = vlib_get_main();
-      if (vlib_in_process_context(vm))
-        {
-          /* Only suspend for the admin_down_process */
-          vlib_process_t * proc = vlib_get_current_process(vm);
-          if (!(proc->flags & VLIB_PROCESS_IS_RUNNING) ||
-              (proc->node_runtime.function != admin_up_down_process))
-                return 0;
-
-          f64 delay = 1e-6 * us;
-          vlib_process_suspend(vm, delay);
-          return 1;
-        }
-    }
-  return 0; // no override
-}
-
 /*
  * Return a copy of the DPDK port stats in dest.
  */