dpdk: fix rte_delay_us callback issue
[vpp.git] / vpp / vnet / main.c
index ce49738..6dac33c 100644 (file)
@@ -67,6 +67,13 @@ rte_delay_us_override (unsigned us)
     }
   return 0;                    // no override
 }
+
+static void
+rte_delay_us_override_cb (unsigned us)
+{
+  if (rte_delay_us_override (us) == 0)
+    rte_delay_us_block (us);
+}
 #endif
 
 static void
@@ -79,6 +86,13 @@ vpe_main_init (vlib_main_t * vm)
 
   /* Turn off network stack components which we don't want */
   vlib_mark_init_function_complete (vm, srp_init);
+
+#if DPDK
+#if RTE_VERSION >= RTE_VERSION_NUM(16, 11, 0, 0)
+  /* register custom delay function */
+  rte_delay_us_callback_register (rte_delay_us_override_cb);
+#endif
+#endif
 }
 
 /*
@@ -248,11 +262,7 @@ defaulted:
     {
       vm->init_functions_called = hash_create (0, /* value bytes */ 0);
       vpe_main_init (vm);
-#if DPDK
-#if !DPDK_SHARED_LIB
-      dpdk_pmd_constructor_init ();
-#endif
-#else
+#if DPDK == 0
       unix_physmem_init (vm, 0 /* fail_if_physical_memory_not_present */ );
 #endif
       vlib_set_get_handoff_structure_cb (&vnet_get_handoff_structure);