From patchwork Thu Oct 4 14:35:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 46089 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 1D4381B4A0; Thu, 4 Oct 2018 16:33:46 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 303F91B49E for ; Thu, 4 Oct 2018 16:33:44 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20181004143344euoutp02dd10823fc957980991fcda129231becf~abmoP7jYW0804708047euoutp02G; Thu, 4 Oct 2018 14:33:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20181004143344euoutp02dd10823fc957980991fcda129231becf~abmoP7jYW0804708047euoutp02G DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1538663624; bh=X/pYgUjk5iaVFU7/QBru9wAWaQcKuZSK9zxPLBC9rpI=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=Ll7td9xctCJPPJCJ1V2TsMvROsJ9RCSdkfAIQ8Mf19iz48KRUaBvflGWcA5kE5vmj Jbn/cXolY07Zg1Kna2dMYxycSit3VKyenyLvFQl6wJi3v3jBxJsYHtdVmfho9DnjnW x2WkCtviFka2RaI9jEmpJGs4VV3iLrm2nm2nl5HA= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181004143343eucas1p16c31d5a363102a03ab7da2c02de5344a~abmnnr06d2111521115eucas1p1U; Thu, 4 Oct 2018 14:33:43 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 0D.40.04294.7C426BB5; Thu, 4 Oct 2018 15:33:43 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181004143343eucas1p2e4d18dbed12ac9cebc6ea1af599f751a~abmm2Zh6g0703307033eucas1p2s; Thu, 4 Oct 2018 14:33:43 +0000 (GMT) X-AuditID: cbfec7f4-84fff700000010c6-32-5bb624c7864e Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id AA.25.04284.6C426BB5; Thu, 4 Oct 2018 15:33:42 +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 <0PG200HZEWFYOX20@eusync1.samsung.com>; Thu, 04 Oct 2018 15:33:42 +0100 (BST) From: Ilya Maximets To: dev@dpdk.org Cc: Jingjing Wu , Konstantin Ananyev , Wenzhuo Lu , Beilei Xing , Qi Zhang , Xiao Wang , Bruce Richardson , Stephen Hemminger , Keith Wiles , Ilya Maximets Date: Thu, 04 Oct 2018 17:35:49 +0300 Message-id: <20181004143550.23077-2-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-reply-to: <20181004143550.23077-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRXUhTcRjG+59ztp2tJn/OBP+ZFS69kWYZIQe1LURoEpTXjcqVBzW3KTtu ZQR+LZ0fLTN0LESG4pgT/GqbJsOPZY40FkiGFzHxqqmUthWhLMl59O55eH7P+77wkjg1QSST 5bpqRq9Ta6R8EeFd2A3KAmle1eXxPyl0244Jo1ddCvpnZAKjvzTvCmibPQrolcBfnN6O9RG0 dfQln+7/do72fPoH6Jnv7wXXTyr37AM8Zb9vA1O2f+zFlBa3CxQRd0R5JYym3MjoL8mLRWUj 87O8qjXZk2lPCK8D4bRWICQRvIrW/euCViAiKegEyPV8BHAmClBDtBEcU6FmE8EFDoDaFoI4 Zxox1PyjE4tTfHgRLQ7NHzYSIUTRln5+HMJhD47qXT5+PJBABdoaiQjimoDpaLO766BMkmKY i/bq8rlt59HQ6Cwe10KYh7YdO7z4HATtfDQW9GAcVIBsDm4mghK0GXALOJ2CWsxzR0wtWjNt AK5sBsjq3z8KFMi9FTws4DABdXqtePwIBMXI3ERxiBJNDw4fIhScA2jSLewAp+3ghAskMQZW W8qwV3TM40xWrWUNutLMh5XacXDwzqX9wO9JMBV74AeQBNJT4vAFr4riqY1sjdYPEIlLE8Uf 9j0qSlyirnnK6Cvv6w0ahvWDMyQhTRI7esdUFCxVVzMVDFPF6I9TjBQm14Fnq77xxcKmcG2q y/K5Q9M9v+utWiv4Okhar3Wn3liOrOg3fqUlZE8stFvkPu3dmFMWq3dmPJqSSIwh4Z65OH/H 1iXypGc33DQ6BRaPQaHJHXh7T24K3RbJXstf3BpLCNVgtrbMvnc9qqLC4cGCpYGK5Tczr3LO QuFqJCdLSrBl6qwMXM+q/wODfFrzygIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprKLMWRmVeSWpSXmKPExsVy+t/xy7rHVLZFG/w/YmHR/aGFyeLGKnuL d5+2M1lcaf/JbjFzwWdGi6vHvzNbvP+ziMVi+oZ+NovFd+Qstp75y2ix//lhdgduj18LlrJ6 LN7zksmj5+Q8Jo++LasYA1iiuGxSUnMyy1KL9O0SuDLWHznAWnBft2Lf1nvMDYwvVLoYOTkk BEwk7rW3sHQxcnEICSxhlLi64jMbhNPKJHGj6TIjSBWbgI7EqdVHwGwRAQGJz52LwYqYBeYx S9z4fwgsISxgL/F6/Sd2EJtFQFXi1bSpTF2MHBy8AtYSvxqcILbJS6zecIAZxOYUsJF4v+wD K4gtJJAr0fh9KfMERp4FjAyrGEVSS4tz03OLDfWKE3OLS/PS9ZLzczcxAgNr27Gfm3cwXtoY fIhRgINRiYf3hfK2aCHWxLLiytxDjBIczEoivEf/bY0W4k1JrKxKLcqPLyrNSS0+xCjNwaIk znveoDJKSCA9sSQ1OzW1ILUIJsvEwSnVwCg/49NSu85vU4IVDQ5nHBK6d7R654K1E/OVVx0t nqlwXWAvR8NyqQ1nSjbPv8o1qybF2vXzR421fPIFH9+taXQVNfojL5vpxfxBWX1Zl5tQaJlr BNeCk5pLffdPr52tfVbgwunXOxbK8K1aFa+249Mjlzs2UoxrzBfUXqruW7VzGpuH9P0VR8qU WIozEg21mIuKEwHV9mobKAIAAA== X-CMS-MailID: 20181004143343eucas1p2e4d18dbed12ac9cebc6ea1af599f751a X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181004143343eucas1p2e4d18dbed12ac9cebc6ea1af599f751a References: <20180914110109.29900-1-i.maximets@samsung.com> <20181004143550.23077-1-i.maximets@samsung.com> Subject: [dpdk-dev] [PATCH v3 1/2] eal: add nanosleep based delay function 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" Add a new rte_delay_us_sleep() function that uses nanosleep(). This function can be used by applications to not implement their own nanosleep() based callback and by internal DPDK code if CPU non-blocking delay needed. Signed-off-by: Ilya Maximets --- lib/librte_eal/common/eal_common_timer.c | 24 +++++++++ .../common/include/generic/rte_cycles.h | 11 ++++ lib/librte_eal/rte_eal_version.map | 1 + test/test/autotest_data.py | 6 +++ test/test/meson.build | 1 + test/test/test_cycles.c | 51 ++++++++++++++----- 6 files changed, 80 insertions(+), 14 deletions(-) diff --git a/lib/librte_eal/common/eal_common_timer.c b/lib/librte_eal/common/eal_common_timer.c index 2e2b770fb..c6344ca87 100644 --- a/lib/librte_eal/common/eal_common_timer.c +++ b/lib/librte_eal/common/eal_common_timer.c @@ -7,9 +7,11 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -31,6 +33,28 @@ rte_delay_us_block(unsigned int us) rte_pause(); } +void __rte_experimental +rte_delay_us_sleep(unsigned int us) +{ + struct timespec wait[2]; + int ind = 0; + + wait[0].tv_sec = 0; + if (us >= US_PER_S) { + wait[0].tv_sec = us / US_PER_S; + us -= wait[0].tv_sec * US_PER_S; + } + wait[0].tv_nsec = 1000 * us; + + while (nanosleep(&wait[ind], &wait[1 - ind]) == EINTR) { + /* + * Sleep was interrupted. Flip the index, so the 'remainder' + * will become the 'request' for a next call. + */ + ind = 1 - ind; + } +} + uint64_t rte_get_tsc_hz(void) { diff --git a/lib/librte_eal/common/include/generic/rte_cycles.h b/lib/librte_eal/common/include/generic/rte_cycles.h index 0ff1af504..ac379e878 100644 --- a/lib/librte_eal/common/include/generic/rte_cycles.h +++ b/lib/librte_eal/common/include/generic/rte_cycles.h @@ -13,6 +13,7 @@ */ #include +#include #include #include @@ -157,6 +158,16 @@ rte_delay_ms(unsigned ms) */ void rte_delay_us_block(unsigned int us); +/** + * Delay function that uses system sleep. + * Does not block the CPU core. + * + * @param us + * Number of microseconds to wait. + */ +void __rte_experimental +rte_delay_us_sleep(unsigned int us); + /** * Replace rte_delay_us with user defined function. * diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map index 73282bbb0..56a1a0520 100644 --- a/lib/librte_eal/rte_eal_version.map +++ b/lib/librte_eal/rte_eal_version.map @@ -277,6 +277,7 @@ EXPERIMENTAL { rte_class_register; rte_class_unregister; rte_ctrl_thread_create; + rte_delay_us_sleep; rte_dev_event_callback_register; rte_dev_event_callback_unregister; rte_dev_event_monitor_start; diff --git a/test/test/autotest_data.py b/test/test/autotest_data.py index f68d9b111..874d0cb53 100644 --- a/test/test/autotest_data.py +++ b/test/test/autotest_data.py @@ -278,6 +278,12 @@ "Func": default_autotest, "Report": None, }, + { + "Name": "Sleep delay", + "Command": "delay_us_sleep_autotest", + "Func": default_autotest, + "Report": None, + }, { "Name": "Rawdev autotest", "Command": "rawdev_autotest", diff --git a/test/test/meson.build b/test/test/meson.build index bacb5b144..9eb15d21a 100644 --- a/test/test/meson.build +++ b/test/test/meson.build @@ -147,6 +147,7 @@ test_names = [ 'cryptodev_dpaa_sec_autotest', 'cycles_autotest', 'debug_autotest', + 'delay_us_sleep_autotest', 'devargs_autotest', 'distributor_autotest', 'distributor_perf_autotest', diff --git a/test/test/test_cycles.c b/test/test/test_cycles.c index 149f60b07..c78e6a5b1 100644 --- a/test/test/test_cycles.c +++ b/test/test/test_cycles.c @@ -23,6 +23,30 @@ * of cycles is correct with regard to the frequency of the timer. */ +static int +check_wait_one_second(void) +{ + uint64_t cycles, prev_cycles; + uint64_t hz = rte_get_timer_hz(); + uint64_t max_inc = (hz / 100); /* 10 ms max between 2 reads */ + + /* check that waiting 1 second is precise */ + prev_cycles = rte_get_timer_cycles(); + rte_delay_us(1000000); + cycles = rte_get_timer_cycles(); + + if ((uint64_t)(cycles - prev_cycles) > (hz + max_inc)) { + printf("delay_us is not accurate: too long\n"); + return -1; + } + if ((uint64_t)(cycles - prev_cycles) < (hz - max_inc)) { + printf("delay_us is not accurate: too short\n"); + return -1; + } + + return 0; +} + static int test_cycles(void) { @@ -43,24 +67,23 @@ test_cycles(void) prev_cycles = cycles; } - /* check that waiting 1 second is precise */ - prev_cycles = rte_get_timer_cycles(); - rte_delay_us(1000000); - cycles = rte_get_timer_cycles(); + return check_wait_one_second(); +} - if ((uint64_t)(cycles - prev_cycles) > (hz + max_inc)) { - printf("delay_us is not accurate: too long\n"); - return -1; - } - if ((uint64_t)(cycles - prev_cycles) < (hz - max_inc)) { - printf("delay_us is not accurate: too short\n"); - return -1; - } +REGISTER_TEST_COMMAND(cycles_autotest, test_cycles); - return 0; +/* + * One second precision test with rte_delay_us_sleep. + */ + +static int +test_delay_us_sleep(void) +{ + rte_delay_us_callback_register(rte_delay_us_sleep); + return check_wait_one_second(); } -REGISTER_TEST_COMMAND(cycles_autotest, test_cycles); +REGISTER_TEST_COMMAND(delay_us_sleep_autotest, test_delay_us_sleep); /* * rte_delay_us_callback test From patchwork Thu Oct 4 14:35:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 46090 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 92B751B4A9; Thu, 4 Oct 2018 16:33:49 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id ED81C1B4A8 for ; Thu, 4 Oct 2018 16:33:47 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181004143347euoutp012efe559d28643b09241c5b15bcc251ac~abmqqKYLV2949829498euoutp01D; Thu, 4 Oct 2018 14:33:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181004143347euoutp012efe559d28643b09241c5b15bcc251ac~abmqqKYLV2949829498euoutp01D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1538663627; bh=2bguzgmwKj8nhRwGO5/OPA8FR2rWoDJUs/L9pjvVmJM=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=c7hxwRibXR4pK2MsYJCSA103eHHkS2v//vUq/9eQmCMow6S72fC1HTKk9JtZz352E ToUhiap70AWvL9tsDhYrAOIN6kGVm7NufiaFZJCkfjdb1os5mrq4ibnq54P/goLdGB 2WqjMercqm2o9K3x0TgkWTdlWFntX4D/2UjKYvpE= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181004143346eucas1p156f4a11bb36a71b1f8ac627230f25917~abmqEQadW2115821158eucas1p1V; Thu, 4 Oct 2018 14:33:46 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id C2.58.04441.AC426BB5; Thu, 4 Oct 2018 15:33:46 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181004143345eucas1p2f9dfea7ea41111c2ce9cab98434339d0~abmpXkAZu0286602866eucas1p2S; Thu, 4 Oct 2018 14:33:45 +0000 (GMT) X-AuditID: cbfec7f2-a1ae89c000001159-cf-5bb624cac43d Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id F6.B3.04128.9C426BB5; Thu, 4 Oct 2018 15:33:45 +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 <0PG200HZEWFYOX20@eusync1.samsung.com>; Thu, 04 Oct 2018 15:33:45 +0100 (BST) From: Ilya Maximets To: dev@dpdk.org Cc: Jingjing Wu , Konstantin Ananyev , Wenzhuo Lu , Beilei Xing , Qi Zhang , Xiao Wang , Bruce Richardson , Stephen Hemminger , Keith Wiles , Ilya Maximets Date: Thu, 04 Oct 2018 17:35:50 +0300 Message-id: <20181004143550.23077-3-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-reply-to: <20181004143550.23077-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrBIsWRmVeSWpSXmKPExsWy7djPc7qnVLZFG+x6xGHR/aGFyeLGKnuL d5+2M1lcaf/JbjFzwWdGi6vHvzNbvP+ziMVi+oZ+NovFd+Qstp75y2ix//lhdgduj18LlrJ6 LN7zksmj5+Q8Jo++LasYA1iiuGxSUnMyy1KL9O0SuDL+br3CXHBbr+L9i/ssDYz31bsYOTkk BEwkOp53MnYxcnEICaxglDh4vJMVwvnMKLFt5i1GmKrbp9azQSSWMUosOHSEFSQhJNDMJHFx RTqIzSagI3Fq9RGwBhEBAYnPnYvBGpgF5jBLNK7awwaSEBYIkDh94hRYM4uAqsS6w/1gDbwC 1hL3Xn6E2iYvsXrDAWYQm1PARuL9sg9gJ0kIzGGTuLL7MDtEkYvE1EvfmSBsYYlXx7dAxWUk Lk/uZoGw6yXut7xkhGjuYJSYfugfVIO9xJbX58AamAX4JCZtmw60jQMozivR0SYEUeIhMenb b2hYHGSU2DFlOssERskFjAyrGMVTS4tz01OLDfNSy/WKE3OLS/PS9ZLzczcxAuPz9L/jn3Yw fr2UdIhRgINRiYf3hfK2aCHWxLLiytxDjBIczEoivEf/bY0W4k1JrKxKLcqPLyrNSS0+xCjN waIkzrts3sZoIYH0xJLU7NTUgtQimCwTB6dUA6Phvgd/pvgt8tSsPCaxTXOzuVZpmr6ZwYEM rZlGO4+ukT+noG9hfebn+wWPrilJOuw4Xefi7riiU3/PrjtamW+nHZOxsWWrcG371Wnp8nLP eQW23lsW2enHdOuypN6Ka3V9mKRfb3Vmkt9qXbuQRTcXLD9Xe0iXZ5Mkz9Hn2eXH5cWFmRcq f1NiKc5INNRiLipOBAD+xIknywIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprGLMWRmVeSWpSXmKPExsVy+t/xy7onVbZFGzR1aVh0f2hhsrixyt7i 3aftTBZX2n+yW8xc8JnR4urx78wW7/8sYrGYvqGfzWLxHTmLrWf+Mlrsf36Y3YHb49eCpawe i/e8ZPLoOTmPyaNvyyrGAJYoLpuU1JzMstQifbsEroy/W68wF9zWq3j/4j5LA+N99S5GTg4J AROJ26fWs3UxcnEICSxhlFh1/zgrhNPKJHGh4S0TSBWbgI7EqdVHGEFsEQEBic+di8E6mAXm MUvc+H8ILCEs4Cex7fIsZhCbRUBVYt3hfrA4r4C1xL2XHxkh1slLrN5wAKyGU8BG4v2yD6wg tpBArkTj96XMExh5FjAyrGIUSS0tzk3PLTbSK07MLS7NS9dLzs/dxAgMrW3Hfm7Zwdj1LvgQ owAHoxIP7wTFbdFCrIllxZW5hxglOJiVRHiP/tsaLcSbklhZlVqUH19UmpNafIhRmoNFSZz3 vEFllJBAemJJanZqakFqEUyWiYNTqoGxe5dy28XHCeH6n0rqmNSNNkTGppUl3I19KNwrysVz PLp9l3X88m93bJ5ohe6a4yJx2ObihATl5ladR4t/a0tbcSY9O+3o+1/pk013+DzF7/evvboY mb20boufXKyU6JcPzjsfvlke+t+PQdv7eKbbFu7bToo7/AqcZX/8YzjKb2Ib1xKgoa3EUpyR aKjFXFScCADzxv9zKQIAAA== X-CMS-MailID: 20181004143345eucas1p2f9dfea7ea41111c2ce9cab98434339d0 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181004143345eucas1p2f9dfea7ea41111c2ce9cab98434339d0 References: <20180914110109.29900-1-i.maximets@samsung.com> <20181004143550.23077-1-i.maximets@samsung.com> Subject: [dpdk-dev] [PATCH v3 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 | 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',