]> git.droids-corp.org - dpdk.git/commitdiff
drivers/net: use sleep delay by default for Intel NICs
authorIlya Maximets <i.maximets@samsung.com>
Wed, 10 Oct 2018 14:12:20 +0000 (17:12 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 26 Oct 2018 20:14:06 +0000 (22:14 +0200)
NICs uses different delays up to a second during their
configuration. It makes no sense to busy-wait so long wasting
CPU cycles and preventing any other threads to execute on the
same CPU core. These busy polling are the rudiments that came
from the kernel drivers where you can not sleep in interrupt
context, but as we're in userspace, we're able and should
sleep to allow other threads to run.
Delays never called on rx/tx path, so this should not affect
performance.

Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
drivers/net/avf/Makefile
drivers/net/avf/base/avf_osdep.h
drivers/net/avf/meson.build
drivers/net/e1000/Makefile
drivers/net/e1000/base/e1000_osdep.h
drivers/net/e1000/meson.build
drivers/net/i40e/base/i40e_osdep.h
drivers/net/ifc/base/ifcvf_osdep.h
drivers/net/ixgbe/base/ixgbe_osdep.h
drivers/net/ixgbe/meson.build

index 0a142c1045a65ebd810cf2e1ba95d256404a0358..aec6e4cba201e5a30af1eca2ab25a964c9f81d71 100644 (file)
@@ -8,7 +8,7 @@ include $(RTE_SDK)/mk/rte.vars.mk
 #
 LIB = librte_pmd_avf.a
 
-CFLAGS += -O3 $(WERROR_FLAGS) -Wno-strict-aliasing
+CFLAGS += -O3 $(WERROR_FLAGS) -Wno-strict-aliasing -DALLOW_EXPERIMENTAL_API
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
 LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_hash
 LDLIBS += -lrte_bus_pci
index 9ef45968e729df8f3cab86c0ef56315eeb553023..442a5acd065160a669ea98d60f49e53e8b937d89 100644 (file)
@@ -93,8 +93,8 @@ typedef uint64_t        u64;
 #define avf_memset(a, b, c, d) memset((a), (b), (c))
 #define avf_memcpy(a, b, c, d) rte_memcpy((a), (b), (c))
 
-#define avf_usec_delay(x) rte_delay_us(x)
-#define avf_msec_delay(x) rte_delay_us(1000*(x))
+#define avf_usec_delay(x) rte_delay_us_sleep(x)
+#define avf_msec_delay(x) avf_usec_delay(1000 * (x))
 
 #define AVF_PCI_REG(reg)               rte_read32(reg)
 #define AVF_PCI_REG_ADDR(a, reg) \
index 9a05ebbf4e48c675c372cb3d5e5b5cc427f66a35..2dfda9d4eb336d086f6fd1a12e88f6dd18ba542a 100644 (file)
@@ -3,6 +3,8 @@
 
 cflags += ['-Wno-strict-aliasing']
 
+allow_experimental_apis = true
+
 subdir('base')
 objs = [base_objs]
 
index 9c87e883b7920e98aba73673521b077295bda87e..0ed6276568839767f626f94bd72cd18bf5044bf4 100644 (file)
@@ -10,6 +10,7 @@ LIB = librte_pmd_e1000.a
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -DALLOW_EXPERIMENTAL_API
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
 LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs
 LDLIBS += -lrte_bus_pci
index b8868049fe2b4801ed835b268f8b947537c261fa..5958ea157a5ae808808a99026833fcca01de1783 100644 (file)
@@ -48,7 +48,7 @@
 
 #include "../e1000_logs.h"
 
-#define DELAY(x) rte_delay_us(x)
+#define DELAY(x) rte_delay_us_sleep(x)
 #define usec_delay(x) DELAY(x)
 #define usec_delay_irq(x) DELAY(x)
 #define msec_delay(x) DELAY(1000*(x))
index cf456995ccf31e6132141c63503df7789aa1fb1a..d0901d3779a63502ffceb45c840f69f599362ae2 100644 (file)
@@ -1,6 +1,8 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+allow_experimental_apis = true
+
 subdir('base')
 objs = [base_objs]
 
index 9d6ee4d2360210de30cab491aa4d30124cbba994..8a2d82a8d0cace1b6bc16582c88edd75db1f2844 100644 (file)
@@ -205,9 +205,9 @@ struct i40e_spinlock {
 #define i40e_memcpy(a, b, c, d) rte_memcpy((a), (b), (c))
 
 #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
-#define DELAY(x) rte_delay_us(x)
-#define i40e_usec_delay(x) rte_delay_us(x)
-#define i40e_msec_delay(x) rte_delay_us(1000*(x))
+#define DELAY(x) rte_delay_us_sleep(x)
+#define i40e_usec_delay(x) DELAY(x)
+#define i40e_msec_delay(x) DELAY(1000 * (x))
 #define udelay(x) DELAY(x)
 #define msleep(x) DELAY(1000*(x))
 #define usleep_range(min, max) msleep(DIV_ROUND_UP(min, 1000))
index cf151ef52b97d68f8e7c3e84fc63aacb32e2d8e8..6aef25ea459320e692b068514c373dea9ffc5d66 100644 (file)
@@ -17,7 +17,7 @@
 #define DEBUGOUT(S, args...)    RTE_LOG(DEBUG, PMD, S, ##args)
 #define STATIC                  static
 
-#define msec_delay     rte_delay_ms
+#define msec_delay(x)  rte_delay_us_sleep(1000 * (x))
 
 #define IFCVF_READ_REG8(reg)           rte_read8(reg)
 #define IFCVF_WRITE_REG8(val, reg)     rte_write8((val), (reg))
index e648ea462625c82c8b3f07f158d045a0364feeb4..ea8dc1cbe570111e04a516722e3053d2e7643d2e 100644 (file)
@@ -21,7 +21,7 @@
 
 #define ASSERT(x) if(!(x)) rte_panic("IXGBE: x")
 
-#define DELAY(x) rte_delay_us(x)
+#define DELAY(x) rte_delay_us_sleep(x)
 #define usec_delay(x) DELAY(x)
 #define msec_delay(x) DELAY(1000*(x))
 
index 02d5ef5e4a18a77e9119fb3b1f942779521811a0..544a14148425ca510cdda276ae534b24ed58e869 100644 (file)
@@ -5,10 +5,11 @@ version = 2
 
 cflags += ['-DRTE_LIBRTE_IXGBE_BYPASS']
 
+allow_experimental_apis = true
+
 subdir('base')
 objs = [base_objs]
 
-allow_experimental_apis = true
 sources = files(
        'ixgbe_82599_bypass.c',
        'ixgbe_bypass.c',