From patchwork Fri Sep 14 11:01:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 44715 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 719B55B34; Fri, 14 Sep 2018 12:59:54 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 139874C92 for ; Fri, 14 Sep 2018 12:59:53 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180914105951euoutp02a8c3135a7738a1db8262f74c4474134f~UPyLoCICM1722317223euoutp02s; Fri, 14 Sep 2018 10:59:51 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180914105951euoutp02a8c3135a7738a1db8262f74c4474134f~UPyLoCICM1722317223euoutp02s DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1536922792; bh=Na83y14Flfx5BlKdYkfM/2uNbA+eE9uXTzkY4Be9wwM=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=r6ejSa7mxVzDjcwqxFtQAWgqxVjAOEyl97Fil/fzqcMh2CHGAwkbQ94lHgI586ZAJ 52rfPv+J7fL1x1sFyXQR7W0aUU9lBPXvaB+t99fWq/SGxlHjGt3OleftRhruIrg2/P C+EsUMmVlg+wuJQBHvDK1TEKcFyHFu8gkMFvIXIA= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180914105951eucas1p1f07f8239e9c1b0a14cf1c4fc766b497b~UPyLP1WtJ0515305153eucas1p1K; Fri, 14 Sep 2018 10:59:51 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 27.6D.04294.7A49B9B5; Fri, 14 Sep 2018 11:59:51 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180914105950eucas1p1391d6eccd8ccd5a03e7f742f1d12bb9d~UPyKaMZ7P0514605146eucas1p1I; Fri, 14 Sep 2018 10:59:50 +0000 (GMT) X-AuditID: cbfec7f4-84fff700000010c6-dc-5b9b94a79136 Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 0B.9A.04128.6A49B9B5; Fri, 14 Sep 2018 11:59:50 +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 <0PF1002IVL6ZB130@eusync1.samsung.com>; Fri, 14 Sep 2018 11:59:50 +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: Fri, 14 Sep 2018 14:01:08 +0300 Message-id: <20180914110109.29900-2-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-reply-to: <20180914110109.29900-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKIsWRmVeSWpSXmKPExsWy7djPc7rLp8yONvi+TcCi+0MLk8WNVfYW 7z5tZ7K40v6T3WLmgs+MFlePf2e2eP9nEYvF9A39bBaL78hZbD3zl9Fi//PD7A7cHr8WLGX1 WLznJZNHz8l5TB59W1YxBrBEcdmkpOZklqUW6dslcGXcer+bseC+bsXKltmsDYwvVLoYOTkk BEwk7uyZwgZiCwmsYJR41iTexcgFZH9mlOh4fYYNpmjWzYMsEIlljBLnPjQyQTjNTBJfV71k B6liE9CROLX6CCOILSIgIPG5czEbSBGzwBxmicZVe4AcDg5hAXuJLS+TQGpYBFQlvncfYwWx eQWsJVZ1/ITaJi+xesMBZhCbU8BG4tqlIywQ8QVsEuvPyoGMkRBwkbg10w0iLCzx6vgWdghb RuLy5G6o8nqJ+y0vGUFOkBDoYJSYfugfE0QC6ITX58AamAX4JCZtm84MMZNXoqNNCKLEQ2LZ 0pPsED/+YZTov7mDcQKj5AJGhlWM4qmlxbnpqcVGeanlesWJucWleel6yfm5mxiBkXn63/Ev Oxh3/Uk6xCjAwajEw+vwfFa0EGtiWXFl7iFGCQ5mJRHe9aFAId6UxMqq1KL8+KLSnNTiQ4zS HCxK4rx8WmnRQgLpiSWp2ampBalFMFkmDk6pBsZciUduF0+kfPPMiind6Hvi5NeKSct65m/O F+Sb8PnI+/L9vqziqq0XJii5280PnlFzNePQo8PlM0/YnI3vnnFyW96fC7PVTtz5br5TVT/g oNF3p5ZpUi7sZZqFgitle5OvXLvtfdf0jedDo+cyX/qTpGZYJ/46L3X9vM7ZV7F7BbQv7lO/ H22uxFKckWioxVxUnAgAwTT7SsgCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprKLMWRmVeSWpSXmKPExsVy+t/xy7rLpsyONpiyRcKi+0MLk8WNVfYW 7z5tZ7K40v6T3WLmgs+MFlePf2e2eP9nEYvF9A39bBaL78hZbD3zl9Fi//PD7A7cHr8WLGX1 WLznJZNHz8l5TB59W1YxBrBEcdmkpOZklqUW6dslcGXcer+bseC+bsXKltmsDYwvVLoYOTkk BEwkZt08yNLFyMUhJLCEUaJh8yN2CKeVSWLRxQlsIFVsAjoSp1YfYQSxRQQEJD53LmYDKWIW mMcsceP/IaAEB4ewgL3ElpdJIDUsAqoS37uPsYLYvALWEqs6frJBbJOXWL3hADOIzSlgI3Ht 0hEWEFtIYBWjRO8O6QmMPAsYGVYxiqSWFuem5xYb6RUn5haX5qXrJefnbmIEBta2Yz+37GDs ehd8iFGAg1GJh9fh+axoIdbEsuLK3EOMEhzMSiK860OBQrwpiZVVqUX58UWlOanFhxilOViU xHnPG1RGCQmkJ5akZqemFqQWwWSZODilGhh5fudcLpP54dq+/lph5eGMOBlNrYMyrxuYo2q2 1AjFvl+yOnnGYYNJvnfdD/HaTWxgSDiXOeXsz+vPV5fw3AueMNU/nUVQawPzsajy8nmtRzJm SJc9E5WwkrpyxlhFd36w4Mqzm7gff9u6w3vN9MmrL5RXcdduXjdDddL5siK78/+PtLNdW7FS iaU4I9FQi7moOBEAGeVu/ygCAAA= X-CMS-MailID: 20180914105950eucas1p1391d6eccd8ccd5a03e7f742f1d12bb9d X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180914105950eucas1p1391d6eccd8ccd5a03e7f742f1d12bb9d References: <20180903144311eucas1p2b6499c49dbd0d54334e973113cdc5ad6~Q6vBsFYRm1033710337eucas1p2D@eucas1p2.samsung.com> <20180914110109.29900-1-i.maximets@samsung.com> Subject: [dpdk-dev] [PATCH v2 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 344a43d32..d68777ce0 100644 --- a/lib/librte_eal/rte_eal_version.map +++ b/lib/librte_eal/rte_eal_version.map @@ -270,6 +270,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 b1dd6eca2..0078aea30 100644 --- a/test/test/meson.build +++ b/test/test/meson.build @@ -143,6 +143,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 Fri Sep 14 11:01:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 44716 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 76A165F1C; Fri, 14 Sep 2018 12:59:58 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 01B9B5F1C for ; Fri, 14 Sep 2018 12:59:56 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180914105956euoutp02bfd1d9492b1ef1d13e268e3fd225ccb9~UPyPior4R1722317223euoutp02u; Fri, 14 Sep 2018 10:59:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180914105956euoutp02bfd1d9492b1ef1d13e268e3fd225ccb9~UPyPior4R1722317223euoutp02u DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1536922796; bh=n3+Q6L7+oTWfwBbsMw+fOyEV0DTZDUTGzzki5XBVPPk=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=uo+uhjH7jBCWRJB7V2X6ogrhJ6gFAMtF2b06jOd1ERg+IRq33QnjXxiBhBzKAAw0C k2a3gJ+nVwFs0+0CwuQ8O6SzIFC/YfZmqAnAmtD8Ixvb7VQ0tuWqQFCkPs8b0c30ox b9wDaSQ2nUG+Qjyc+XELXDI2XGUAzIAbNFiDSBcw= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180914105955eucas1p1e2df26c180820e7f894a5deb61586819~UPyPCtpIP0133001330eucas1p1k; Fri, 14 Sep 2018 10:59:55 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 89.27.04441.BA49B9B5; Fri, 14 Sep 2018 11:59:55 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180914105954eucas1p1662492cee6b5387cd4655ec940619ea8~UPyOKrY6P0514605146eucas1p1M; Fri, 14 Sep 2018 10:59:54 +0000 (GMT) X-AuditID: cbfec7f2-5e3ff70000001159-5f-5b9b94ab7a70 Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 5C.9A.04128.AA49B9B5; Fri, 14 Sep 2018 11:59:54 +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 <0PF1002IVL6ZB130@eusync1.samsung.com>; Fri, 14 Sep 2018 11:59:54 +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: Fri, 14 Sep 2018 14:01:09 +0300 Message-id: <20180914110109.29900-3-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 In-reply-to: <20180914110109.29900-1-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRmVeSWpSXmKPExsWy7djP87qrp8yONnixX9Si+0MLk8WNVfYW 7z5tZ7K40v6T3WLmgs+MFlePf2e2eP9nEYvF9A39bBaL78hZbD3zl9Fi//PD7A7cHr8WLGX1 WLznJZNHz8l5TB59W1YxBrBEcdmkpOZklqUW6dslcGV8vTiVsWCedsXGud8ZGxhfqHQxcnBI CJhITN2Y1sXIySEksIJR4u5s8S5GLiD7M6PEj5VXWUASIDVH1jxhgUgsY5T43HORCcJpZpK4 MvMbE0gVm4COxKnVRxhBbBEBAYnPnYvZQIqYBeYwSzSu2sMGkhAWCJDYvGc2mM0ioCpxZUYX mM0rYC2xuOMBI8Q6eYnVGw4wg9icAjYS1y4dAVstIbCATeLislfMEHe7SJw7HAxRLyzx6vgW dghbRuLy5G6os+sl7re8ZITo7WCUmH7oHxNEwl5iy+tzYA3MAnwSk7ZNh5rJK9HRJgRR4iHR 9b2fHeLLP4wS52ZuZZvAKLmAkWEVo3hqaXFuemqxYV5quV5xYm5xaV66XnJ+7iZGYGye/nf8 0w7Gr5eSDjEKcDAq8fA6PJ8VLcSaWFZcmXuIUYKDWUmEd30oUIg3JbGyKrUoP76oNCe1+BCj NAeLkjgvn1ZatJBAemJJanZqakFqEUyWiYNTqoGRj7Nc2Wfz23fTtPm2renQ/292d9003ikv jj7J+PL+QaTEei9Obe+rnY7OVuuq77mu2jPltIrjTX6PujuVaWu/KEWX5Av+kH+9ar7hgfio +uwnr87xzvF9crPq4t4rN+W71qy9I/borPyB5NdZX/avU1f0tLZf9feU/NE9vvZ7encprhb8 Xv/noxJLcUaioRZzUXEiAP0dke7JAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprKLMWRmVeSWpSXmKPExsVy+t/xy7qrpsyONlg9X8Oi+0MLk8WNVfYW 7z5tZ7K40v6T3WLmgs+MFlePf2e2eP9nEYvF9A39bBaL78hZbD3zl9Fi//PD7A7cHr8WLGX1 WLznJZNHz8l5TB59W1YxBrBEcdmkpOZklqUW6dslcGV8vTiVsWCedsXGud8ZGxhfqHQxcnJI CJhIHFnzhKWLkYtDSGAJo8SzTzdZQRJCAq1MEjPPyYPYbAI6EqdWH2EEsUUEBCQ+dy5mA2lg FpjHLHHj/yGwhLCAn0TX6dksIDaLgKrElRldbCA2r4C1xOKOB4wQ2+QlVm84wAxicwrYSFy7 dIQFYtkqRoneHdITGHkWMDKsYhRJLS3OTc8tNtIrTswtLs1L10vOz93ECAysbcd+btnB2PUu +BCjAAejEg+vw/NZ0UKsiWXFlbmHGCU4mJVEeNeHAoV4UxIrq1KL8uOLSnNSiw8xSnOwKInz njeojBISSE8sSc1OTS1ILYLJMnFwSjUwGge/7QhoZ8/K/m0zoWzN/DNzqkxa4nLPzG/iuXi3 IeRj0pGda2/rfHu7dVnZzKiZV79xrs9ss8m5MH/D638LeR64S95OzRVZLXDIe0FioItc8aNn /w2awlof3k6/dfLWnmsz530OKp2z8AZTj8eVfdmnbuR1Kaw+PK9gw5sjfDdD3578/9kuVk+J pTgj0VCLuag4EQCZCsjtKAIAAA== X-CMS-MailID: 20180914105954eucas1p1662492cee6b5387cd4655ec940619ea8 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180914105954eucas1p1662492cee6b5387cd4655ec940619ea8 References: <20180903144311eucas1p2b6499c49dbd0d54334e973113cdc5ad6~Q6vBsFYRm1033710337eucas1p2D@eucas1p2.samsung.com> <20180914110109.29900-1-i.maximets@samsung.com> Subject: [dpdk-dev] [PATCH v2 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/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',