From patchwork Fri Aug 31 12:45:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 44113 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 74E3E5B40; Fri, 31 Aug 2018 14:44:09 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id D80A65A6A for ; Fri, 31 Aug 2018 14:44:06 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180831124406euoutp029c301610790c6db6ba1e0a3749f6ea85~P_LMk4oXw1058710587euoutp02C for ; Fri, 31 Aug 2018 12:44:06 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180831124406euoutp029c301610790c6db6ba1e0a3749f6ea85~P_LMk4oXw1058710587euoutp02C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1535719446; bh=x5DJiHgTOSRaIMIzl3ZhcpnHsp4LmkUZFmIsRG1u078=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Oy59fWIErHQUgKbb8YOAo55ueBGDAGXVjrxqXi0VAhsKV97yePfYNeaVrK+dxaNKM Pv9R94ajVrf5Uyllj3oZ2fRerMaBZrR6w8LSOciisgG/YvhmiailvpilAsTrH6kmFZ DkgExymfHtQgo66L4zU2oKH4W6y679D0JnIlKpEo= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180831124405eucas1p2dd4516b68c3c611b09028fcf10f9c507~P_LMEUVOn1664316643eucas1p2y; Fri, 31 Aug 2018 12:44:05 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 23.D1.04441.518398B5; Fri, 31 Aug 2018 13:44:05 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20180831124404eucas1p20daff43600dfe450c9106616f886eab4~P_LLRV5aM1664316643eucas1p2w; Fri, 31 Aug 2018 12:44:04 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20180831124404eusmtrp2813a2f80a3807eb1c5e75f8f2be9d2db~P_LK-1cFf2459624596eusmtrp2Q; Fri, 31 Aug 2018 12:44:04 +0000 (GMT) X-AuditID: cbfec7f2-5c9ff70000001159-38-5b893815e416 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id E0.EF.04128.418398B5; Fri, 31 Aug 2018 13:44:04 +0100 (BST) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20180831124403eusmtip2ca9b82355b098641c2cdb99b7de53b13~P_LKYwmAf2134721347eusmtip2o; Fri, 31 Aug 2018 12:44:03 +0000 (GMT) From: Ilya Maximets To: dev@dpdk.org Cc: Jingjing Wu , Konstantin Ananyev , Wenzhuo Lu , Beilei Xing , Qi Zhang , Xiao Wang , Bruce Richardson , Ilya Maximets Date: Fri, 31 Aug 2018 15:45:17 +0300 X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180831124517.27619-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA0VSa0hTYRjuO2eXs9HkNB2+rGiwTEi8JGSdH6IJRSszEoKogbX0NEdu2o4z 9U/+MKdTUiQQV6R4DS200nmhSKdtaKIRZROT+hGJpk6d5i1nO55J/573uXzvw8tH4NJtnpzQ GbJpo0GToRSIeTbHxliEjCpRH58bklGli4UY5WqJpxaWuzDqs3lDSFXXehDl/lvHo6raywVU 58g2ot5NDwhPi1SbtY18Vf2bGUz1sKMFXcavi2PT6AxdDm2MirspTh+ZrhZkPQnJdX2s4xeg 9cMWJCKAPAFLQ2V8CxITUvIZAsewE+OGFQSPno76FQ+C1Xkzfy/yp2aAxwnNCFp/uXFuWEfw fHIFY10CMhyGWwcRi4NIEjwl9QLWhJPvMRi3VOGsEEieB+9Ez66JRx6F6Z05HrdCAa3tfbse ERkLDc6C3VJAugXwoq9TyAoSMgfat0r9gTPw0uwWcjgQZp0dfnwIdnpqMA7fh++FM4h7qBhB ld3rF+Kh4/eoL0D46h2Dtt4ojk6AxvkRjKWBDADX/AGWxn2w0sb2Z2kJFBdJOXcIbPU34xyW w8SCx99ABRs9X4XcgcoRtE014RVIYf2/rBahFhRMmxi9lmaiDfS9SEajZ0wGbWRqpv4V8n2K D17ncjda/XTLjkgCKfdL9rnNailfk8Pk6e0ICFwZJBGlF6ulkjRNXj5tzLxhNGXQjB0dJHjK YElA2G21lNRqsuk7NJ1FG/dUjBDJC5D+7ezRrXOOwauWB1m43Grt7crPSA2VjQ2n3G1exqeS Y7SPz8rsylldd3Ick50gIhLXJElYXnXopGOJH2RuVkRAySX3uMJUozuSO3Hqm9Pa0F8hHG/T VpanxNjWLiZ5f4rdosTFwBDsSjiyWJpcr4vKTv648MUWe22TFoiUPCZdEx2GGxnNP94SPD4Q AwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrLLMWRmVeSWpSXmKPExsVy+t/xe7oiFp3RBt0nFCy6P7QwWdxYZW/x 7tN2Josr7T/ZLWYu+Mxo8f7PIhaL6Rv62Sy2nvnLaLH/+WF2B06PXwuWsnos3vOSyaNvyyrG AOYoPZui/NKSVIWM/OISW6VoQwsjPUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYwz z2eyFcxRqbhxYRFrA+MPuS5GTg4JAROJb/MPs3QxcnEICSxllLj/7ygbREJK4sevC6wQtrDE n2tdbBBF3xglFt9vZwdJsAnoSJxafYQRxBYREJD43LkYrIhZ4DSTxIG1m5hBEsICnhL/bu4E K2IRUJV4/v8N0DoODl4Ba4ltE3ggFshLrN5wAKycU8BGYsnxBiYQWwio5PaVyewTGPkWMDKs YhRJLS3OTc8tNtIrTswtLs1L10vOz93ECAzabcd+btnB2PUu+BCjAAejEg8vw/v2aCHWxLLi ytxDjBIczEoivJwZHdFCvCmJlVWpRfnxRaU5qcWHGE2BbprILCWanA+MqLySeENTQ3MLS0Nz Y3NjMwslcd7zBpVRQgLpiSWp2ampBalFMH1MHJxSDYyymf+iG2/pVi5MYRHm6dzrfP+tQWTR vvmGagUtf/K27WUMEymJ1O9cXZql3LCl+3rekivxjYrG6f4l8WklN9/JT/1ll3e1dJqk47qz Ncvz0uY3MhrlKDhe+G9RyPRBbWEBz/wvm+6/Y5hWdv3jkeC38afXF3nECJs+6y9R+pp/9MOJ n0XqN5RYijMSDbWYi4oTAVYas5xwAgAA Message-Id: <20180831124404eucas1p20daff43600dfe450c9106616f886eab4~P_LLRV5aM1664316643eucas1p2w@eucas1p2.samsung.com> X-CMS-MailID: 20180831124404eucas1p20daff43600dfe450c9106616f886eab4 X-Msg-Generator: CA X-RootMTR: 20180831124404eucas1p20daff43600dfe450c9106616f886eab4 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180831124404eucas1p20daff43600dfe450c9106616f886eab4 References: <20180831124517.27619-1-i.maximets@samsung.com> Subject: [dpdk-dev] [RFC 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- 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/i40e/base/i40e_osdep.h | 6 +++--- drivers/net/ifc/base/ifcvf_osdep.h | 2 +- drivers/net/ixgbe/base/ixgbe_osdep.h | 2 +- 7 files changed, 10 insertions(+), 8 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/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))