From patchwork Wed Oct 10 14:12:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 46502 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 761DB1B698; Wed, 10 Oct 2018 16:10:07 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id B4FFF1B682 for ; Wed, 10 Oct 2018 16:10:05 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181010141004euoutp0105bcd8a3614f67ac6e6272eadf24a7cd~cRJrzQyEX2708327083euoutp01c; Wed, 10 Oct 2018 14:10:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181010141004euoutp0105bcd8a3614f67ac6e6272eadf24a7cd~cRJrzQyEX2708327083euoutp01c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1539180605; bh=X8CmXXORlfiviaDgBMXkic9YMS6neK1dtBinPRK5QDc=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=PttfUKRrp7KY2qMoTT617AkHvLvPyqgG1KagOPL4esJpt2bdeB9w6DTvnmzijCLrj hucmJ0j/Z8+1ZE0263idOUFpaqY+csZz4XNT1aTYxr1I6CHcrrDLDRT5kiHtn/mdlg b1Nuf3XUAdBALe/t0DtqmTKpF/fClVQBCzeP0ZTk= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181010141004eucas1p15f67c2e76de75f8a199587f1a2eb052d~cRJrZVfGw2011120111eucas1p1L; Wed, 10 Oct 2018 14:10:04 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 8A.18.04294.C380EBB5; Wed, 10 Oct 2018 15:10:04 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181010141003eucas1p23e7bdfaad8cd676549f1cae42b6a8e40~cRJqldVyD1112711127eucas1p2L; Wed, 10 Oct 2018 14:10:03 +0000 (GMT) X-AuditID: cbfec7f4-835ff700000010c6-5e-5bbe083c7082 Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id C9.DC.04284.B380EBB5; Wed, 10 Oct 2018 15:10:03 +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:03 +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 , Wei Zhao1 , Ilya Maximets Date: Wed, 10 Oct 2018 17:12:19 +0300 Message-id: <20181010141220.26907-2-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+NgFtrDIsWRmVeSWpSXmKPExsWy7djPc7o2HPuiDVZ+5LHo/tDCZHFjlb3F u0/bmSyutP9kt5i54DOjxdXj35kt3v9ZxGIxfUM/m8XiO3IWa75eZLbYeuYvo8X+54fZHXg8 fi1YyuqxeM9LJo+ek/OYPPq2rGIMYInisklJzcksSy3St0vgyth3egNrwQvdijdzm1kbGN+r dDFyckgImEg8fH+DuYuRi0NIYAWjxNulZ1ghnM+MEh9vbWOEqZr7aS87RGIZo8SHrsMsEE4z k8TMs3PZQarYBHQkTq0+AtYhIiAg8blzMRtIEbPAfmaJ8ysvMoEkhAXsJS69u8QMYrMIqEps u7gSaB8HB6+AtcTkJToQ2+QlVm84wAwS5hSwkZjySwtkjITACjaJo42zWSBqXCTmbLjPDmEL S7w6vgXKlpHo7DjIBGHXS9xveckI0dzBKDH90D+ohL3EltfnwBqYBfgkJm2bDrZMQoBXoqNN CKLEQ+LJ5L9QHx9klDg96wXrBEbJBYwMqxjFU0uLc9NTi43yUsv1ihNzi0vz0vWS83M3MQLj 9PS/4192MO76k3SIUYCDUYmHt+HCnmgh1sSy4srcQ4wSHMxKIry3Du+NFuJNSaysSi3Kjy8q zUktPsQozcGiJM67bN7GaCGB9MSS1OzU1ILUIpgsEwenVAOjiMOfuRy9RsFZCmeycrP7Hp84 /+xA/lf+xW5z93/8aOQUED7jzecqwdsW8beO7eUQlk2TbPPs9sqd0NGmH958MDbzxDonZYnZ SpP1i6Y91pYuYWCePcX7w7SffEIFUx+q9K+78p7tvxiLd+DXuf8f+N235FYNZ1V/7iNSbKe4 x6yLQSPg9xslluKMREMt5qLiRACpavNYzwIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprJLMWRmVeSWpSXmKPExsVy+t/xy7rWHPuiDRb8UbHo/tDCZHFjlb3F u0/bmSyutP9kt5i54DOjxdXj35kt3v9ZxGIxfUM/m8XiO3IWa75eZLbYeuYvo8X+54fZHXg8 fi1YyuqxeM9LJo+ek/OYPPq2rGIMYInisklJzcksSy3St0vgyth3egNrwQvdijdzm1kbGN+r dDFyckgImEjM/bSXvYuRi0NIYAmjxOntyxkhnFYmiR8HJ7KAVLEJ6EicWn2EEcQWERCQ+Ny5 mA2kiFngILPE2idzwBLCAvYSl95dYgaxWQRUJbZdXMnaxcjBwStgLTF5iQ7ENnmJ1RsOMIOE OQVsJKb80gIJCwnkSqy7todxAiPPAkaGVYwiqaXFuem5xYZ6xYm5xaV56XrJ+bmbGIEBtu3Y z807GC9tDD7EKMDBqMTD23BhT7QQa2JZcWXuIUYJDmYlEd5bh/dGC/GmJFZWpRblxxeV5qQW H2KU5mBREuc9b1AZJSSQnliSmp2aWpBaBJNl4uCUamAM2Z3Hmiak/fdzu6RoZtyqw9tbtd/1 yxezGbi8EtB4mD/ntXDZrMNGq6dybPm36+Zei83vdG6cO/n8wUZ+A2eH2wsrX5r+8I78FfT0 ecvCgrXVXzb9WfPx0qLr3CyHjGe9dBO8u/rDz3jOfKGHJtf7W0s85h7Ke7X4/SqrvqrwIo59 K3ieCcu6K7EUZyQaajEXFScCAFaWONcsAgAA X-CMS-MailID: 20181010141003eucas1p23e7bdfaad8cd676549f1cae42b6a8e40 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181010141003eucas1p23e7bdfaad8cd676549f1cae42b6a8e40 References: <20181004143550.23077-1-i.maximets@samsung.com> <20181010141220.26907-1-i.maximets@samsung.com> Subject: [dpdk-dev] [PATCH v4 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..dcf26bfea 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]) && errno == 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 Wed Oct 10 14:12:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 46503 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 24C971B6D1; Wed, 10 Oct 2018 16:10:12 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id E80DB1B682 for ; 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 To: dev@dpdk.org Cc: Jingjing Wu , Konstantin Ananyev , Wenzhuo Lu , Beilei Xing , Qi Zhang , Xiao Wang , Bruce Richardson , Stephen Hemminger , Keith Wiles , Wei Zhao1 , Ilya Maximets 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> 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 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',