dpdk: fix rte_delay_us callback issue 29/4129/2
authorDamjan Marion <damarion@cisco.com>
Tue, 6 Dec 2016 15:50:42 +0000 (16:50 +0100)
committerDave Barach <openvpp@barachs.net>
Tue, 6 Dec 2016 17:26:03 +0000 (17:26 +0000)
Introduced by recent commit. It causes initalization failure on many
NICs.

Change-Id: I409ebb8ca5ae29eb9d43438017a0d1ddddb472fc
Signed-off-by: Damjan Marion <damarion@cisco.com>
vpp/vnet/main.c

index bc73723..6dac33c 100644 (file)
@@ -37,12 +37,7 @@ rte_delay_us_override (unsigned us)
 
   /* Don't bother intercepting for short delays */
   if (us < 10)
-    {
-#if RTE_VERSION < RTE_VERSION_NUM(16, 11, 0, 0)
-      rte_delay_us_block (us);
-#endif
-      return 0;
-    }
+    return 0;
 
   /*
    * Only intercept if we are in a vlib process.
@@ -72,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
@@ -88,7 +90,7 @@ vpe_main_init (vlib_main_t * vm)
 #if DPDK
 #if RTE_VERSION >= RTE_VERSION_NUM(16, 11, 0, 0)
   /* register custom delay function */
-  rte_delay_us_callback_register ((void (*)) rte_delay_us_override);
+  rte_delay_us_callback_register (rte_delay_us_override_cb);
 #endif
 #endif
 }