DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ilya Maximets <i.maximets@samsung.com>
To: dev@dpdk.org
Cc: Jingjing Wu <jingjing.wu@intel.com>,
	Konstantin Ananyev <konstantin.ananyev@intel.com>,
	Wenzhuo Lu <wenzhuo.lu@intel.com>,
	Beilei Xing <beilei.xing@intel.com>,
	Qi Zhang <qi.z.zhang@intel.com>,
	Xiao Wang <xiao.w.wang@intel.com>,
	Bruce Richardson <bruce.richardson@intel.com>,
	Ilya Maximets <i.maximets@samsung.com>
Subject: [dpdk-dev] [PATCH v1 2/2] drivers/net: use sleep delay by default for intel NICs
Date: Mon,  3 Sep 2018 17:48:31 +0300	[thread overview]
Message-ID: <20180903144704eucas1p1d469c23bc22f25af27f00d94aaf8a660~Q6ybQBf930609506095eucas1p1P@eucas1p1.samsung.com> (raw)
In-Reply-To: <20180903144311eucas1p2b6499c49dbd0d54334e973113cdc5ad6~Q6vBsFYRm1033710337eucas1p2D@eucas1p2.samsung.com>

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>
---
 drivers/net/avf/Makefile             | 1 +
 drivers/net/avf/base/avf_osdep.h     | 4 ++--
 drivers/net/e1000/Makefile           | 1 +
 drivers/net/e1000/base/e1000_osdep.h | 2 +-
 drivers/net/e1000/meson.build        | 2 ++
 drivers/net/i40e/base/i40e_osdep.h   | 6 +++---
 drivers/net/ifc/base/ifcvf_osdep.h   | 2 +-
 drivers/net/ixgbe/base/ixgbe_osdep.h | 2 +-
 drivers/net/ixgbe/meson.build        | 3 ++-
 9 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/drivers/net/avf/Makefile b/drivers/net/avf/Makefile
index 3f815bbc4..8ee707529 100644
--- a/drivers/net/avf/Makefile
+++ b/drivers/net/avf/Makefile
@@ -9,6 +9,7 @@ include $(RTE_SDK)/mk/rte.vars.mk
 LIB = librte_pmd_avf.a
 
 CFLAGS += -O3
+CFLAGS += -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
diff --git a/drivers/net/avf/base/avf_osdep.h b/drivers/net/avf/base/avf_osdep.h
index 9ef45968e..442a5acd0 100644
--- a/drivers/net/avf/base/avf_osdep.h
+++ b/drivers/net/avf/base/avf_osdep.h
@@ -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) \
diff --git a/drivers/net/e1000/Makefile b/drivers/net/e1000/Makefile
index 9c87e883b..0ed627656 100644
--- a/drivers/net/e1000/Makefile
+++ b/drivers/net/e1000/Makefile
@@ -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
diff --git a/drivers/net/e1000/base/e1000_osdep.h b/drivers/net/e1000/base/e1000_osdep.h
index b8868049f..5958ea157 100644
--- a/drivers/net/e1000/base/e1000_osdep.h
+++ b/drivers/net/e1000/base/e1000_osdep.h
@@ -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))
diff --git a/drivers/net/e1000/meson.build b/drivers/net/e1000/meson.build
index cf456995c..d0901d377 100644
--- a/drivers/net/e1000/meson.build
+++ b/drivers/net/e1000/meson.build
@@ -1,6 +1,8 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+allow_experimental_apis = true
+
 subdir('base')
 objs = [base_objs]
 
diff --git a/drivers/net/i40e/base/i40e_osdep.h b/drivers/net/i40e/base/i40e_osdep.h
index 8e5c593c9..a6072e153 100644
--- a/drivers/net/i40e/base/i40e_osdep.h
+++ b/drivers/net/i40e/base/i40e_osdep.h
@@ -233,9 +233,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))
diff --git a/drivers/net/ifc/base/ifcvf_osdep.h b/drivers/net/ifc/base/ifcvf_osdep.h
index cf151ef52..6aef25ea4 100644
--- a/drivers/net/ifc/base/ifcvf_osdep.h
+++ b/drivers/net/ifc/base/ifcvf_osdep.h
@@ -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))
diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h
index bb5dfd2af..94ede9bc2 100644
--- a/drivers/net/ixgbe/base/ixgbe_osdep.h
+++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
@@ -51,7 +51,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))
 
diff --git a/drivers/net/ixgbe/meson.build b/drivers/net/ixgbe/meson.build
index 02d5ef5e4..544a14148 100644
--- a/drivers/net/ixgbe/meson.build
+++ b/drivers/net/ixgbe/meson.build
@@ -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',
-- 
2.17.1

  parent reply	other threads:[~2018-09-03 14:47 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20180831124358eucas1p22a0f8a7d0ae34dfad73b3b9e819366ec@eucas1p2.samsung.com>
2018-08-31 12:45 ` [dpdk-dev] [RFC 0/2] CPU non-blocking delay Ilya Maximets
2018-08-31 13:01   ` Bruce Richardson
2018-08-31 13:39   ` Bruce Richardson
2018-09-03 14:41     ` Ilya Maximets
     [not found]   ` <CGME20180903144311eucas1p2b6499c49dbd0d54334e973113cdc5ad6@eucas1p2.samsung.com>
2018-09-03 14:44     ` [dpdk-dev] [PATCH v1 " Ilya Maximets
     [not found]       ` <CGME20180903144615eucas1p1d7377fa285a86f522f29c2a9528a638e@eucas1p1.samsung.com>
2018-09-03 14:47         ` [dpdk-dev] [PATCH v1 1/2] eal: add nanosleep based delay function Ilya Maximets
2018-09-05 13:10           ` Stephen Hemminger
2018-09-10 15:11             ` Ilya Maximets
     [not found]       ` <CGME20180903144704eucas1p1d469c23bc22f25af27f00d94aaf8a660@eucas1p1.samsung.com>
2018-09-03 14:48         ` Ilya Maximets [this message]
     [not found]       ` <CGME20180914105928eucas1p2be05dc93e02df94e895de24d5564927c@eucas1p2.samsung.com>
2018-09-14 11:01         ` [dpdk-dev] [PATCH v2 0/2] CPU non-blocking delay Ilya Maximets
     [not found]           ` <CGME20180914105950eucas1p1391d6eccd8ccd5a03e7f742f1d12bb9d@eucas1p1.samsung.com>
2018-09-14 11:01             ` [dpdk-dev] [PATCH v2 1/2] eal: add nanosleep based delay function Ilya Maximets
     [not found]           ` <CGME20180914105954eucas1p1662492cee6b5387cd4655ec940619ea8@eucas1p1.samsung.com>
2018-09-14 11:01             ` [dpdk-dev] [PATCH v2 2/2] drivers/net: use sleep delay by default for intel NICs Ilya Maximets
2018-09-28 11:38           ` [dpdk-dev] [PATCH v2 0/2] CPU non-blocking delay Ilya Maximets
     [not found]           ` <CGME20181004143338eucas1p2690a63adeb26785846ad0ea71b695215@eucas1p2.samsung.com>
2018-10-04 14:35             ` [dpdk-dev] [PATCH v3 " Ilya Maximets
     [not found]               ` <CGME20181004143343eucas1p2e4d18dbed12ac9cebc6ea1af599f751a@eucas1p2.samsung.com>
2018-10-04 14:35                 ` [dpdk-dev] [PATCH v3 1/2] eal: add nanosleep based delay function Ilya Maximets
     [not found]               ` <CGME20181004143345eucas1p2f9dfea7ea41111c2ce9cab98434339d0@eucas1p2.samsung.com>
2018-10-04 14:35                 ` [dpdk-dev] [PATCH v3 2/2] drivers/net: use sleep delay by default for intel NICs Ilya Maximets
     [not found]               ` <CGME20181010140956eucas1p2720bbf053c9dd0ebbafbc99bb1dd6e1d@eucas1p2.samsung.com>
2018-10-10 14:12                 ` [dpdk-dev] [PATCH v4 0/2] CPU non-blocking delay Ilya Maximets
     [not found]                   ` <CGME20181010141003eucas1p23e7bdfaad8cd676549f1cae42b6a8e40@eucas1p2.samsung.com>
2018-10-10 14:12                     ` [dpdk-dev] [PATCH v4 1/2] eal: add nanosleep based delay function Ilya Maximets
     [not found]                   ` <CGME20181010141007eucas1p2a8039d5e180738a93a8b1e2991d68220@eucas1p2.samsung.com>
2018-10-10 14:12                     ` [dpdk-dev] [PATCH v4 2/2] drivers/net: use sleep delay by default for intel NICs Ilya Maximets
2018-10-25 13:27                   ` [dpdk-dev] [PATCH v4 0/2] CPU non-blocking delay Ferruh Yigit
2018-10-26 14:23                     ` Ferruh Yigit
2018-10-05 14:09       ` [dpdk-dev] [PATCH v1 " Wiles, Keith
2018-10-05 14:44         ` Ilya Maximets
2018-10-05 15:04           ` Wiles, Keith

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='20180903144704eucas1p1d469c23bc22f25af27f00d94aaf8a660~Q6ybQBf930609506095eucas1p1P@eucas1p1.samsung.com' \
    --to=i.maximets@samsung.com \
    --cc=beilei.xing@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=jingjing.wu@intel.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=qi.z.zhang@intel.com \
    --cc=wenzhuo.lu@intel.com \
    --cc=xiao.w.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).