From patchwork Wed Sep 23 01:47:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78443 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 33930A04B5; Wed, 23 Sep 2020 03:47:32 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0530D1DB48; Wed, 23 Sep 2020 03:47:24 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 293D61DA86 for ; Wed, 23 Sep 2020 03:47:19 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200923014719euoutp0127ca6ed198e5125c32fbc3a7ed7a35c6~3Rm-0IGFQ1123411234euoutp01i for ; Wed, 23 Sep 2020 01:47:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200923014719euoutp0127ca6ed198e5125c32fbc3a7ed7a35c6~3Rm-0IGFQ1123411234euoutp01i DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600825639; bh=eymXJujej9PG1zGL1zp62MJRAkbOY/KHhs1VGhD++7o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=M0QXjBgwMkHtigcIHAOI6WQrTTvmbct7+FdIedUhkNYZ6I7GfXD9Qwya4rutYg4RN bv/MLnIPz1Tp506yO7QsT/TZml6k2yq94/zJJGqdeJejToeWWptRZlKWZPclWmqXMb 9InMV8D9JvhXomRpGqacZo4qJ+KJYZgN3/jEIND0= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200923014718eucas1p1e5150d8d18ac2d748c46acbfcaeb120f~3Rm-Lsax11652816528eucas1p1A; Wed, 23 Sep 2020 01:47:18 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id D5.AC.06318.629AA6F5; Wed, 23 Sep 2020 02:47:18 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200923014718eucas1p11fdcd774fef7b9e077e14e01c9f951d5~3Rm_51dsr2800828008eucas1p1n; Wed, 23 Sep 2020 01:47:18 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200923014718eusmtrp2090fb2494634c083cd9bda2593b1dc20~3Rm_5RPkV2054820548eusmtrp2P; Wed, 23 Sep 2020 01:47:18 +0000 (GMT) X-AuditID: cbfec7f5-38bff700000018ae-c7-5f6aa9264c26 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id D3.9A.06314.629AA6F5; Wed, 23 Sep 2020 02:47:18 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200923014717eusmtip10b9582f79af0a3f0c0aea12aa07425fd~3Rm_Iw4h40729307293eusmtip1N; Wed, 23 Sep 2020 01:47:17 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Wed, 23 Sep 2020 03:47:06 +0200 Message-Id: <20200923014713.16932-2-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200923014713.16932-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrKIsWRmVeSWpSXmKPExsWy7djP87pqK7PiDSZ+k7W4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsEroyWVQ+Y Cj5KVqzcu4uxgfGmSBcjJ4eEgInErRlfGbsYuTiEBFYwSmy4+YIdwvnCKHHh2SFWCOczo8Sq nceZuxg5wFr2PjUH6RYSWM4o8XZiOETNJ0aJk5f2MoIk2ARsJY7M/MoKYosIhEk0N+9lAell FnCWePKVDSQsLOAkcbn5IROIzSKgKrHt2mxmEJtXwFWiu281M8R18hKrNxwAW8sp4Cbx9J88 yCoJgetsEr2L9kPVuEj0r9/DCmELS7w6voUdwpaR+L9zPhNEwzZGiau/fzJCOPsZJa73roCq spY4/O83G8RxmhLrd+lDhB0leqbsgfqXT+LGW0GQMDOQOWnbdKgwr0RHmxBEtZ7E056pjDBr /6x9wgJhe0g8XP6LGRI8VxklljxaxDaBUX4WwrIFjIyrGMVTS4tz01OLjfNSy/WKE3OLS/PS 9ZLzczcxAiP/9L/jX3cw7vuTdIhRgINRiYf3xZPMeCHWxLLiytxDjBIczEoivE5nT8cJ8aYk VlalFuXHF5XmpBYfYpTmYFES5zVe9DJWSCA9sSQ1OzW1ILUIJsvEwSnVwHg7bZrjLtttU7mu b7WJrgx3eCk3+2yUlaucg7faqXeCsud+8S6aUDOT+9y17tvT97qrqi6L+1pUxF3O0vLW23BD cnia8fHSjdOPOrt23pdwnrX7YVv+sn2/14WG/TcTMvDOVfJ7yXBS8fbWTecftHB9vzmrd8Kd uTHzaza/teCYk6nNEOed8FSJpTgj0VCLuag4EQAfHKPm+AIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsVy+t/xu7pqK7PiDVpes1ncWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXkbLqgdMBR8lK1bu3cXYwHhTpIuRg0NC wERi71PzLkYuDiGBpYwSix+fZoSIy0h8uCTQxcgJZApL/LnWxQZR84FRYknfORaQBJuArcSR mV9ZQepFBMIkTqz0BwkzC7hLbFk8lRnEFhZwkrjc/JAJxGYRUJXYdm02WJxXwFWiu281M8R8 eYnVGw4wg4zhFHCTePpPHmJVI6PEjIWv2Scw8i1gZFjFKJJaWpybnltsqFecmFtcmpeul5yf u4kRGIbbjv3cvIPx0sbgQ4wCHIxKPLwvnmTGC7EmlhVX5h5ilOBgVhLhdTp7Ok6INyWxsiq1 KD++qDQntfgQoynQUROZpUST84ExklcSb2hqaG5haWhubG5sZqEkztshcDBGSCA9sSQ1OzW1 ILUIpo+Jg1OqgbE03DT3xdW4XJ6ydzIXy9K2LBTZsvjJCoP8I71u2c/OyVw4nGQ0IVEpu39h /IG/LZPWJ7n02L3Y+Wbe8891rH9cZeMrTlvMcYuw/diXcqksf/ef/XvEvgiYL3y2UGL1+xfr Z68O8deU2bqFxaIn+otVQp7/n797k+xje9KnvJl6p85I+6GJYYoSS3FGoqEWc1FxIgAOqySe WQIAAA== X-CMS-MailID: 20200923014718eucas1p11fdcd774fef7b9e077e14e01c9f951d5 X-Msg-Generator: CA X-RootMTR: 20200923014718eucas1p11fdcd774fef7b9e077e14e01c9f951d5 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200923014718eucas1p11fdcd774fef7b9e077e14e01c9f951d5 References: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> <20200923014713.16932-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v2 1/8] app/test: fix deadlock in distributor test 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" The sanity test with worker shutdown delegates all bufs to be processed by a single lcore worker, then it freezes one of the lcore workers and continues to send more bufs. Problem occurred if freezed lcore is the same as the one that is processing the mbufs. The lcore processing mbufs might be different every time test is launched. This is caused by keeping the value of wkr static variable in rte_distributor_process function between running test cases. Test freezed always lcore with 0 id. The patch changes avoids possible collision by freezing lcore with zero_idx. The lcore that receives the data updates the zero_idx, so it is not freezed itself. To reproduce the issue fixed by this patch, please run distributor_autotest command in test app several times in a row. Fixes: c3eabff124e6 ("distributor: add unit tests") Cc: bruce.richardson@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski --- app/test/test_distributor.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index ba1f81cf8..35b25463a 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -28,6 +28,7 @@ struct worker_params worker_params; static volatile int quit; /**< general quit variable for all threads */ static volatile int zero_quit; /**< var for when we just want thr0 to quit*/ static volatile unsigned worker_idx; +static volatile unsigned zero_idx; struct worker_stats { volatile unsigned handled_packets; @@ -346,27 +347,43 @@ handle_work_for_shutdown_test(void *arg) unsigned int total = 0; unsigned int i; unsigned int returned = 0; + unsigned int zero_id = 0; const unsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED); num = rte_distributor_get_pkt(d, id, buf, buf, num); + zero_id = __atomic_load_n(&zero_idx, __ATOMIC_ACQUIRE); + if (id == zero_id && num > 0) { + zero_id = (zero_id + 1) % __atomic_load_n(&worker_idx, + __ATOMIC_ACQUIRE); + __atomic_store_n(&zero_idx, zero_id, __ATOMIC_RELEASE); + } + /* wait for quit single globally, or for worker zero, wait * for zero_quit */ - while (!quit && !(id == 0 && zero_quit)) { + while (!quit && !(id == zero_id && zero_quit)) { worker_stats[id].handled_packets += num; count += num; for (i = 0; i < num; i++) rte_pktmbuf_free(buf[i]); num = rte_distributor_get_pkt(d, id, buf, buf, num); + + zero_id = __atomic_load_n(&zero_idx, __ATOMIC_ACQUIRE); + if (id == zero_id && num > 0) { + zero_id = (zero_id + 1) % __atomic_load_n(&worker_idx, + __ATOMIC_ACQUIRE); + __atomic_store_n(&zero_idx, zero_id, __ATOMIC_RELEASE); + } + total += num; } worker_stats[id].handled_packets += num; count += num; returned = rte_distributor_return_pkt(d, id, buf, num); - if (id == 0) { + if (id == zero_id) { /* for worker zero, allow it to restart to pick up last packet * when all workers are shutting down. */ @@ -586,6 +603,7 @@ quit_workers(struct worker_params *wp, struct rte_mempool *p) rte_eal_mp_wait_lcore(); quit = 0; worker_idx = 0; + zero_idx = 0; } static int From patchwork Wed Sep 23 01:47:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78444 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 661F8A04B5; Wed, 23 Sep 2020 03:47:43 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 638EF1DB62; Wed, 23 Sep 2020 03:47:29 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 2700B1DA8C for ; Wed, 23 Sep 2020 03:47:21 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200923014720euoutp01dab39fb254c70a402b0dba56831001d5~3RnBLkN_01123411234euoutp01j for ; Wed, 23 Sep 2020 01:47:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200923014720euoutp01dab39fb254c70a402b0dba56831001d5~3RnBLkN_01123411234euoutp01j DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600825640; bh=xPWUwWzs8KDd9GRIYyNVFLY6E9FQFwkbk3DM1rTtSlk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ReCLG3HFEb4MOmmku7lXgMTemU1Sart/ySUaSRJLnOQ+3UBxbMllV3NZzzMVesRtL I+jCgCiAVYdxqei9d16O7qs3KbXoKSvfEB1ZUDVHgO6AgRen01E7SnEUnBv4VC4QM0 99LgEpQBVr7DCUfGRfrshVzgCofpDcmprLv+k3M0= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200923014719eucas1p2a4e75338e0095cf58358e3272c9de1d8~3RnAJ-vGw1510915109eucas1p2S; Wed, 23 Sep 2020 01:47:19 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 2A.7D.05997.729AA6F5; Wed, 23 Sep 2020 02:47:19 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200923014719eucas1p2f26000109e86a649796e902c30e58bf0~3Rm-qh8ZM1449114491eucas1p2m; Wed, 23 Sep 2020 01:47:19 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200923014719eusmtrp17b956b0e588a629851a5e974f0aa505d~3Rm-p7ZWx1355413554eusmtrp1J; Wed, 23 Sep 2020 01:47:19 +0000 (GMT) X-AuditID: cbfec7f4-65dff7000000176d-88-5f6aa927d404 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 59.DB.06017.629AA6F5; Wed, 23 Sep 2020 02:47:18 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200923014718eusmtip139e6492333de448e9ad19859e792d5c5~3Rm_-7RUw1064810648eusmtip1t; Wed, 23 Sep 2020 01:47:18 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Wed, 23 Sep 2020 03:47:07 +0200 Message-Id: <20200923014713.16932-3-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200923014713.16932-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCIsWRmVeSWpSXmKPExsWy7djPc7rqK7PiDV6+lra4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsErowPC3tZ Ct7qVEzf+p+1gXGhShcjB4eEgInE+7bgLkYuDiGBFYwSB7+tZoJwvjBKPPrXyALhfGaUmD3l A1sXIydYx9LGJ1BVyxklNvc/ZIRwPjFKPDvTAlbFJmArcWTmV1YQW0QgTKK5eS8LyD5mAWeJ J1/BSoQF3CUu3v/ABGKzCKhKdLR/ZwSxeQVcJa78mMAMsUxeYvWGA8wgrZwCbhJP/8mDrJIQ uMwmcfjYaiaIGheJKYeWMkLYwhKvjm9hh7BlJE5P7mGBaNjGKHH1909GCGc/o8T13hVQVdYS h//9ZoM4TlNi/S59SLg4ShzakwRh8knceCsIUswMZE7aNp0ZIswr0dEmBDFDT+Jpz1RGmK1/ 1j5hgbA9JP7sXAsOBCGBq4wS58/HTWCUn4WwagEj4ypG8dTS4tz01GKjvNRyveLE3OLSvHS9 5PzcTYzAuD/97/iXHYy7/iQdYhTgYFTi4X3xJDNeiDWxrLgy9xCjBAezkgiv09nTcUK8KYmV ValF+fFFpTmpxYcYpTlYlMR5jRe9jBUSSE8sSc1OTS1ILYLJMnFwSjUwqtn9LI1ubhXfYz0l JS4u8+YVs4fdjBfutlw6KqaRlXR2qxPr33Xz3PNtjZaKla0u/Bzwc0W5Bytf6vlL7gFafrNi d3zXzN4WlVp+4LfOl2U8Cxunm+zllrw7aU/nq3mf44KW31p9aLrAIavv1iynJhfF37y80ct5 nXXmLSY3hZD5XtMy3zp8U2Ipzkg01GIuKk4EAHWdnyX3AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsVy+t/xu7pqK7PiDX7OtLG4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYwPC3tZCt7qVEzf+p+1gXGhShcjJ4eE gInE0sYnTCC2kMBSRokrTaVdjBxAcRmJD5cEIEqEJf5c62LrYuQCKvnAKHFgZzMjSIJNwFbi yMyvrCD1IgJhEidW+oOEmQXcJbYsnsoMYgsD2RfvfwAbzyKgKtHR/h2slVfAVeLKjwnMEPPl JVZvOMAMMoZTwE3i6T95iFWNjBIzFr5mn8DIt4CRYRWjSGppcW56brGRXnFibnFpXrpecn7u JkZgGG479nPLDsaud8GHGAU4GJV4eF88yYwXYk0sK67MPcQowcGsJMLrdPZ0nBBvSmJlVWpR fnxRaU5q8SFGU6CjJjJLiSbnA2MkryTe0NTQ3MLS0NzY3NjMQkmct0PgYIyQQHpiSWp2ampB ahFMHxMHp1QDY+FN+ys/JVnZ/PeWPrvFYXNwy6serfeLvnKmhpvOWPIy6pqHaMnuWAbWuEks lzcXTNGZYHxLapnUNXnbpA7/FZuf8F2VZp36rZyv2fdze8VMj6qUD/bxPZ0WCvXsHSt38cu6 cRnO2vm4cwX/tMdf60QfN9XxGuie59/n4uar36G9W2HVlXkCSizFGYmGWsxFxYkA1ICtflkC AAA= X-CMS-MailID: 20200923014719eucas1p2f26000109e86a649796e902c30e58bf0 X-Msg-Generator: CA X-RootMTR: 20200923014719eucas1p2f26000109e86a649796e902c30e58bf0 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200923014719eucas1p2f26000109e86a649796e902c30e58bf0 References: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> <20200923014713.16932-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v2 2/8] app/test: synchronize statistics between lcores 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" Statistics of handled packets are cleared and read on main lcore, while they are increased in workers handlers on different lcores. Without synchronization occasionally showed invalid values. This patch uses atomic acquire/release mechanisms to synchronize. Fixes: c3eabff124e6 ("distributor: add unit tests") Cc: bruce.richardson@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski --- app/test/test_distributor.c | 39 ++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index 35b25463a..0e49e3714 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -43,7 +43,8 @@ total_packet_count(void) { unsigned i, count = 0; for (i = 0; i < worker_idx; i++) - count += worker_stats[i].handled_packets; + count += __atomic_load_n(&worker_stats[i].handled_packets, + __ATOMIC_ACQUIRE); return count; } @@ -52,6 +53,7 @@ static inline void clear_packet_count(void) { memset(&worker_stats, 0, sizeof(worker_stats)); + rte_atomic_thread_fence(__ATOMIC_RELEASE); } /* this is the basic worker function for sanity test @@ -72,13 +74,13 @@ handle_work(void *arg) num = rte_distributor_get_pkt(db, id, buf, buf, num); while (!quit) { __atomic_fetch_add(&worker_stats[id].handled_packets, num, - __ATOMIC_RELAXED); + __ATOMIC_ACQ_REL); count += num; num = rte_distributor_get_pkt(db, id, buf, buf, num); } __atomic_fetch_add(&worker_stats[id].handled_packets, num, - __ATOMIC_RELAXED); + __ATOMIC_ACQ_REL); count += num; rte_distributor_return_pkt(db, id, buf, num); return 0; @@ -134,7 +136,8 @@ sanity_test(struct worker_params *wp, struct rte_mempool *p) for (i = 0; i < rte_lcore_count() - 1; i++) printf("Worker %u handled %u packets\n", i, - worker_stats[i].handled_packets); + __atomic_load_n(&worker_stats[i].handled_packets, + __ATOMIC_ACQUIRE)); printf("Sanity test with all zero hashes done.\n"); /* pick two flows and check they go correctly */ @@ -159,7 +162,9 @@ sanity_test(struct worker_params *wp, struct rte_mempool *p) for (i = 0; i < rte_lcore_count() - 1; i++) printf("Worker %u handled %u packets\n", i, - worker_stats[i].handled_packets); + __atomic_load_n( + &worker_stats[i].handled_packets, + __ATOMIC_ACQUIRE)); printf("Sanity test with two hash values done\n"); } @@ -185,7 +190,8 @@ sanity_test(struct worker_params *wp, struct rte_mempool *p) for (i = 0; i < rte_lcore_count() - 1; i++) printf("Worker %u handled %u packets\n", i, - worker_stats[i].handled_packets); + __atomic_load_n(&worker_stats[i].handled_packets, + __ATOMIC_ACQUIRE)); printf("Sanity test with non-zero hashes done\n"); rte_mempool_put_bulk(p, (void *)bufs, BURST); @@ -280,15 +286,17 @@ handle_work_with_free_mbufs(void *arg) buf[i] = NULL; num = rte_distributor_get_pkt(d, id, buf, buf, num); while (!quit) { - worker_stats[id].handled_packets += num; count += num; + __atomic_fetch_add(&worker_stats[id].handled_packets, num, + __ATOMIC_ACQ_REL); for (i = 0; i < num; i++) rte_pktmbuf_free(buf[i]); num = rte_distributor_get_pkt(d, id, buf, buf, num); } - worker_stats[id].handled_packets += num; count += num; + __atomic_fetch_add(&worker_stats[id].handled_packets, num, + __ATOMIC_ACQ_REL); rte_distributor_return_pkt(d, id, buf, num); return 0; } @@ -363,8 +371,9 @@ handle_work_for_shutdown_test(void *arg) /* wait for quit single globally, or for worker zero, wait * for zero_quit */ while (!quit && !(id == zero_id && zero_quit)) { - worker_stats[id].handled_packets += num; count += num; + __atomic_fetch_add(&worker_stats[id].handled_packets, num, + __ATOMIC_ACQ_REL); for (i = 0; i < num; i++) rte_pktmbuf_free(buf[i]); num = rte_distributor_get_pkt(d, @@ -379,10 +388,11 @@ handle_work_for_shutdown_test(void *arg) total += num; } - worker_stats[id].handled_packets += num; count += num; returned = rte_distributor_return_pkt(d, id, buf, num); + __atomic_fetch_add(&worker_stats[id].handled_packets, num, + __ATOMIC_ACQ_REL); if (id == zero_id) { /* for worker zero, allow it to restart to pick up last packet * when all workers are shutting down. @@ -394,10 +404,11 @@ handle_work_for_shutdown_test(void *arg) id, buf, buf, num); while (!quit) { - worker_stats[id].handled_packets += num; count += num; rte_pktmbuf_free(pkt); num = rte_distributor_get_pkt(d, id, buf, buf, num); + __atomic_fetch_add(&worker_stats[id].handled_packets, + num, __ATOMIC_ACQ_REL); } returned = rte_distributor_return_pkt(d, id, buf, num); @@ -461,7 +472,8 @@ sanity_test_with_worker_shutdown(struct worker_params *wp, for (i = 0; i < rte_lcore_count() - 1; i++) printf("Worker %u handled %u packets\n", i, - worker_stats[i].handled_packets); + __atomic_load_n(&worker_stats[i].handled_packets, + __ATOMIC_ACQUIRE)); if (total_packet_count() != BURST * 2) { printf("Line %d: Error, not all packets flushed. " @@ -514,7 +526,8 @@ test_flush_with_worker_shutdown(struct worker_params *wp, zero_quit = 0; for (i = 0; i < rte_lcore_count() - 1; i++) printf("Worker %u handled %u packets\n", i, - worker_stats[i].handled_packets); + __atomic_load_n(&worker_stats[i].handled_packets, + __ATOMIC_ACQUIRE)); if (total_packet_count() != BURST) { printf("Line %d: Error, not all packets flushed. " From patchwork Wed Sep 23 01:47:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78445 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id BE919A04B5; Wed, 23 Sep 2020 03:47:49 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9A4961DB6D; Wed, 23 Sep 2020 03:47:30 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 64F2D1DAF4 for ; Wed, 23 Sep 2020 03:47:21 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200923014721euoutp011c7aa79ca9e8bb3b1c057b52fa4960d5~3RnBqmCIu1123411234euoutp01k for ; Wed, 23 Sep 2020 01:47:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200923014721euoutp011c7aa79ca9e8bb3b1c057b52fa4960d5~3RnBqmCIu1123411234euoutp01k DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600825641; bh=YRopDLWwJh/3CXOBB33AlussyX1QSadasjirLpQnkUQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=e2638WGrpEDYiQtoIZQ5QiVx99ZF09syvOFiiqmiBKwv0pP6CegR3RsRObYbKhShq H3w6wPHnmyqLKaKPN2rQhK1FAoDRXoczoGEJ6MEnUn0PQBBUylXdwkZtW2KupMHatb QA1SvsLf3N26iKNZC+00+kJltiQKJi2xgCjSnbt4= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200923014720eucas1p258aaba5a2a881c675ecbd7464263dad7~3RnBYrnFI1449114491eucas1p2o; Wed, 23 Sep 2020 01:47:20 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 25.6D.06456.829AA6F5; Wed, 23 Sep 2020 02:47:20 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200923014719eucas1p165c419cff4f265cff8add8cc818210ff~3RnAfD_mx1653216532eucas1p1B; Wed, 23 Sep 2020 01:47:19 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200923014719eusmtrp21445833c75126368bd607e9c28cb216e~3RnAehxIH2054820548eusmtrp2Q; Wed, 23 Sep 2020 01:47:19 +0000 (GMT) X-AuditID: cbfec7f2-809ff70000001938-dc-5f6aa928f96f Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 34.9A.06314.729AA6F5; Wed, 23 Sep 2020 02:47:19 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200923014719eusmtip15677f00c562f19921215a79d11e594c8~3Rm-zXb8U0729307293eusmtip1O; Wed, 23 Sep 2020 01:47:19 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Wed, 23 Sep 2020 03:47:08 +0200 Message-Id: <20200923014713.16932-4-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200923014713.16932-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGIsWRmVeSWpSXmKPExsWy7djPc7oaK7PiDfqOGFrcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8bRxmds BS9UKz7c38PYwPhctouRk0NCwERi7dcFLF2MXBxCAisYJa7dOQrlfGGUeHn4KROE85lR4sGK q0wwLeuvTGSGSCxnlNi0Zw47hPOJUWL++7PsIFVsArYSR2Z+ZQWxRQTCJJqb9wLN5eBgFnCW ePKVDSQsLOAh8f31KrChLAKqElumbWcEsXkFXCU+z9jLDrFMXmL1hgPMIK2cAm4ST//JQ4Rv s0nsn68OYbtIzD64hAXCFpZ4dXwLVKuMxP+d88EekBDYxihx9fdPRghnP6PE9d4VUFXWEof/ /WaDuE1TYv0ufYiwo8SSN/fZQcISAnwSN94KgoSZgcxJ26YzQ4R5JTrahCCq9SSe9kxlhFn7 Z+0TqHM8JNbcmMgICZ2rjBL9dw6xT2CUn4WwbAEj4ypG8dTS4tz01GLDvNRyveLE3OLSvHS9 5PzcTYzA2D/97/inHYxfLyUdYhTgYFTi4X3xJDNeiDWxrLgy9xCjBAezkgiv09nTcUK8KYmV ValF+fFFpTmpxYcYpTlYlMR5jRe9jBUSSE8sSc1OTS1ILYLJMnFwSjUw+i2z22/mb9bEY2W5 Ov09/1neY5etpx/v2KE788+3bv6SnrYXJQEXt//zkNidWiSvt47PQky+OG2Jw3aVW1Uagk2l tZdvfRFjlgzY921pmeM9Z98VagbeFseE17JJn3vxarLnyepVpzri2o5G2B3XSD0YqGh+eN8t qyn6FSUFm/4VNTek3jijxFKckWioxVxUnAgARQYC/PkCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOLMWRmVeSWpSXmKPExsVy+t/xu7rqK7PiDXpOG1ncWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsbRxmdsBS9UKz7c38PYwPhctouRk0NC wERi/ZWJzF2MXBxCAksZJSaevc/WxcgBlJCR+HBJAKJGWOLPtS42iJoPjBKdi6exgCTYBGwl jsz8ygpSLyIQJnFipT9ImFnAXWLL4qnMILawgIfE99ermEBsFgFViS3TtjOC2LwCrhKfZ+xl h5gvL7F6wwFmkDGcAm4ST//JQ6xqZJSYsfA1+wRGvgWMDKsYRVJLi3PTc4sN9YoTc4tL89L1 kvNzNzECA3HbsZ+bdzBe2hh8iFGAg1GJh/fFk8x4IdbEsuLK3EOMEhzMSiK8TmdPxwnxpiRW VqUW5ccXleakFh9iNAU6aiKzlGhyPjBK8kriDU0NzS0sDc2NzY3NLJTEeTsEDsYICaQnlqRm p6YWpBbB9DFxcEo1MMYmfyi9OyOFkYUpz+/60/+zzwdpegfmZjnbNZu+FIvavWbvwb9mOdJb 581MLqpfcOjqm6fFVj/qF742kVb80eM2M/qqxFebSye+mV9c0ym2/8GvfPlHu2zFlqf+L51x 8OCs3RdcL3/ST5BTK/FM8z3O1L7vue6WL8aJ01zyf34QShLTFY+WtFViKc5INNRiLipOBACj AkW6WgIAAA== X-CMS-MailID: 20200923014719eucas1p165c419cff4f265cff8add8cc818210ff X-Msg-Generator: CA X-RootMTR: 20200923014719eucas1p165c419cff4f265cff8add8cc818210ff X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200923014719eucas1p165c419cff4f265cff8add8cc818210ff References: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> <20200923014713.16932-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v2 3/8] app/test: fix freeing mbufs in distributor tests 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" Sanity tests with mbuf alloc and shutdown tests assume that mbufs passed to worker cores are freed in handlers. Such packets should not be returned to the distributor's main core. The only packets that should be returned are the packets send after completion of the tests in quit_workers function. This patch fixes freeing mbufs, stops returning them to distributor's core and cleans up unused variables. Fixes: c0de0eb82e40 ("distributor: switch over to new API") Cc: david.hunt@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski --- app/test/test_distributor.c | 50 +++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index 0e49e3714..94b65b382 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -277,24 +277,23 @@ handle_work_with_free_mbufs(void *arg) struct rte_mbuf *buf[8] __rte_cache_aligned; struct worker_params *wp = arg; struct rte_distributor *d = wp->dist; - unsigned int count = 0; unsigned int i; unsigned int num = 0; unsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED); for (i = 0; i < 8; i++) buf[i] = NULL; - num = rte_distributor_get_pkt(d, id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, buf, 0); while (!quit) { - count += num; __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); - for (i = 0; i < num; i++) + for (i = 0; i < num; i++) { rte_pktmbuf_free(buf[i]); + buf[i] = NULL; + } num = rte_distributor_get_pkt(d, - id, buf, buf, num); + id, buf, buf, 0); } - count += num; __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); rte_distributor_return_pkt(d, id, buf, num); @@ -322,7 +321,6 @@ sanity_test_with_mbuf_alloc(struct worker_params *wp, struct rte_mempool *p) rte_distributor_process(d, NULL, 0); for (j = 0; j < BURST; j++) { bufs[j]->hash.usr = (i+j) << 1; - rte_mbuf_refcnt_set(bufs[j], 1); } rte_distributor_process(d, bufs, BURST); @@ -346,20 +344,18 @@ sanity_test_with_mbuf_alloc(struct worker_params *wp, struct rte_mempool *p) static int handle_work_for_shutdown_test(void *arg) { - struct rte_mbuf *pkt = NULL; struct rte_mbuf *buf[8] __rte_cache_aligned; struct worker_params *wp = arg; struct rte_distributor *d = wp->dist; - unsigned int count = 0; unsigned int num = 0; - unsigned int total = 0; unsigned int i; - unsigned int returned = 0; unsigned int zero_id = 0; const unsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED); + for (i = 0; i < 8; i++) + buf[i] = NULL; - num = rte_distributor_get_pkt(d, id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, buf, 0); zero_id = __atomic_load_n(&zero_idx, __ATOMIC_ACQUIRE); if (id == zero_id && num > 0) { @@ -371,13 +367,14 @@ handle_work_for_shutdown_test(void *arg) /* wait for quit single globally, or for worker zero, wait * for zero_quit */ while (!quit && !(id == zero_id && zero_quit)) { - count += num; __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); - for (i = 0; i < num; i++) + for (i = 0; i < num; i++) { rte_pktmbuf_free(buf[i]); + buf[i] = NULL; + } num = rte_distributor_get_pkt(d, - id, buf, buf, num); + id, buf, buf, 0); zero_id = __atomic_load_n(&zero_idx, __ATOMIC_ACQUIRE); if (id == zero_id && num > 0) { @@ -385,12 +382,7 @@ handle_work_for_shutdown_test(void *arg) __ATOMIC_ACQUIRE); __atomic_store_n(&zero_idx, zero_id, __ATOMIC_RELEASE); } - - total += num; } - count += num; - returned = rte_distributor_return_pkt(d, id, buf, num); - __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); if (id == zero_id) { @@ -400,20 +392,24 @@ handle_work_for_shutdown_test(void *arg) while (zero_quit) usleep(100); + for (i = 0; i < num; i++) { + rte_pktmbuf_free(buf[i]); + buf[i] = NULL; + } num = rte_distributor_get_pkt(d, - id, buf, buf, num); + id, buf, buf, 0); while (!quit) { - count += num; - rte_pktmbuf_free(pkt); - num = rte_distributor_get_pkt(d, id, buf, buf, num); __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); + for (i = 0; i < num; i++) { + rte_pktmbuf_free(buf[i]); + buf[i] = NULL; + } + num = rte_distributor_get_pkt(d, id, buf, buf, 0); } - returned = rte_distributor_return_pkt(d, - id, buf, num); - printf("Num returned = %d\n", returned); } + rte_distributor_return_pkt(d, id, buf, num); return 0; } From patchwork Wed Sep 23 01:47:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78446 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 99CBBA04B5; Wed, 23 Sep 2020 03:47:59 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 30B541DB77; Wed, 23 Sep 2020 03:47:32 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 5C9B11DB30 for ; Wed, 23 Sep 2020 03:47:22 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200923014722euoutp02be0039718243434757eab90eeab5d3c6~3RnCg2Z6C2715027150euoutp02D for ; Wed, 23 Sep 2020 01:47:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200923014722euoutp02be0039718243434757eab90eeab5d3c6~3RnCg2Z6C2715027150euoutp02D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600825642; bh=ay3uFOcN7bEP9pCkqxyZ1cgSSJeasqvOixtcGZmfYEU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VTTfbDjYodD0kgw/LH+ueO6+txawrxGknJ1nD+9vIpYfCQ1C85y8Z/WmL7amoN0+H 8HpBVWouwUPtEdaL3j1rMElIGUWs3NW/KrLgDKOs0LlO0DhQ68COwIfRzyy+Jr5GPO +CIxgOFThar6uvDpkeLnGe4ahrYJfZz6plJY8F1Q= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200923014721eucas1p19d1ffbc44e5b51e7b76df09efe2efa83~3RnBmo3Py2800828008eucas1p1o; Wed, 23 Sep 2020 01:47:21 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 36.AC.06318.829AA6F5; Wed, 23 Sep 2020 02:47:21 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200923014720eucas1p2bd5887c96c24839f364810a1bbe840da~3RnBP2Wcx1709717097eucas1p2Z; Wed, 23 Sep 2020 01:47:20 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200923014720eusmtrp1b0af35bf33944fe29362c10b87b02051~3RnBPS3_I1355413554eusmtrp1K; Wed, 23 Sep 2020 01:47:20 +0000 (GMT) X-AuditID: cbfec7f5-371ff700000018ae-ca-5f6aa9281c7c Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id B9.DB.06017.829AA6F5; Wed, 23 Sep 2020 02:47:20 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200923014720eusmtip190879229b8b75de8b773a26e4ba8b35a~3RnAljnnl1064810648eusmtip1u; Wed, 23 Sep 2020 01:47:19 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Wed, 23 Sep 2020 03:47:09 +0200 Message-Id: <20200923014713.16932-5-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200923014713.16932-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djP87qaK7PiDaYdZrS4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsErozvr26y FizjrOhsaWZuYHzF3sXIySEhYCLxp/sraxcjF4eQwApGib/3F7NDOF8YJe5/2wzlfGaUeHXq KwtMy9z3fxkhEssZJfZsWs8C4XxilFh4awIbSBWbgK3EkZkggzk5RATCJJqb9wIVcXAwCzhL PPkKViIs4CWxY+5xRhCbRUBV4ua9hWA38Qq4SnTeWcAMsUxeYvWGA8wgrZwCbhJP/8mDrJIQ uM4m8eDKPFaIGheJ299mMkLYwhKvjm+B+k1G4vTkHhaIhm2MEld//2SEcPYzSlzvXQFVZS1x +N9vNojjNCXW79KHCDtK3O2/wg4SlhDgk7jxVhAkzAxkTto2nRkizCvR0SYEUa0n8bRnKiPM 2j9rn0DDykNiw/170OC9yihx+edr1gmM8rMQli1gZFzFKJ5aWpybnlpsnJdarlecmFtcmpeu l5yfu4kRGP2n/x3/uoNx35+kQ4wCHIxKPLwvnmTGC7EmlhVX5h5ilOBgVhLhdTp7Ok6INyWx siq1KD++qDQntfgQozQHi5I4r/Gil7FCAumJJanZqakFqUUwWSYOTqkGxlX8hnkP7iUcOndB 69r+L1Xxbs7p1S3CpQ7lciy7I/4dOhpXIBWgbGozQcDFq2YTb9+qQxMY96RfW80ZF7535qTG 05Yf+vjil65VZVJ2XxIwd9YzbkmV2Ss8cvtDRDgO7fsw52K1V9puF1kNa+bmqvfrtF8nJz2p m/lo3oamxO6fCuXZjUcilViKMxINtZiLihMBvhIFL/oCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOLMWRmVeSWpSXmKPExsVy+t/xu7oaK7PiDe7u17K4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYzvr26yFizjrOhsaWZuYHzF3sXIySEh YCIx9/1fxi5GLg4hgaWMErM/9TB3MXIAJWQkPlwSgKgRlvhzrYsNouYDo8SPOzuZQBJsArYS R2Z+ZQWpFxEIkzix0h8kzCzgLrFl8VRmEFtYwEtix9zjjCA2i4CqxM17C8H28gq4SnTeWcAM MV9eYvWGA2BrOQXcJJ7+k4dY1cgoMWPha/YJjHwLGBlWMYqklhbnpucWG+kVJ+YWl+al6yXn 525iBAbitmM/t+xg7HoXfIhRgINRiYf3xZPMeCHWxLLiytxDjBIczEoivE5nT8cJ8aYkVlal FuXHF5XmpBYfYjQFOmois5Rocj4wSvJK4g1NDc0tLA3Njc2NzSyUxHk7BA7GCAmkJ5akZqem FqQWwfQxcXBKNTDuPl+8O+5Fg3BTvbyQKfP9GLM3C84bmNdttnTU/HRt8xyhE58bM33T/7Ye mFzCuUiZYfbKjwv/pAlsatHMPLnxnMvHvY0L/76L+Z3LNTshdJuyaLXD1VY1v3P7Eu876QWG nLlz/myy2/diL0N/Rqdr66YcNjvD+dpb86b2++LyFot9B4ImpP9SYinOSDTUYi4qTgQAgXH2 vloCAAA= X-CMS-MailID: 20200923014720eucas1p2bd5887c96c24839f364810a1bbe840da X-Msg-Generator: CA X-RootMTR: 20200923014720eucas1p2bd5887c96c24839f364810a1bbe840da X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200923014720eucas1p2bd5887c96c24839f364810a1bbe840da References: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> <20200923014713.16932-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v2 4/8] app/test: collect return mbufs in distributor test 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" During quit_workers function distributor's main core processes some packets to wake up pending worker cores so they can quit. As quit_workers acts also as a cleanup procedure for next test case it should also collect these packages returned by workers' handlers, so the cyclic buffer with returned packets in distributor remains empty. Fixes: c3eabff124e6 ("distributor: add unit tests") Cc: bruce.richardson@intel.com Fixes: c0de0eb82e40 ("distributor: switch over to new API") Cc: david.hunt@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski --- app/test/test_distributor.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index 94b65b382..f31b54edf 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -610,6 +610,10 @@ quit_workers(struct worker_params *wp, struct rte_mempool *p) rte_distributor_process(d, NULL, 0); rte_distributor_flush(d); rte_eal_mp_wait_lcore(); + + while (rte_distributor_returned_pkts(d, bufs, RTE_MAX_LCORE)) + ; + quit = 0; worker_idx = 0; zero_idx = 0; From patchwork Wed Sep 23 01:47:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78447 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B223FA04B5; Wed, 23 Sep 2020 03:48:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AB7CB1DB8F; Wed, 23 Sep 2020 03:47:33 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 8BDED1DB35 for ; Wed, 23 Sep 2020 03:47:22 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200923014722euoutp019b01c8a7599db39d403ab59a98fd46ed~3RnCwfpS51123411234euoutp01m for ; Wed, 23 Sep 2020 01:47:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200923014722euoutp019b01c8a7599db39d403ab59a98fd46ed~3RnCwfpS51123411234euoutp01m DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600825642; bh=h2IUnowZC6g6U1PDEy2qPJDrhADn58pZEJ7CaYNOixw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ROFfQrI8uJVap7s8bg6Fk1F/leFKa8Vv1+0YZS08sKg0NZcQ5zeIuTirwNSfAfuhm 3wSVi9Dksq1mC5UFD6IkG3v5CGoh/+J0apCtO+3ETM2mBhZSzP5yjLGd4REndpeUXg dGS8ye349+wPgZz2eQDuyvucT9m/FZEIAxWVAfPY= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200923014722eucas1p2eb16beca2b3cabb46c69d2db9f2829ab~3RnCgPmAa1707617076eucas1p2e; Wed, 23 Sep 2020 01:47:22 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 85.6D.06456.929AA6F5; Wed, 23 Sep 2020 02:47:22 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200923014721eucas1p1d22ac56c9b9e4fb49ac73d72d51a7a23~3RnCEZ8Fv2800828008eucas1p1q; Wed, 23 Sep 2020 01:47:21 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200923014721eusmtrp253abfdee65af5a13ee7efc225cec93ec~3RnCD3GY-2054820548eusmtrp2R; Wed, 23 Sep 2020 01:47:21 +0000 (GMT) X-AuditID: cbfec7f2-809ff70000001938-de-5f6aa929eae1 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 94.9A.06314.929AA6F5; Wed, 23 Sep 2020 02:47:21 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200923014720eusmtip14b5f58e98f7802a1d1abd292b050dc6f~3RnBaKLUi0729307293eusmtip1P; Wed, 23 Sep 2020 01:47:20 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Wed, 23 Sep 2020 03:47:10 +0200 Message-Id: <20200923014713.16932-6-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200923014713.16932-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djPc7paK7PiDVa+Y7S4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsEroyNew+w FMwTrViy9z5zA2O7UBcjJ4eEgInEtu+TWboYuTiEBFYwSjRMmswI4XxhlPjcOpEJwvnMKHH4 8DI2mJb+ZYegWpYzSlx/vYQNwvnEKNF34hkrSBWbgK3EkZlfwWwRgTCJ5ua9QB0cHMwCzhJP voINEhbwkrjYcgvMZhFQlejovs4IYvMKuEpcWL2LHWKZvMTqDQeYQVo5Bdwknv6TB1klIXCd TeLGzt3MEDUuEivuzWSBsIUlXh3fAtUrI/F/53wmiIZtjBJXf/9khHD2A13duwKqylri8L/f bBDHaUqs36UPEXaUeDJxNTtIWEKAT+LGW0GQMDOQOWnbdGaIMK9ERxs0GPUknvZMZYRZ+2ft E6hzPCSOrroCDZ6rjBLfPm1hnsAoPwth2QJGxlWM4qmlxbnpqcWGeanlesWJucWleel6yfm5 mxiB0X/63/FPOxi/Xko6xCjAwajEw/viSWa8EGtiWXFl7iFGCQ5mJRFep7On44R4UxIrq1KL 8uOLSnNSiw8xSnOwKInzGi96GSskkJ5YkpqdmlqQWgSTZeLglGpg3DAv8HrAt5MvlGMYTvbs Legz71zo8vMZ37yfL2W/fj594su7Csu3lZdeuUffVNfbku8ZGezguHft3IWTX+ZUMURsb/P1 XzjfeDPfw299ay4YRW4J8NXIfPw4222+TXzvmw1+tge+dE7t2emQEjmJ/c9ftgWdLU/WmmiY +dgYFK0WWbqmMz+LV4mlOCPRUIu5qDgRAPmWDTr6AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOLMWRmVeSWpSXmKPExsVy+t/xu7qaK7PiDdYcUrG4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYyNew+wFMwTrViy9z5zA2O7UBcjJ4eE gIlE/7JDLF2MXBxCAksZJdZ1rWLqYuQASshIfLgkAFEjLPHnWhcbRM0HRonzE3exgiTYBGwl jsz8ygpSLyIQJnFipT9ImFnAXWLL4qnMILawgJfExZZbbCA2i4CqREf3dUYQm1fAVeLC6l3s EPPlJVZvOMAMMoZTwE3i6T95iFWNjBIzFr5mn8DIt4CRYRWjSGppcW56brGhXnFibnFpXrpe cn7uJkZgIG479nPzDsZLG4MPMQpwMCrx8L54khkvxJpYVlyZe4hRgoNZSYTX6ezpOCHelMTK qtSi/Pii0pzU4kOMpkBHTWSWEk3OB0ZJXkm8oamhuYWlobmxubGZhZI4b4fAwRghgfTEktTs 1NSC1CKYPiYOTqkGRs2tE2I0s9OOb7OrmdNjurru44kEeU7jgg2HrFWT9y379+WckOjbiTJC u8NN9t/SqunMf+EY8lS1pEB1weHt1xdLWWVYfmf2YghI3nTNK0VoytoDTxWV9c5H5HJ8bH99 98U2zdgmLYmo1evrRaoZr3YxOW169pBJ61zC4q/Lb+dazg4tKZh2SYmlOCPRUIu5qDgRAM4G wTtaAgAA X-CMS-MailID: 20200923014721eucas1p1d22ac56c9b9e4fb49ac73d72d51a7a23 X-Msg-Generator: CA X-RootMTR: 20200923014721eucas1p1d22ac56c9b9e4fb49ac73d72d51a7a23 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200923014721eucas1p1d22ac56c9b9e4fb49ac73d72d51a7a23 References: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> <20200923014713.16932-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v2 5/8] distributor: fix missing handshake synchronization 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" rte_distributor_return_pkt function which is run on worker cores must wait for distributor core to clear handshake on retptr64 before using those buffers. While the handshake is set distributor core controls buffers and any operations on worker side might overwrite buffers which are unread yet. Same situation appears in the legacy single distributor. Function rte_distributor_return_pkt_single shouldn't modify the bufptr64 until handshake on it is cleared by distributor lcore. Fixes: 775003ad2f96 ("distributor: add new burst-capable library") Cc: david.hunt@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski --- lib/librte_distributor/rte_distributor.c | 14 ++++++++++++++ lib/librte_distributor/rte_distributor_single.c | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c index 1c047f065..89493c331 100644 --- a/lib/librte_distributor/rte_distributor.c +++ b/lib/librte_distributor/rte_distributor.c @@ -160,6 +160,7 @@ rte_distributor_return_pkt(struct rte_distributor *d, { struct rte_distributor_buffer *buf = &d->bufs[worker_id]; unsigned int i; + volatile int64_t *retptr64; if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) { if (num == 1) @@ -169,6 +170,19 @@ rte_distributor_return_pkt(struct rte_distributor *d, return -EINVAL; } + retptr64 = &(buf->retptr64[0]); + /* Spin while handshake bits are set (scheduler clears it). + * Sync with worker on GET_BUF flag. + */ + while (unlikely(__atomic_load_n(retptr64, __ATOMIC_ACQUIRE) + & RTE_DISTRIB_GET_BUF)) { + rte_pause(); + uint64_t t = rte_rdtsc()+100; + + while (rte_rdtsc() < t) + rte_pause(); + } + /* Sync with distributor to acquire retptrs */ __atomic_thread_fence(__ATOMIC_ACQUIRE); for (i = 0; i < RTE_DIST_BURST_SIZE; i++) diff --git a/lib/librte_distributor/rte_distributor_single.c b/lib/librte_distributor/rte_distributor_single.c index abaf7730c..f4725b1d0 100644 --- a/lib/librte_distributor/rte_distributor_single.c +++ b/lib/librte_distributor/rte_distributor_single.c @@ -74,6 +74,10 @@ rte_distributor_return_pkt_single(struct rte_distributor_single *d, union rte_distributor_buffer_single *buf = &d->bufs[worker_id]; uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS) | RTE_DISTRIB_RETURN_BUF; + while (unlikely(__atomic_load_n(&buf->bufptr64, __ATOMIC_RELAXED) + & RTE_DISTRIB_FLAGS_MASK)) + rte_pause(); + /* Sync with distributor on RETURN_BUF flag. */ __atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE); return 0; From patchwork Wed Sep 23 01:47:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78448 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2A53BA04B5; Wed, 23 Sep 2020 03:48:16 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 028391DB98; Wed, 23 Sep 2020 03:47:35 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 522951DB30 for ; Wed, 23 Sep 2020 03:47:23 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200923014723euoutp019828a9182b690d6edf8cb5cc092db530~3RnDe6KHQ1123411234euoutp01n for ; Wed, 23 Sep 2020 01:47:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200923014723euoutp019828a9182b690d6edf8cb5cc092db530~3RnDe6KHQ1123411234euoutp01n DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600825643; bh=F/QcS1TsD+CKMSw/ff2Fe2SfzJqQzA9Zm090joEQmbE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=s2LQgGZzWSE2YA0xRDfaQ3htUOamLh6hoqP89w9kxfHnOMa4QhTzyy3UWOhYoj2mM toTulNiKXbo4I4GFMIMjwnrxL65HK3ve0Q3mM69d5yqqaB+rZA4DTCuidgd9UTWMgY FeDZJQqwxxpE/npo8nN5VoHwLu+8rhUrW+ZhtcNU= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200923014722eucas1p2ea4c62b314e6ada658a7622cbc4d2ec2~3RnDQhNst1707617076eucas1p2k; Wed, 23 Sep 2020 01:47:22 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 8A.7D.05997.A29AA6F5; Wed, 23 Sep 2020 02:47:22 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200923014722eucas1p2c2ef63759f4b800c1b5a80094e07e384~3RnC5-x1x1709717097eucas1p2e; Wed, 23 Sep 2020 01:47:22 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200923014722eusmtrp29aa6288addcca36aa769abd3ab22723d~3RnC5fNHI2054820548eusmtrp2S; Wed, 23 Sep 2020 01:47:22 +0000 (GMT) X-AuditID: cbfec7f4-677ff7000000176d-8d-5f6aa92a49a0 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id F4.9A.06314.A29AA6F5; Wed, 23 Sep 2020 02:47:22 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200923014721eusmtip19577b114809479c8312233e376d0a5d6~3RnCQeQ5I1064810648eusmtip1v; Wed, 23 Sep 2020 01:47:21 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Wed, 23 Sep 2020 03:47:11 +0200 Message-Id: <20200923014713.16932-7-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200923014713.16932-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrKIsWRmVeSWpSXmKPExsWy7djPc7paK7PiDRZd17e4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsErow5HzvY CyYJVvx6fJ21gXEqXxcjJ4eEgInE7eavjF2MXBxCAisYJR6sPAzlfGGU2PzgNZTzmVHi0rKV LDAtnRdPQSWWM0ps+fyFBcL5xCgxcdUZRpAqNgFbiSMzv7KC2CICYRLNzXuBijg4mAWcJZ58 ZQMxhQWsJWYerQSpYBFQlTg+5wJYJ6+Aq8TKqUegdslLrN5wgBmknFPATeLpP3mQTRIC19kk Vi7dxg5R4yLx7fYJZghbWOLV8S1QcRmJ/zvnM0E0bGOUuPr7JyOEs59R4nrvCqgqa4nD/36z QdymKbF+lz5E2FHiyuX3YIslBPgkbrwVBAkzA5mTtk2HCvNKdLQJQVTrSTztmcoIs/bP2idQ 53tIXJq0AWyRkMBVRokbD9MmMMrPQti1gJFxFaN4amlxbnpqsVFearlecWJucWleul5yfu4m RmDkn/53/MsOxl1/kg4xCnAwKvHwvniSGS/EmlhWXJl7iFGCg1lJhNfp7Ok4Id6UxMqq1KL8 +KLSnNTiQ4zSHCxK4rzGi17GCgmkJ5akZqemFqQWwWSZODilGhhD4+fOrf61/vzH93yCGzJe HY68ZsoXsn/TpA7XD95KqYs0d3LnXd+7zmNL94/Fj4U4Ti8IznM/YLroi8uLuKxDYdfb/+1T fJ136Gzg8qRwX0P7RYfvdp4SCVlou2zH7HdFr7bKPOj/Xx/pf95/7nRuvQDHum/dxb8KHM7s jGqQeJl31Sa4cvU2JZbijERDLeai4kQA3dBLyfgCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsVy+t/xu7paK7PiDRZdk7G4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYw5HzvYCyYJVvx6fJ21gXEqXxcjJ4eE gIlE58VTjF2MXBxCAksZJU4cO8HexcgBlJCR+HBJAKJGWOLPtS42iJoPjBJX571gAkmwCdhK HJn5lRWkXkQgTOLESn+QMLOAu8SWxVOZQcLCAtYSM49WgoRZBFQljs+5wAhi8wq4SqyceoQF Yry8xOoNB8DKOQXcJJ7+k4fY1MgoMWPha/YJjHwLGBlWMYqklhbnpucWG+oVJ+YWl+al6yXn 525iBIbhtmM/N+9gvLQx+BCjAAejEg/viyeZ8UKsiWXFlbmHGCU4mJVEeJ3Ono4T4k1JrKxK LcqPLyrNSS0+xGgKdNREZinR5HxgjOSVxBuaGppbWBqaG5sbm1koifN2CByMERJITyxJzU5N LUgtgulj4uCUamCU3LvP6MvMlSv2ht+7kJ66W6lBoNgmcv3jHzcj9Jbp/JaQ43OuMP0WXreC U/yxxbGr8m1PygtdlS/KVbcIlJyM5zyim9hUuN+zMbk+dqUy60Tx0gSGva+E4w9Isur0s/jq SjmIy0YZpq1xfLTqyofVhYeEWKR+te/OPbrzcoTJvcDkK7enpiixFGckGmoxFxUnAgCZS3RZ WQIAAA== X-CMS-MailID: 20200923014722eucas1p2c2ef63759f4b800c1b5a80094e07e384 X-Msg-Generator: CA X-RootMTR: 20200923014722eucas1p2c2ef63759f4b800c1b5a80094e07e384 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200923014722eucas1p2c2ef63759f4b800c1b5a80094e07e384 References: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> <20200923014713.16932-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v2 6/8] distributor: fix handshake deadlock 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" Synchronization of data exchange between distributor and worker cores is based on 2 handshakes: retptr64 for returning mbufs from workers to distributor and bufptr64 for passing mbufs to workers. Without proper order of verifying those 2 handshakes a deadlock may occur. This can happen when worker core want to return back mbufs and waits for retptr handshake to be cleared and distributor core wait for bufptr to send mbufs to worker. This can happen as worker core first returns mbufs to distributor and later gets new mbufs, while distributor first release mbufs to worker and later handle returning packets. This patch fixes possibility of the deadlock by always taking care of returning packets first on the distributor side and handling packets while waiting to release new. Fixes: 775003ad2f96 ("distributor: add new burst-capable library") Cc: david.hunt@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski --- lib/librte_distributor/rte_distributor.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c index 89493c331..12b3db33c 100644 --- a/lib/librte_distributor/rte_distributor.c +++ b/lib/librte_distributor/rte_distributor.c @@ -321,12 +321,14 @@ release(struct rte_distributor *d, unsigned int wkr) struct rte_distributor_buffer *buf = &(d->bufs[wkr]); unsigned int i; + handle_returns(d, wkr); + /* Sync with worker on GET_BUF flag */ while (!(__atomic_load_n(&(d->bufs[wkr].bufptr64[0]), __ATOMIC_ACQUIRE) - & RTE_DISTRIB_GET_BUF)) + & RTE_DISTRIB_GET_BUF)) { + handle_returns(d, wkr); rte_pause(); - - handle_returns(d, wkr); + } buf->count = 0; @@ -376,6 +378,7 @@ rte_distributor_process(struct rte_distributor *d, /* Flush out all non-full cache-lines to workers. */ for (wid = 0 ; wid < d->num_workers; wid++) { /* Sync with worker on GET_BUF flag. */ + handle_returns(d, wid); if (__atomic_load_n(&(d->bufs[wid].bufptr64[0]), __ATOMIC_ACQUIRE) & RTE_DISTRIB_GET_BUF) { release(d, wid); From patchwork Wed Sep 23 01:47:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78449 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B87D0A04B5; Wed, 23 Sep 2020 03:48:24 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 73A4D1DBA7; Wed, 23 Sep 2020 03:47:36 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 38DB11DB50 for ; Wed, 23 Sep 2020 03:47:24 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200923014724euoutp01d45f05ab6d0d4fc65952ca48a02c8ddf~3RnEVNilX0326603266euoutp01F for ; Wed, 23 Sep 2020 01:47:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200923014724euoutp01d45f05ab6d0d4fc65952ca48a02c8ddf~3RnEVNilX0326603266euoutp01F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600825644; bh=gFZ/BC5QS8r9vYAoQsykBlxn+BSZtg1dnO8kDQnIEds=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EyiER4wgwnHpW+LAFWXBR29qCXvZgdACLaMVK7URIi2mo00A1ix4jCiRrKdaS49Lb pV6ikcUWNWAvIMmEmDyzEGRUJHy835xzLvL2U8tOoBIlOWIm2cyTrvs/UVENHXe2i6 d5R8Nv52zEcMtRtvzLmVniU805vbt+/TSY8zwkUY= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200923014723eucas1p263d61978e55af9c9e5e491e4ce8a716c~3RnEEYPgl1707617076eucas1p2q; Wed, 23 Sep 2020 01:47:23 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id EA.7D.05997.B29AA6F5; Wed, 23 Sep 2020 02:47:23 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200923014723eucas1p2a7c7210a55289b3739faff4f5ed72e30~3RnDrWL8E2913229132eucas1p2B; Wed, 23 Sep 2020 01:47:23 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200923014723eusmtrp11224d2a810e64e6a5043fad5e4b8aaf6~3RnDqPi0q1355413554eusmtrp1L; Wed, 23 Sep 2020 01:47:23 +0000 (GMT) X-AuditID: cbfec7f4-65dff7000000176d-8e-5f6aa92b0a86 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 3A.DB.06017.B29AA6F5; Wed, 23 Sep 2020 02:47:23 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200923014722eusmtip199ef5cdbea7f4efbd2c5e989bebc9a73~3RnDEOlfU0729307293eusmtip1Q; Wed, 23 Sep 2020 01:47:22 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Wed, 23 Sep 2020 03:47:12 +0200 Message-Id: <20200923014713.16932-8-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200923014713.16932-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrKIsWRmVeSWpSXmKPExsWy7djPc7raK7PiDXo7NCxurLK36Jv0kcni 3aftTBbPetYxWvzr+MPuwOrxa8FSVo/Fe14yeRx8t4cpgDmKyyYlNSezLLVI3y6BK6Nn9wW2 givcFfOvr2JpYHzM2cXIySEhYCLxoOs4WxcjF4eQwApGib73n1hAEkICXxglLv1whkh8ZpQ4 1PSNEaajZck+qKLljBLnWzIgij4BNZyZxwqSYBOwlTgy8yuYLSIQJtHcvBeogYODWcBZ4slX NpCwsICbxOv/j8FsFgFVidUbH4DZvAKuEvufvIPaJS+xesMBZpBWTqD6p//kQVZJCFxnk1gz fS4rRI2LxLL+XWwQtrDEq+Nb2CFsGYnTk3tYIBq2MUpc/f2TEcLZzyhxvXcFVJW1xOF/v9kg jtOUWL9LHyLsKPHk2AKwxRICfBI33gqChJmBzEnbpkOFeSU62oQgqvUknvZMZYRZ+2ftExYI 20Oi4dpLVkjwXGWUOPZ4FfsERvlZCMsWMDKuYhRPLS3OTU8tNspLLdcrTswtLs1L10vOz93E CIz80/+Of9nBuOtP0iFGAQ5GJR7eF08y44VYE8uKK3MPMUpwMCuJ8DqdPR0nxJuSWFmVWpQf X1Sak1p8iFGag0VJnNd40ctYIYH0xJLU7NTUgtQimCwTB6dUA+O00BCDrUrK5xum+O1gcPtT PWenmvsalt+9EdfTjj9NZVI9f/LQt3WLLCYwJ1aZ+vMGdzxfM3/Ko99G7Ov+qh1jk6/RfP3P UeQOn12TrvKJiWVXJS4cip9494mrQiRDg6xdwZ/L1R02j1wfq3yJy1UtZcrj+TD3WtW3hSqs j4rMz12TWJF3iU2JpTgj0VCLuag4EQBC0qfk+AIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOLMWRmVeSWpSXmKPExsVy+t/xu7raK7PiDTa8FrC4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYye3RfYCq5wV8y/voqlgfExZxcjJ4eE gIlEy5J9LF2MXBxCAksZJY5f2MrYxcgBlJCR+HBJAKJGWOLPtS42iJoPjBJNbxqZQBJsArYS R2Z+ZQWpFxEIkzix0h8kzCzgLrFl8VRmEFtYwE3i9f/HbCA2i4CqxOqND8BsXgFXif1P3jFC zJeXWL3hADPIGE6g+qf/5CFWNTJKzFj4mn0CI98CRoZVjCKppcW56bnFRnrFibnFpXnpesn5 uZsYgYG47djPLTsYu94FH2IU4GBU4uF98SQzXog1say4MvcQowQHs5IIr9PZ03FCvCmJlVWp RfnxRaU5qcWHGE2BjprILCWanA+MkrySeENTQ3MLS0NzY3NjMwslcd4OgYMxQgLpiSWp2amp BalFMH1MHJxSDYyWsXEGG+SVWm519ea5ZM7Y5rLl8V32ybUTF53s2Vn+L2Z21Dmf5J8bqvzM np3Zdsns1YbJcnXrE6TuZXCeX1y+KM+0WVQ+knEh1+azq3rsl3IyBGclz5Z2dpxzeAGLSJik 4S3+fa9X3nawDuaWX84mP6nIR+jUxtC35keX8TRZr/Y6uODjQXclluKMREMt5qLiRAClk355 WgIAAA== X-CMS-MailID: 20200923014723eucas1p2a7c7210a55289b3739faff4f5ed72e30 X-Msg-Generator: CA X-RootMTR: 20200923014723eucas1p2a7c7210a55289b3739faff4f5ed72e30 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200923014723eucas1p2a7c7210a55289b3739faff4f5ed72e30 References: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> <20200923014713.16932-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v2 7/8] distributor: do not use oldpkt when not needed 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" rte_distributor_request_pkt and rte_distributor_get_pkt dereferenced oldpkt parameter when in RTE_DIST_ALG_SINGLE even if number of returned buffers from worker to distributor was 0. This patch passes NULL to the legacy API when number of returned buffers is 0. This allows passing NULL as oldpkt parameter. Fixes: 775003ad2f96 ("distributor: add new burst-capable library") Cc: david.hunt@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski --- lib/librte_distributor/rte_distributor.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c index 12b3db33c..b720abe03 100644 --- a/lib/librte_distributor/rte_distributor.c +++ b/lib/librte_distributor/rte_distributor.c @@ -42,7 +42,7 @@ rte_distributor_request_pkt(struct rte_distributor *d, if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) { rte_distributor_request_pkt_single(d->d_single, - worker_id, oldpkt[0]); + worker_id, count ? oldpkt[0] : NULL); return; } @@ -134,7 +134,7 @@ rte_distributor_get_pkt(struct rte_distributor *d, if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) { if (return_count <= 1) { pkts[0] = rte_distributor_get_pkt_single(d->d_single, - worker_id, oldpkt[0]); + worker_id, return_count ? oldpkt[0] : NULL); return (pkts[0]) ? 1 : 0; } else return -EINVAL; From patchwork Wed Sep 23 01:47:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78450 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 68F90A04B5; Wed, 23 Sep 2020 03:48:32 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BADEF1DBB5; Wed, 23 Sep 2020 03:47:37 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id EAEAD1DA86 for ; Wed, 23 Sep 2020 03:47:24 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200923014724euoutp023f16142359ccd7148b31ba66a536a89b~3RnFAlWqy1896818968euoutp021 for ; Wed, 23 Sep 2020 01:47:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200923014724euoutp023f16142359ccd7148b31ba66a536a89b~3RnFAlWqy1896818968euoutp021 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1600825644; bh=dU7rWktTPIfjQZ7fCAIykFYYMgwWcdJlLIM6bxgVZkM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=u+aZPeOWwNh8/8nVLDoBkr1JLWj/SnGeZTW3Fw4gTIFyfas0kJ1Nsh4qkprS3gJei zE4DsKzNw24dDqEe1FEVDcyvljqfn5NFVhSdsuGKiGNWocGq/SKdiGTRh4e/gxUP3b /NPF0UPIYA0QZmkZgFdfAsjtgvHqf0UX435jYuqI= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200923014724eucas1p24c86413284c0670dcfcb3a26fe08afcf~3RnE1fNpP2914429144eucas1p2E; Wed, 23 Sep 2020 01:47:24 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id E5.6D.06456.C29AA6F5; Wed, 23 Sep 2020 02:47:24 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200923014724eucas1p13d3c0428a15bea26def7a4343251e4e4~3RnEfaSAn1605716057eucas1p1D; Wed, 23 Sep 2020 01:47:24 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200923014724eusmtrp27ead09e9cb58862d6701900d865cdcea~3RnEe289A2054820548eusmtrp2T; Wed, 23 Sep 2020 01:47:24 +0000 (GMT) X-AuditID: cbfec7f2-809ff70000001938-e2-5f6aa92cd366 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 55.9A.06314.C29AA6F5; Wed, 23 Sep 2020 02:47:24 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20200923014723eusmtip1705f8e76d12beca0cd9574735c241ded~3RnD3fDSd1064810648eusmtip1w; Wed, 23 Sep 2020 01:47:23 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Wed, 23 Sep 2020 03:47:13 +0200 Message-Id: <20200923014713.16932-9-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200923014713.16932-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrKIsWRmVeSWpSXmKPExsWy7djP87o6K7PiDY5/U7K4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsEroyLx36z FhyWqnjz6zxTA+M20S5GDg4JAROJ1e9duhi5OIQEVjBK9B85zQrhfGGUWDF9JjOE85lRYs2P 1WxdjJxgHUsaj0JVLWeUeHT+GjuE84lR4kHbD0aQKjYBW4kjM7+ygtgiAmESzc17WUD2MQs4 Szz5CjZIWMBN4s2tJrByFgFVibPLLjGDlPAKuEq8O88DsUteYvWGA2BhTqDyp//kQTZJCFxm k1h5ehoTRI2LxK+3HSwQtrDEq+Nb2CFsGYn/O+czQTRsY5S4+vsnI4Szn1Hieu8KqCpricP/ frNB3KYpsX6XPkTYUaJ56RtGSBDxSdx4KwgSZgYyJ22bzgwR5pXoaBOCqNaTeNozlRFm7Z+1 T6DO8ZBYuu0PGyR0rjJKvLp1g30Co/wshGULGBlXMYqnlhbnpqcWG+allusVJ+YWl+al6yXn 525iBEb+6X/HP+1g/Hop6RCjAAejEg/viyeZ8UKsiWXFlbmHGCU4mJVEeJ3Ono4T4k1JrKxK LcqPLyrNSS0+xCjNwaIkzmu86GWskEB6YklqdmpqQWoRTJaJg1OqgXGjZr7RycM/FnFM2fZQ +NuzPQteLkxa3n74de2xbfcMTZo/s339uNHpl5RHhbS169SO+ZpCf2dOeFL9aoqecMMmi0n/ tPO2WvxTWfnnndljbutI043zzqT80qnduHGn+fPzLJJLH8bwp5Sb5tme/i6taFC5Yt6izx85 TGK6VVd5/JrwSfSrimKBEktxRqKhFnNRcSIAVKm7vfgCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsVy+t/xu7o6K7PiDa5/47a4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYyLx36zFhyWqnjz6zxTA+M20S5GTg4J AROJJY1HWbsYuTiEBJYyStx+fZi9i5EDKCEj8eGSAESNsMSfa11sEDUfGCXuPnnHDJJgE7CV ODLzKytIvYhAmMSJlf4gYWYBd4kti6eClQgLuEm8udXECGKzCKhKnF12iRmknFfAVeLdeR6I 8fISqzccAAtzApU//ScPsamRUWLGwtfsExj5FjAyrGIUSS0tzk3PLTbUK07MLS7NS9dLzs/d xAgMw23Hfm7ewXhpY/AhRgEORiUe3hdPMuOFWBPLiitzDzFKcDArifA6nT0dJ8SbklhZlVqU H19UmpNafIjRFOimicxSosn5wBjJK4k3NDU0t7A0NDc2NzazUBLn7RA4GCMkkJ5YkpqdmlqQ WgTTx8TBKdXA2DF9zTYv/fWnsnmiWt+3mWgwvU+VD9x+x2TBhWV71yTck38nU/Qvvarv/ZLp lx7reP+qFtn3fFHZZ3mXP2Zmqpvu1pjyyfsEvPXRab+RP794S9Azpif2Vd8PrskL2Cj2quvr /WfLZXcH1IXcjhR6IL3q0cKKDiGV7o+5flUXnQ9JZLe+XVgQpsRSnJFoqMVcVJwIALJyzB9Z AgAA X-CMS-MailID: 20200923014724eucas1p13d3c0428a15bea26def7a4343251e4e4 X-Msg-Generator: CA X-RootMTR: 20200923014724eucas1p13d3c0428a15bea26def7a4343251e4e4 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200923014724eucas1p13d3c0428a15bea26def7a4343251e4e4 References: <20200915193449.13310-1-l.wojciechow@partner.samsung.com> <20200923014713.16932-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v2 8/8] distributor: align API documentation with code 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" After introducing burst API there were some artefacts in the API documentation from legacy single API. Also the rte_distributor_poll_pkt() function return values mismatched the implementation. Fixes: c0de0eb82e40 ("distributor: switch over to new API") Cc: david.hunt@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski --- lib/librte_distributor/rte_distributor.h | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/librte_distributor/rte_distributor.h b/lib/librte_distributor/rte_distributor.h index 327c0c4ab..a073e6461 100644 --- a/lib/librte_distributor/rte_distributor.h +++ b/lib/librte_distributor/rte_distributor.h @@ -155,7 +155,7 @@ rte_distributor_clear_returns(struct rte_distributor *d); * @param pkts * The mbufs pointer array to be filled in (up to 8 packets) * @param oldpkt - * The previous packet, if any, being processed by the worker + * The previous packets, if any, being processed by the worker * @param retcount * The number of packets being returned * @@ -187,15 +187,15 @@ rte_distributor_return_pkt(struct rte_distributor *d, /** * API called by a worker to request a new packet to process. - * Any previous packet given to the worker is assumed to have completed + * Any previous packets given to the worker are assumed to have completed * processing, and may be optionally returned to the distributor via * the oldpkt parameter. - * Unlike rte_distributor_get_pkt_burst(), this function does not wait for a - * new packet to be provided by the distributor. + * Unlike rte_distributor_get_pkt(), this function does not wait for + * new packets to be provided by the distributor. * - * NOTE: after calling this function, rte_distributor_poll_pkt_burst() should - * be used to poll for the packet requested. The rte_distributor_get_pkt_burst() - * API should *not* be used to try and retrieve the new packet. + * NOTE: after calling this function, rte_distributor_poll_pkt() should + * be used to poll for the packets requested. The rte_distributor_get_pkt() + * API should *not* be used to try and retrieve the new packets. * * @param d * The distributor instance to be used @@ -213,9 +213,9 @@ rte_distributor_request_pkt(struct rte_distributor *d, unsigned int count); /** - * API called by a worker to check for a new packet that was previously + * API called by a worker to check for new packets that were previously * requested by a call to rte_distributor_request_pkt(). It does not wait - * for the new packet to be available, but returns NULL if the request has + * for the new packets to be available, but returns if the request has * not yet been fulfilled by the distributor. * * @param d @@ -227,8 +227,9 @@ rte_distributor_request_pkt(struct rte_distributor *d, * The array of mbufs being given to the worker * * @return - * The number of packets being given to the worker thread, zero if no - * packet is yet available. + * The number of packets being given to the worker thread, + * -1 if no packets are yet available (burst API - RTE_DIST_ALG_BURST) + * 0 if no packets are yet available (legacy single API - RTE_DIST_ALG_SINGLE) */ int rte_distributor_poll_pkt(struct rte_distributor *d,