From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <i.maximets@samsung.com>
Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com
 [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id E80DB1B682
 for <dev@dpdk.org>; Wed, 10 Oct 2018 16:10:08 +0200 (CEST)
Received: from eucas1p2.samsung.com (unknown [182.198.249.207])
 by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id
 20181010141008euoutp01725add316b66d2a3212689c13fb5abb3~cRJvQ28382662226622euoutp018;
 Wed, 10 Oct 2018 14:10:08 +0000 (GMT)
DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com
 20181010141008euoutp01725add316b66d2a3212689c13fb5abb3~cRJvQ28382662226622euoutp018
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com;
 s=mail20170921; t=1539180608;
 bh=2bguzgmwKj8nhRwGO5/OPA8FR2rWoDJUs/L9pjvVmJM=;
 h=From:To:Cc:Subject:Date:In-reply-to:References:From;
 b=eBbycWztQGRF7FWMEmWZHfKye1XZbZJlrHCe+FDTX9LznRXZ3QBh2ENIoA3gCZSVG
 pg9tF7hIdDQxllb4D65Qantcwb8cKXQ8SggJdJOXAFJWLIBlnDGlzIR5FCKLq+vPYZ
 xqUOgj30dkryRZEnsMshWokXlrBAFZGOQr6GYmdw=
Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by
 eucas1p1.samsung.com (KnoxPortal) with ESMTP id
 20181010141007eucas1p1c8813fb14765def34d3859e856a994e7~cRJulKVj22271522715eucas1p1I;
 Wed, 10 Oct 2018 14:10:07 +0000 (GMT)
Received: from eucas1p1.samsung.com ( [182.198.249.206]) by
 eusmges2new.samsung.com (EUCPMTA) with SMTP id 60.28.04294.F380EBB5; Wed, 10
 Oct 2018 15:10:07 +0100 (BST)
Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by
 eucas1p2.samsung.com (KnoxPortal) with ESMTP id
 20181010141007eucas1p2a8039d5e180738a93a8b1e2991d68220~cRJt2BCBt0322803228eucas1p2N;
 Wed, 10 Oct 2018 14:10:07 +0000 (GMT)
X-AuditID: cbfec7f4-c77a99c0000010c6-78-5bbe083fee6a
Received: from eusync1.samsung.com ( [203.254.199.211]) by
 eusmgms1.samsung.com (EUCPMTA) with SMTP id 3F.DC.04284.F380EBB5; Wed, 10
 Oct 2018 15:10:07 +0100 (BST)
Received: from imaximets.rnd.samsung.ru ([106.109.129.180]) by
 eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit
 (built May  5 2014)) with ESMTPA id <0PGD006H4ZCG2A40@eusync1.samsung.com>;
 Wed, 10 Oct 2018 15:10:07 +0100 (BST)
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>,
 Stephen Hemminger <stephen@networkplumber.org>, Keith Wiles
 <keith.wiles@intel.com>, Wei Zhao1 <wei.zhao1@intel.com>, Ilya Maximets
 <i.maximets@samsung.com>
Date: Wed, 10 Oct 2018 17:12:20 +0300
Message-id: <20181010141220.26907-3-i.maximets@samsung.com>
X-Mailer: git-send-email 2.17.1
In-reply-to: <20181010141220.26907-1-i.maximets@samsung.com>
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrJIsWRmVeSWpSXmKPExsWy7djPc7r2HPuiDRYtV7Po/tDCZHFjlb3F
 u0/bmSyutP9kt5i54DOjxdXj35kt3v9ZxGIxfUM/m8XiO3IWa75eZLbYeuYvo8X+54fZHXg8
 fi1YyuqxeM9LJo+ek/OYPPq2rGIMYInisklJzcksSy3St0vgyvi79QpzwW29ivcv7rM0MN5X
 72Lk4JAQMJE49c6gi5GLQ0hgBaPE6wlL2bsYOYGcz4wSRxurQWyQmpX7jjJBFC1jlJj4bCcb
 hNPMJLH30TZGkCo2AR2JU6uPgNkiAgISnzsXgxUxC+xnlji/8iITSEJYIECip+kuG8hqFgFV
 iVln40DCvALWElsm3WGH2CYvsXrDAWaQEk4BG4kpv7QgwkvYJDouOkHYLhLnm76zQNjCEq+O
 b4FqlZHo7DjIBGHXS9xveckIcoKEQAejxPRD/6AS9hJbXp8Da2AW4JOYtG06MyQkeCU62oQg
 SjwkznVsYof48SCjxKczjcwTGCUXMDKsYhRPLS3OTU8tNspLLdcrTswtLs1L10vOz93ECIzQ
 0/+Of9nBuOtP0iFGAQ5GJR7ehgt7ooVYE8uKK3MPMUpwMCuJ8N46vDdaiDclsbIqtSg/vqg0
 J7X4EKM0B4uSOO+yeRujhQTSE0tSs1NTC1KLYLJMHJxSDYyGwgxt/0vfrsp/G30+lffAK5/6
 3wGLG1LVvWc11yrfW+z5NFJWQuJtntH2r/q3TGO/tBjLX2Xqt52gMMFa6Vj3htzwx4x/5gTf
 3Hb7psk6TpPL2YeW75n4RcH3lRXLd/PL1+tXKx5ePN+hiE1/UQ/3/7ypu7VufnfqDbLZ5l22
 b2f2GZWE3OVKLMUZiYZazEXFiQB7BMP9zAIAAA==
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprBLMWRmVeSWpSXmKPExsVy+t/xy7r2HPuiDQ7fZrfo/tDCZHFjlb3F
 u0/bmSyutP9kt5i54DOjxdXj35kt3v9ZxGIxfUM/m8XiO3IWa75eZLbYeuYvo8X+54fZHXg8
 fi1YyuqxeM9LJo+ek/OYPPq2rGIMYInisklJzcksSy3St0vgyvi79QpzwW29ivcv7rM0MN5X
 72Lk5JAQMJFYue8oUxcjF4eQwBJGiRXXL7FCOK1MEqeXz2cEqWIT0JE4tfoImC0iICDxuXMx
 G0gRs8BBZom1T+YAJTg4hAX8JC58NQcxWQRUJWadjQMp5xWwltgy6Q47xDJ5idUbDjCDlHAK
 2EhM+aUFEhYSyJVYd20P4wRGngWMDKsYRVJLi3PTc4sN9YoTc4tL89L1kvNzNzECw2vbsZ+b
 dzBe2hh8iFGAg1GJh7fhwp5oIdbEsuLK3EOMEhzMSiK8tw7vjRbiTUmsrEotyo8vKs1JLT7E
 KM3BoiTOe96gMkpIID2xJDU7NbUgtQgmy8TBKdXAKL/6/sxWLdd2pnevCzSjRWvPvXR6G1FQ
 zH7o5Y1JCy/X8c5YUPeLl6lFmn9dTxzvKRftXxJ/VaTeNX9YxrJGq3nCj3dzpVo47dY75R/u
 m3VUeuaEzut7FqcEHEvYEv7/xGme594dB71ktkpvnbDhzF+z6FtLTA81eU5QdmYO6c05vCUk
 df+1c0osxRmJhlrMRcWJAOfcSQ8rAgAA
X-CMS-MailID: 20181010141007eucas1p2a8039d5e180738a93a8b1e2991d68220
X-Msg-Generator: CA
CMS-TYPE: 201P
X-CMS-RootMailID: 20181010141007eucas1p2a8039d5e180738a93a8b1e2991d68220
References: <20181004143550.23077-1-i.maximets@samsung.com>
 <20181010141220.26907-1-i.maximets@samsung.com>
 <CGME20181010141007eucas1p2a8039d5e180738a93a8b1e2991d68220@eucas1p2.samsung.com>
Subject: [dpdk-dev] [PATCH v4 2/2] drivers/net: use sleep delay by default
 for intel NICs
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 10 Oct 2018 14:10:09 -0000

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             | 2 +-
 drivers/net/avf/base/avf_osdep.h     | 4 ++--
 drivers/net/avf/meson.build          | 2 ++
 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 ++-
 10 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/drivers/net/avf/Makefile b/drivers/net/avf/Makefile
index 0a142c104..aec6e4cba 100644
--- a/drivers/net/avf/Makefile
+++ b/drivers/net/avf/Makefile
@@ -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
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/avf/meson.build b/drivers/net/avf/meson.build
index 9a05ebbf4..2dfda9d4e 100644
--- a/drivers/net/avf/meson.build
+++ b/drivers/net/avf/meson.build
@@ -3,6 +3,8 @@
 
 cflags += ['-Wno-strict-aliasing']
 
+allow_experimental_apis = true
+
 subdir('base')
 objs = [base_objs]
 
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 e648ea462..ea8dc1cbe 100644
--- a/drivers/net/ixgbe/base/ixgbe_osdep.h
+++ b/drivers/net/ixgbe/base/ixgbe_osdep.h
@@ -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))
 
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