From patchwork Fri Sep 25 22:42:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78867 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 766B9A04C0; Sat, 26 Sep 2020 00:42:23 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 556BF1D59C; Sat, 26 Sep 2020 00:42:21 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 6AC621D5A8 for ; Sat, 26 Sep 2020 00:42:19 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200925224217euoutp0291f38179e3e99131179e74970fa20635~4KBTfykYa2280822808euoutp02F for ; Fri, 25 Sep 2020 22:42:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200925224217euoutp0291f38179e3e99131179e74970fa20635~4KBTfykYa2280822808euoutp02F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1601073737; bh=Aad7i1ZMUc3rAZvaKTVtYAaNPC1c1LFWoHAxNKuK8lU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vPyTTtTcn3tnoyW6mAlL/aGnxIyXBEhFQ1hfncXA+4i2mREUj6qasAeQWrDTI0vkx fof8Yf7ct6m4fqxppB/7Pd+nYnzxPqnWAFSlXdmKWiEY7Kac0gSdaH4yWgORdGyLVx TrWpw4qBCynNmPCqRpalWjTCJgG5IzVkK4oAMm7k= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200925224217eucas1p2f2a56e24fd5dd1c024342f628f7757f9~4KBTJadH41305613056eucas1p2P; Fri, 25 Sep 2020 22:42:17 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id EA.6B.06456.9427E6F5; Fri, 25 Sep 2020 23:42:17 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200925224216eucas1p1e8e1d0ecab4bbbf6e43b117c1d210649~4KBSwUReQ0081500815eucas1p1E; Fri, 25 Sep 2020 22:42:16 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200925224216eusmtrp24d0828818d05e69fedc53ba13e750225~4KBSvw-sH0483804838eusmtrp2H; Fri, 25 Sep 2020 22:42:16 +0000 (GMT) X-AuditID: cbfec7f2-809ff70000001938-fa-5f6e7249976f Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 3F.BE.06017.8427E6F5; Fri, 25 Sep 2020 23:42:16 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200925224216eusmtip27a6d7379b5758d9faf3510bbba148a81~4KBSPjpXN1081510815eusmtip2y; Fri, 25 Sep 2020 22:42:16 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 26 Sep 2020 00:42:02 +0200 Message-Id: <20200925224209.12173-2-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGIsWRmVeSWpSXmKPExsWy7djP87qeRXnxBqcv8lvcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8ba9fvZ C+ZLVWx5fYi1gbFJtIuRk0NCwETi17yrjF2MXBxCAisYJbZfOMMC4XxhlHi89zAbhPOZUeLM 9HmMMC3TNjcxgdhCAssZJRavM4QrmtW/gxkkwSZgK3Fk5ldWEFtEIEyiuXkv0FgODmYBZ4kn X9lATGEBL4lTTUIgFSwCqhIvVx4GG8kr4Coxc8NFJohV8hKrNxwAm8gp4Cbxbd9cZpBVEgLX 2ST2Ld/LBlHkInG69zaULSzx6vgWdghbRuL/zvlMEA3bGCWu/v7JCOHsZ5S43rsCqspa4vC/ 32wQx2lKrN+lDxF2lFhx4gvYzRICfBI33gqChJmBzEnbpjNDhHklOtqEIKr1JJ72TGWEWftn 7RMWCNtD4uYHiJuFBK4CbZ30lGUCo/wshGULGBlXMYqnlhbnpqcWG+allusVJ+YWl+al6yXn 525iBMb+6X/HP+1g/Hop6RCjAAejEg/viUe58UKsiWXFlbmHGCU4mJVEeJ3Ono4T4k1JrKxK LcqPLyrNSS0+xCjNwaIkzmu86GWskEB6YklqdmpqQWoRTJaJg1OqgXF/iMSFvEVV/82+Tqt3 m3bP3W3VJG9G7oSzx9dMDd/G35wlt5K9L4Ppz7RQti3N5U9V9i851Oqw66aGL+ejk8byl1g3 8X7Lln/IxlYvFmW2xnzxbv7zdxp9JstdY7m+1dmiNWhnSaWu7txzrb9vuM2tzfF727hZd4fQ yc7lEupXmpU2MCye9F2JpTgj0VCLuag4EQAUDkP0+QIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOLMWRmVeSWpSXmKPExsVy+t/xe7oeRXnxBs23DSxurLK36Jv0kcni 3aftTBbPetYxWvzr+MPuwOrxa8FSVo/Fe14yeRx8t4cpgDlKz6Yov7QkVSEjv7jEVina0MJI z9DSQs/IxFLP0Ng81srIVEnfziYlNSezLLVI3y5BL2Pt+v3sBfOlKra8PsTawNgk2sXIySEh YCIxbXMTUxcjF4eQwFJGiT2TPgA5HEAJGYkPlwQgaoQl/lzrYoOo+cgosWrDNxaQBJuArcSR mV9ZQepFBMIkTqz0BwkzC7hLbFk8lRkkLCzgJXGqSQgkzCKgKvFy5WEmEJtXwFVi5oaLTBDj 5SVWbzjADGJzCrhJfNs3lxliVSOjRM+bPtYJjHwLGBlWMYqklhbnpucWG+kVJ+YWl+al6yXn 525iBAbitmM/t+xg7HoXfIhRgINRiYdX4WluvBBrYllxZe4hRgkOZiURXqezp+OEeFMSK6tS i/Lji0pzUosPMZoCXTWRWUo0OR8YJXkl8YamhuYWlobmxubGZhZK4rwdAgdjhATSE0tSs1NT C1KLYPqYODilGhjnvI1lnbRHTcfVQFfzvvCBqn2OD5Kitpy3iLsTXcbU+6Ute94jtTdNimHW CV79Gu2x+Sums6UEL29mu1/c/VT+9yPr/q7Kl46u5n9PMHzo9Gk7+XD/zovXJ7zsvifd6/XN /Jfz8U7T7dLfNB/v5ZkgZ3tPRuF1ZbXf7d3+eXfWZ59VKNbcX6vEUpyRaKjFXFScCACjB2uO WgIAAA== X-CMS-MailID: 20200925224216eucas1p1e8e1d0ecab4bbbf6e43b117c1d210649 X-Msg-Generator: CA X-RootMTR: 20200925224216eucas1p1e8e1d0ecab4bbbf6e43b117c1d210649 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200925224216eucas1p1e8e1d0ecab4bbbf6e43b117c1d210649 References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v4 1/8] test/distributor: fix deadlock with freezed worker 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 Tested-by: David Hunt --- 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 Fri Sep 25 22:42:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78869 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 3DD41A04C0; Sat, 26 Sep 2020 00:43:06 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4571C1E9EE; Sat, 26 Sep 2020 00:42:26 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id D7EA31D16C for ; Sat, 26 Sep 2020 00:42:19 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200925224218euoutp01ce7f58d8ed25abf7caef11bf2eb0d612~4KBUalKSf2546525465euoutp01R for ; Fri, 25 Sep 2020 22:42:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200925224218euoutp01ce7f58d8ed25abf7caef11bf2eb0d612~4KBUalKSf2546525465euoutp01R DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1601073738; bh=F2MlnKN/Nod7IV1TW08UZJ2Os/OjS7XiqwUPYcL+iys=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GASBDG4ARJ8ECUNuenARGH35US1DEgzbINCIpBTKuv/jVlvdWwjKgmYbEj2OkAL42 BO0NO+RoF3TpcRFO1pYQKPjSoJYsgcXs+DJwjecJbBDZ+tqAH1wF6tIE5nx3s/MLaH 4k3aKkuVDg0/N4f7L8BSsDn0vdYOLRqrEYw3soNM= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200925224218eucas1p10706261cd46240a450963edad1c68448~4KBULKtQA3102531025eucas1p1p; Fri, 25 Sep 2020 22:42:18 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 44.DF.05997.A427E6F5; Fri, 25 Sep 2020 23:42:18 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200925224217eucas1p1bb5f73109b4aeed8f2badf311fa8dfb5~4KBTcyk2c2913529135eucas1p1p; Fri, 25 Sep 2020 22:42:17 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200925224217eusmtrp110da659902a56416eb7bae462229d3a7~4KBTcLuif1720917209eusmtrp18; Fri, 25 Sep 2020 22:42:17 +0000 (GMT) X-AuditID: cbfec7f4-65dff7000000176d-6e-5f6e724abaeb Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 0E.3C.06314.9427E6F5; Fri, 25 Sep 2020 23:42:17 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200925224216eusmtip29d97d79f3d886c65d0649b1cee6390bb~4KBS3gUV21081510815eusmtip2z; Fri, 25 Sep 2020 22:42:16 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 26 Sep 2020 00:42:03 +0200 Message-Id: <20200925224209.12173-3-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCIsWRmVeSWpSXmKPExsWy7djP87peRXnxBp+fiFjcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8b5aTfY C2bpVnTsecbcwHhSpYuRg0NCwERi+gL9LkYuDiGBFYwSs9uusUE4Xxglvl87xgLhfGaUOP18 IVMXIztYx6VwiPByRonXtxYj1HT0LwTq5uRgE7CVODLzKyuILSIQJtHcvJcFZBuzgLPEk69g JcIC7hJdM56zgNgsAqoSz2ZsYAexeQVcJa71/AKzJQTkJVZvOMAMYnMKuEl82zeXGWSXhMB1 NonTU/ewQRS5SDyYv4sRwhaWeHV8C1SzjMTpyT0sEA3bGCWu/v7JCOHsZ5S43rsCqspa4vC/ 32wQ12lKrN+lDxF2lDj05wUzJIj4JG68FQQJMwOZk7ZNhwrzSnS0CUFU60k87ZnKCLP2z9on LBAlHhKzmmIgwXOVUWJaSzfzBEb5WQi7FjAyrmIUTy0tzk1PLTbKSy3XK07MLS7NS9dLzs/d xAiM+9P/jn/ZwbjrT9IhRgEORiUeXoWnufFCrIllxZW5hxglOJiVRHidzp6OE+JNSaysSi3K jy8qzUktPsQozcGiJM5rvOhlrJBAemJJanZqakFqEUyWiYNTqoExI9zz0nnbS6KrjwV9Tghn 7Bc4lPJ8y0YPa0WTXVEcck5eKckzexlmvfqycdXuHp/W0K+Sbdc+uKs8WntZ/Po51cqFzLOd En3NP+SEB7G+czxf6vmpp/hfyq2vu9o6P4ecnHB7c91mVQ37fyeeFE/X5vK9fsapa3rCmpVu Dtd4Ngls3MxpYxSkxFKckWioxVxUnAgAzAyp9fcCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrCLMWRmVeSWpSXmKPExsVy+t/xe7qeRXnxBs/nylrcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsb5aTfYC2bpVnTsecbcwHhSpYuRnUNC wETiUngXIyeHkMBSRonbU7y7GDmAojISHy4JgIQlBIQl/lzrYoMo+cgocbXNBcRmE7CVODLz KytIuYhAmMSJlf4gYWYBd4kti6cyg9jCQHbXjOcsIDaLgKrEsxkb2EFsXgFXiWs9v9ghxstL rN5wAKyeU8BN4tu+uUA2F9CqRkaJnjd9rBMY+RYwMqxiFEktLc5Nzy021CtOzC0uzUvXS87P 3cQIDMFtx35u3sF4aWPwIUYBDkYlHt4Tj3LjhVgTy4orcw8xSnAwK4nwOp09HSfEm5JYWZVa lB9fVJqTWnyI0RToqonMUqLJ+cD4yCuJNzQ1NLewNDQ3Njc2s1AS5+0QOBgjJJCeWJKanZpa kFoE08fEwSnVwNhQ+ENn1y2/9K0sMjv8vm85xD3x1JG+8uWTuwoZ/V6b/W1mmCiWJ1oTMuPj sZSr/evuzJitc/AvR5qc/y2BHxrFjxK5bm2P+jrN1TE/4/4sgeO3nP0eNR01LvMvDXn3O8bq /do9j36w1zu5Xmp7vGXtq8j4lJmmLjsz5P7vFTDYdLmHKy/J7JQSS3FGoqEWc1FxIgDIg+b9 VwIAAA== X-CMS-MailID: 20200925224217eucas1p1bb5f73109b4aeed8f2badf311fa8dfb5 X-Msg-Generator: CA X-RootMTR: 20200925224217eucas1p1bb5f73109b4aeed8f2badf311fa8dfb5 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200925224217eucas1p1bb5f73109b4aeed8f2badf311fa8dfb5 References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v4 2/8] test/distributor: synchronize lcores statistics 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 Acked-by: David Hunt --- 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 Fri Sep 25 22:42:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78871 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 6B547A04C0; Sat, 26 Sep 2020 00:43:56 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6AAEB1EA2A; Sat, 26 Sep 2020 00:42:34 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 0DEF51D5BE for ; Sat, 26 Sep 2020 00:42:21 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200925224219euoutp0290c53b8586b60c8739fb82371385bb79~4KBVkxmkV1843518435euoutp02r for ; Fri, 25 Sep 2020 22:42:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200925224219euoutp0290c53b8586b60c8739fb82371385bb79~4KBVkxmkV1843518435euoutp02r DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1601073739; bh=3rOoWGfAKPTUxVaAwgPgE6cLJTHVpntRfJyEW7gWORE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZZABEmJBtbwDiIHXY/7x7MxsSarImVeqmt0e+nEWxdhsa8+y7grkjfsY3n+33O39L 88RicKGCBcOBqdB2NbPDOYv7xq3hIxLnHt/33juY/KlcLnNpWz2uWSkyLAXYviqEy3 NWJjIDnq7F3oX8Jrfk5onz4N0BvkqZVlhuWoOYfo= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200925224219eucas1p1ff93ab6b701bc342de304a595c47c809~4KBU6psSS2520225202eucas1p1i; Fri, 25 Sep 2020 22:42:19 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 4B.6B.06456.B427E6F5; Fri, 25 Sep 2020 23:42:19 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200925224218eucas1p2383ff0ebdaee18b581f5f731476f05ab~4KBUDpvhP2998529985eucas1p2W; Fri, 25 Sep 2020 22:42:18 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200925224218eusmtrp2cdbd58d0fe5fc4b3f201be1947ed6617~4KBUDLuAR0483804838eusmtrp2I; Fri, 25 Sep 2020 22:42:18 +0000 (GMT) X-AuditID: cbfec7f2-7efff70000001938-fd-5f6e724be8b6 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 9F.BE.06017.A427E6F5; Fri, 25 Sep 2020 23:42:18 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200925224217eusmtip2538dbfe93afbb7c900b0f87150ecaa15~4KBTfXotz1081510815eusmtip20; Fri, 25 Sep 2020 22:42:17 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 26 Sep 2020 00:42:04 +0200 Message-Id: <20200925224209.12173-4-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBIsWRmVeSWpSXmKPExsWy7djP87reRXnxBlMes1jcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8aRR8vY C46qVvTeX8/awLhRrouRk0NCwETi5qnZbF2MXBxCAisYJR7sOcwC4XxhlHj89hMjhPOZUaJ3 9xxmmJaFV45DtSxnlFj6tpUVrqrp3A2wKjYBW4kjM7+ygtgiAmESzc17geZycDALOEs8+coG EhYWcJN4f+o5mM0ioCpx/MoxFhCbV8BVonXZH0aIZfISqzccABvJCVT/bd9cZpBdEgKX2SRe 9fyGushFYt+ug+wQtrDEq+NboGwZif875zNBNGxjlLj6+ycjhLOfUeJ67wqoKmuJw/9+s0Fc pymxfpc+RNhR4vmhqUwgYQkBPokbbwVBwsxA5qRt05khwrwSHW1CENV6Ek97pjLCrP2z9gkL hO0hcWBGOzRIrzJKtH/4yTqBUX4WwrIFjIyrGMVTS4tz01OLDfNSy/WKE3OLS/PS9ZLzczcx AuP/9L/jn3Ywfr2UdIhRgINRiYf3xKPceCHWxLLiytxDjBIczEoivE5nT8cJ8aYkVlalFuXH F5XmpBYfYpTmYFES5zVe9DJWSCA9sSQ1OzW1ILUIJsvEwSnVwJgsZvN5oWDDfzajD63srjOr fU/n1qZcWO1SHZY9N1b9vrbPrSC5ej83+6aOLyucl33nvnfOvHu+s8qO83MCnq4J+Mfpuajj /fuf97Ze5T99YdF6m7xZp2uXrm76KfQnZ8Yt90kfJu3KWuEgkNltabW1fWlFo7HN3m3zsiw4 PWax8BvaGtin7VViKc5INNRiLipOBAA8Sa1B+wIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrBLMWRmVeSWpSXmKPExsVy+t/xe7peRXnxBp92cVncWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsaRR8vYC46qVvTeX8/awLhRrouRk0NC wERi4ZXjbF2MXBxCAksZJSb+3wTkcAAlZCQ+XBKAqBGW+HOtC6rmI6PEmkPrGEESbAK2Ekdm fmUFqRcRCJM4sdIfJMws4C6xZfFUZhBbWMBN4v2p52wgNouAqsTxK8dYQGxeAVeJ1mV/GCHm y0us3nAArJ4TqP7bvrnMELsaGSV63vSxTmDkW8DIsIpRJLW0ODc9t9hIrzgxt7g0L10vOT93 EyMwFLcd+7llB2PXu+BDjAIcjEo8vApPc+OFWBPLiitzDzFKcDArifA6nT0dJ8SbklhZlVqU H19UmpNafIjRFOiqicxSosn5wDjJK4k3NDU0t7A0NDc2NzazUBLn7RA4GCMkkJ5YkpqdmlqQ WgTTx8TBKdXAuPLNcaPevdl7gq5pXNn82zpV8HxqlnJumsOH7csDD5u2Kdq/9THJ9ur5/Fni zbJ3aS+63jWqPt2wJvrc1+PJP+d/f6V9xrBZPb3llFBsQvg/z6TH6w4ZfwqJLZqok8O0sl97 u86Px/lPdzE4Cy9KFuGI0fv0JruTNXdqscGmp2LKGj267pvZlViKMxINtZiLihMBaW9tEVsC AAA= X-CMS-MailID: 20200925224218eucas1p2383ff0ebdaee18b581f5f731476f05ab X-Msg-Generator: CA X-RootMTR: 20200925224218eucas1p2383ff0ebdaee18b581f5f731476f05ab X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200925224218eucas1p2383ff0ebdaee18b581f5f731476f05ab References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v4 3/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. Distribor tests were also updated passing NULL as oldpkt and 0 as number of returned packets, where packets are not returned. Fixes: 775003ad2f96 ("distributor: add new burst-capable library") Cc: david.hunt@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski --- app/test/test_distributor.c | 28 +++++++++--------------- lib/librte_distributor/rte_distributor.c | 4 ++-- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index 0e49e3714..0e3ab0c4f 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -65,13 +65,10 @@ handle_work(void *arg) struct rte_mbuf *buf[8] __rte_cache_aligned; struct worker_params *wp = arg; struct rte_distributor *db = wp->dist; - unsigned int count = 0, num = 0; + unsigned int count = 0, num; unsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED); - int i; - for (i = 0; i < 8; i++) - buf[i] = NULL; - num = rte_distributor_get_pkt(db, id, buf, buf, num); + num = rte_distributor_get_pkt(db, id, buf, NULL, 0); while (!quit) { __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); @@ -279,20 +276,17 @@ handle_work_with_free_mbufs(void *arg) struct rte_distributor *d = wp->dist; unsigned int count = 0; unsigned int i; - unsigned int num = 0; + unsigned int num; 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, NULL, 0); while (!quit) { 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); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); } count += num; __atomic_fetch_add(&worker_stats[id].handled_packets, num, @@ -351,7 +345,7 @@ handle_work_for_shutdown_test(void *arg) struct worker_params *wp = arg; struct rte_distributor *d = wp->dist; unsigned int count = 0; - unsigned int num = 0; + unsigned int num; unsigned int total = 0; unsigned int i; unsigned int returned = 0; @@ -359,7 +353,7 @@ handle_work_for_shutdown_test(void *arg) const unsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED); - num = rte_distributor_get_pkt(d, id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); zero_id = __atomic_load_n(&zero_idx, __ATOMIC_ACQUIRE); if (id == zero_id && num > 0) { @@ -376,8 +370,7 @@ handle_work_for_shutdown_test(void *arg) __ATOMIC_ACQ_REL); for (i = 0; i < num; i++) rte_pktmbuf_free(buf[i]); - num = rte_distributor_get_pkt(d, - id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); zero_id = __atomic_load_n(&zero_idx, __ATOMIC_ACQUIRE); if (id == zero_id && num > 0) { @@ -400,13 +393,12 @@ handle_work_for_shutdown_test(void *arg) while (zero_quit) usleep(100); - num = rte_distributor_get_pkt(d, - id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); while (!quit) { count += num; rte_pktmbuf_free(pkt); - num = rte_distributor_get_pkt(d, id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); } diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c index 1c047f065..8a12bf856 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 Fri Sep 25 22:42:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 78870 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 EDC14A04C0; Sat, 26 Sep 2020 00:43:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0BA0E1EA1D; Sat, 26 Sep 2020 00:42:33 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id EF58F1D16C for ; Sat, 26 Sep 2020 00:42:20 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200925224219euoutp01302e8a5039d0af055f5365fbd7ce9b1d~4KBVgIq-u2546525465euoutp01S for ; Fri, 25 Sep 2020 22:42:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200925224219euoutp01302e8a5039d0af055f5365fbd7ce9b1d~4KBVgIq-u2546525465euoutp01S DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1601073739; bh=M70jyjhJkQ52yq17tdbmgDGsBAiRhgmJKfBpY0H3dWg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VLadxRJgQS605JB1jDPS9enZwkeZXoTPvk/LHksgR+NdLqZOHq3hVWydRa0eSuGDC /4PlRkUatHMfM3yt6sgRXrACTCGcsOMoELcBgvIGeFRBFvOzUgRS0MdBmNhLZFgG1Y HgixJ/fyD01wXG5VjOLPhWm1E8+N7nR59NoZxwKA= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200925224219eucas1p1d9149d54caf3718e3c6243e2e9278615~4KBU85tTg0081500815eucas1p1F; Fri, 25 Sep 2020 22:42:19 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id DB.0A.06318.B427E6F5; Fri, 25 Sep 2020 23:42:19 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200925224218eucas1p221c1af87b0e4547547106503cd336afd~4KBUwL1DQ0960309603eucas1p2m; Fri, 25 Sep 2020 22:42:18 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200925224218eusmtrp1792567e3410dbb88bd93fc7367828350~4KBUvo-zw1720917209eusmtrp19; Fri, 25 Sep 2020 22:42:18 +0000 (GMT) X-AuditID: cbfec7f5-371ff700000018ae-07-5f6e724babd4 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 6E.3C.06314.A427E6F5; Fri, 25 Sep 2020 23:42:18 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200925224218eusmtip2d54d3de51e7ff484a48b5e82d5c33f6f~4KBUI-rL41081510815eusmtip21; Fri, 25 Sep 2020 22:42:18 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 26 Sep 2020 00:42:05 +0200 Message-Id: <20200925224209.12173-5-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrMIsWRmVeSWpSXmKPExsWy7djP87reRXnxBo/3clvcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8a8hdsZ C1aoVjycdJOxgbFVrouRk0NCwERi+ZnF7F2MXBxCAisYJeY3XWODcL4wSrTf+s0GUiUk8JlR 4t3Hgi5GDrCOux85IWqWM0qc2nqYCcIBqnnx7hYjSAObgK3EkZlfWUFsEYEwiebmvSwgzcwC zhJPvrKBmMIC1hJrziWDVLAIqEo8e7KXCcTmFXCV+LhpJTPEcfISqzccALM5Bdwkvu2bywyy SkLgOpvEpdnfmCCKXCTetG5ngbCFJV4d38IOYctInJ7cwwLRsI1R4urvn4wQzn5Gieu9K6Cq rCUO//vNBnGcpsT6XfoQYUeJ09dfMEI8zCdx460gSJgZyJy0bTozRJhXoqNNCKJaT+Jpz1RG mLV/1j5hgSjxkNi7MwgSgleBQdUeMYFRfhbCqgWMjKsYxVNLi3PTU4uN81LL9YoTc4tL89L1 kvNzNzECo/70v+NfdzDu+5N0iFGAg1GJh/fEo9x4IdbEsuLK3EOMEhzMSiK8TmdPxwnxpiRW VqUW5ccXleakFh9ilOZgURLnNV70MlZIID2xJDU7NbUgtQgmy8TBKdXA2NKQaOc+penFnKTp 8m+vGzHxa/AEnpvoU+c5M95Sfh9Tz9Qzuoury+dyyBZ5mjJnSQg+70ue6rX3HGtY37ONcrJC /Qnri1effHfYpmVG3vkg8bfLSjcdWNybPCVh1/5TOaLWk0ICltWLPNkmcU1oMvclo6BLP2c4 a7677J0jctm89lmYmu5bJZbijERDLeai4kQANiv15vYCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsVy+t/xe7peRXnxBlvXm1vcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsa8hdsZC1aoVjycdJOxgbFVrouRg0NC wETi7kfOLkYuDiGBpYwS92ZcYIeIy0h8uCTQxcgJZApL/LnWxQZR85FR4vjsG0wgCTYBW4kj M7+ygtSLCIRJnFjpDxJmFnCX2LJ4KjNIWFjAWmLNuWSQMIuAqsSzJ3vBOnkFXCU+blrJDDFe XmL1hgNgNqeAm8S3fXOZIVY1Mkr0vOljncDIt4CRYRWjSGppcW56brGhXnFibnFpXrpecn7u JkZgGG479nPzDsZLG4MPMQpwMCrx8J54lBsvxJpYVlyZe4hRgoNZSYTX6ezpOCHelMTKqtSi /Pii0pzU4kOMpkBXTWSWEk3OB8ZIXkm8oamhuYWlobmxubGZhZI4b4fAwRghgfTEktTs1NSC 1CKYPiYOTqkGRie5jE+dm1/N1/Savtn0TdKJpq2GJyd9l3Svzv3OMPNr1bzcvf1Xq3/uecGq e/6dWOq93YZaLNyVKVsMZjx6+2D6vtZZ4rVrJxeuntmy4VvBiop11vPFjsfNX/6p/L217LbC 1U2MDfl31dY8yP/4qlM3443apqoFof+etXQ8Xv3u+9LaTdqT2NYrsRRnJBpqMRcVJwIApmjX eVkCAAA= X-CMS-MailID: 20200925224218eucas1p221c1af87b0e4547547106503cd336afd X-Msg-Generator: CA X-RootMTR: 20200925224218eucas1p221c1af87b0e4547547106503cd336afd X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200925224218eucas1p221c1af87b0e4547547106503cd336afd References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v4 4/8] test/distributor: fix freeing mbufs 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 Acked-by: David Hunt --- app/test/test_distributor.c | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index 0e3ab0c4f..b302ed118 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -65,20 +65,18 @@ handle_work(void *arg) struct rte_mbuf *buf[8] __rte_cache_aligned; struct worker_params *wp = arg; struct rte_distributor *db = wp->dist; - unsigned int count = 0, num; + unsigned int num; unsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED); num = rte_distributor_get_pkt(db, id, buf, NULL, 0); while (!quit) { __atomic_fetch_add(&worker_stats[id].handled_packets, num, __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_ACQ_REL); - count += num; rte_distributor_return_pkt(db, id, buf, num); return 0; } @@ -274,21 +272,18 @@ 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; unsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED); num = rte_distributor_get_pkt(d, id, buf, NULL, 0); while (!quit) { - 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, NULL, 0); } - count += num; __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); rte_distributor_return_pkt(d, id, buf, num); @@ -316,7 +311,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); @@ -340,15 +334,11 @@ 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; - 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); @@ -365,7 +355,6 @@ 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++) @@ -378,12 +367,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) { @@ -393,19 +377,19 @@ handle_work_for_shutdown_test(void *arg) while (zero_quit) usleep(100); + for (i = 0; i < num; i++) + rte_pktmbuf_free(buf[i]); num = rte_distributor_get_pkt(d, id, buf, NULL, 0); while (!quit) { - count += num; - rte_pktmbuf_free(pkt); - num = rte_distributor_get_pkt(d, id, buf, NULL, 0); __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, NULL, 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 Fri Sep 25 22:42: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: 78872 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 F00B0A04C0; Sat, 26 Sep 2020 00:44:14 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0DA8B1EA3E; Sat, 26 Sep 2020 00:42:36 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 2CB5F1E9CE for ; Sat, 26 Sep 2020 00:42:23 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200925224221euoutp014ea849f36203f9d9b3737fa7f111f99a~4KBXa1VN02546525465euoutp01T for ; Fri, 25 Sep 2020 22:42:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200925224221euoutp014ea849f36203f9d9b3737fa7f111f99a~4KBXa1VN02546525465euoutp01T DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1601073741; bh=W+moa7N6OskcVqduFNcP3L2X5TqmR+C7P43t5m7MolA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XuZQiNsgpkZXuiY3yBi26hjYXQNmDfiXBIvJ+hKO8ft+CYGYpNK4tSVwqdgnfAoHK 3e+PLHtxgSFOC9YwglSt7c931/if3BJ1/U2/OKLllHcZ9xmY5QcofVoir9npPZd71h 1nlIqntNEQ1m8mh0G5bu+0ofPhTiirxrVyHw7Ddc= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200925224220eucas1p2b86352cbedeeea2ef86d687d17c5d296~4KBWaPmBd0959909599eucas1p2g; Fri, 25 Sep 2020 22:42:20 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id A4.DF.05997.C427E6F5; Fri, 25 Sep 2020 23:42:20 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200925224219eucas1p2d61447fef421573d653d2376423ecce0~4KBVdIkqA3162731627eucas1p26; Fri, 25 Sep 2020 22:42:19 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200925224219eusmtrp2c62fe6ad4301c07051545731a6e8075c~4KBVcpTYt0483804838eusmtrp2J; Fri, 25 Sep 2020 22:42:19 +0000 (GMT) X-AuditID: cbfec7f4-677ff7000000176d-71-5f6e724c0adb Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id FF.BE.06017.B427E6F5; Fri, 25 Sep 2020 23:42:19 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200925224219eusmtip2b433658cfe82b908ac931241e242a765~4KBU3E3SL1081510815eusmtip22; Fri, 25 Sep 2020 22:42:19 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 26 Sep 2020 00:42:06 +0200 Message-Id: <20200925224209.12173-6-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGIsWRmVeSWpSXmKPExsWy7djPc7o+RXnxBrNfalvcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8bh+xdY Ci5zVqy4/JCtgXESRxcjJ4eEgInEh8Ov2boYuTiEBFYwSpzds5AdwvnCKHFn8womCOczo8Ta /nXMXYwcYC2PJlpDxJczSszbNxeh6MLjeawgc9kEbCWOzPwKZosIhEk0N+9lAWlmFnCWePKV DSQsLGAnMX3dBLASFgFVietz2plASngFXCXOTDeHuE5eYvWGA8wgNqeAm8S3fXOZQVZJCFxm k/j8toURoshF4uO2pcwQtrDEq+Nb2CFsGYn/O+czQTRsY5S4+vsnI4Szn1Hieu8KqCpricP/ frNBHKcpsX6XPkTYUeL+yi9QD/NJ3HgrCBJmBjInbZsOFeaV6GgTgqjWk3jaM5URZu2ftU9Y IGwPiT+XF0ED9CqjRNvjPewTGOVnISxbwMi4ilE8tbQ4Nz212CgvtVyvODG3uDQvXS85P3cT IzD2T/87/mUH464/SYcYBTgYlXh4FZ7mxguxJpYVV+YeYpTgYFYS4XU6ezpOiDclsbIqtSg/ vqg0J7X4EKM0B4uSOK/xopexQgLpiSWp2ampBalFMFkmDk6pBsZi5R2MPUf9BPOVyq/fuPhs utkVtdbzv95erDzBMlPPQ0Xt/7KJDbN/q+tuOfj2RbO7v2z+vSpJhfNGh0SFSqezlJe938y1 wcKGL1iR98hJ1tfGuqp1STK1316Va0zX3piv/FpxmmS55gR5103+237NjdTvnHk7Q+Rdmsb1 SVPOPb+7oX9nY50SS3FGoqEWc1FxIgCG3+Nx+QIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsVy+t/xe7reRXnxBm8XaVvcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsbh+xdYCi5zVqy4/JCtgXESRxcjB4eE gInEo4nWXYxcHEICSxkllk36wAoRl5H4cEmgi5ETyBSW+HOtiw2i5iOjRGf7QXaQBJuArcSR mV/B6kUEwiROrPQHCTMLuEtsWTyVGcQWFrCTmL5uAiuIzSKgKnF9TjsTSDmvgKvEmenmEOPl JVZvOABWzingJvFt31xmiFWNjBI9b/pYJzDyLWBkWMUoklpanJueW2ykV5yYW1yal66XnJ+7 iREYhtuO/dyyg7HrXfAhRgEORiUeXoWnufFCrIllxZW5hxglOJiVRHidzp6OE+JNSaysSi3K jy8qzUktPsRoCnTURGYp0eR8YIzklcQbmhqaW1gamhubG5tZKInzdggcjBESSE8sSc1OTS1I LYLpY+LglGpgLFfNCM8O+urSMC/UefID940rrW8dfXa96+mlo1wzDnKrWr3YoJN0aX7Z56ct bZUX28SK0w6rVB3LN1e7XrV/77+T6tL/A5a9/5Q3g3XrRIX4+6W/2aczLuTe5flU6ZzMKnlH j+35EvkVvP8b/J491b8z+yV7t+GtGNama+862Uw6ClUu9s/9p8RSnJFoqMVcVJwIACvZUihZ AgAA X-CMS-MailID: 20200925224219eucas1p2d61447fef421573d653d2376423ecce0 X-Msg-Generator: CA X-RootMTR: 20200925224219eucas1p2d61447fef421573d653d2376423ecce0 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200925224219eucas1p2d61447fef421573d653d2376423ecce0 References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v4 5/8] test/distributor: collect return mbufs 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 Acked-by: David Hunt --- 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 b302ed118..1fbdf6fd1 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -590,6 +590,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 Fri Sep 25 22:42: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: 78873 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 9C3A0A04AF; Sat, 26 Sep 2020 00:44:33 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BE71F1EA52; Sat, 26 Sep 2020 00:42:37 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 4F60A1E9D0 for ; Sat, 26 Sep 2020 00:42:23 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200925224221euoutp01b688fd9daa8118a99d7c234cd7ea7a95~4KBXgqx8P1136111361euoutp01P for ; Fri, 25 Sep 2020 22:42:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200925224221euoutp01b688fd9daa8118a99d7c234cd7ea7a95~4KBXgqx8P1136111361euoutp01P DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1601073741; bh=IT34NvI0qjZfN3aPvUwJ3M46g2VUjNeBE+s1ltqL+k0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sCIRRey9/GNpe6CPm/VXDODTl7ZRtoI5NtflAJrWtoC7Lh1yDxDmHeFPNvwbMc5Ck M/nYwH15ZSg8F69MutlIwrG3n3BGzYXqoL4nhFscwC60+/PL4b0053cR3YMpZFzndS S6YKIc+8+dqc7UGV4M36xrYEUnzFd95vK5c2/C8s= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200925224221eucas1p1e1273097e8b022f7cc42fff288efafb7~4KBXDxudl2913529135eucas1p1r; Fri, 25 Sep 2020 22:42:21 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id AB.6B.06456.D427E6F5; Fri, 25 Sep 2020 23:42:21 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200925224220eucas1p1a44e99a1d7750d37d5aefa61f329209b~4KBWPlaxZ2520225202eucas1p1k; Fri, 25 Sep 2020 22:42:20 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200925224220eusmtrp1734e2776cd89a7d7a2ca510edbe34119~4KBWPAuqv1720917209eusmtrp1_; Fri, 25 Sep 2020 22:42:20 +0000 (GMT) X-AuditID: cbfec7f2-7efff70000001938-01-5f6e724df185 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id CE.3C.06314.C427E6F5; Fri, 25 Sep 2020 23:42:20 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200925224219eusmtip2df9d51e9c6d8d4ad8ea7c8115a6ae764~4KBVoIEva1081510815eusmtip23; Fri, 25 Sep 2020 22:42:19 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 26 Sep 2020 00:42:07 +0200 Message-Id: <20200925224209.12173-7-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djPc7q+RXnxBsubpS1urLK36Jv0kcni 3aftTBbPetYxWvzr+MPuwOrxa8FSVo/Fe14yeRx8t4cpgDmKyyYlNSezLLVI3y6BK2Pl+pfM BadFK152/GRuYFwv1MXIySEhYCKx+twcti5GLg4hgRWMEq+/LGAGSQgJfGGUeHxRHiLxmVHi 3NNVjDAdW7r7mCASyxkl9t2fxQRX9X/vBxaQKjYBW4kjM7+ygtgiAmESzc17geIcHMwCzhJP vrKBhIUFvCR+rjzODmKzCKhK/H11mQnE5hVwldh4bDELxDJ5idUbDoBdxCngJvFt31xmkF0S AtfZJI7fWsIOUeQicbb7PBOELSzx6vgWqLiMxOnJPSwQDdsYJa7+/skI4exnlLjeuwKqylri 8L/fbBDXaUqs36UPEXaUWLJzHxNIWEKAT+LGW0GQMDOQOWnbdGaIMK9ERxs0GPUknvZMZYRZ +2ftE6j7PSSa9rexQMLnKqPE6endLBMY5WchLFvAyLiKUTy1tDg3PbXYMC+1XK84Mbe4NC9d Lzk/dxMjMPpP/zv+aQfj10tJhxgFOBiVeHhPPMqNF2JNLCuuzD3EKMHBrCTC63T2dJwQb0pi ZVVqUX58UWlOavEhRmkOFiVxXuNFL2OFBNITS1KzU1MLUotgskwcnFINjJM7efaui8xVkPc8 esa53D1thadDcuWGj4EONrX8npKZS+9vncTyxW9/44O0lk3XC18f6TzOuf/8/diAMwzT+dY0 8ZX+iFhkFzaR2etf9YMArwmfN6XdyJQ/prC4a+P92uWZT6cvP/+A/4TSpk+zZl6oZEt/6Ov5 f/ni29MNNN56RqziUd+WLqrEUpyRaKjFXFScCAAqqzx6+gIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrBLMWRmVeSWpSXmKPExsVy+t/xe7o+RXnxBv2H5SxurLK36Jv0kcni 3aftTBbPetYxWvzr+MPuwOrxa8FSVo/Fe14yeRx8t4cpgDlKz6Yov7QkVSEjv7jEVina0MJI z9DSQs/IxFLP0Ng81srIVEnfziYlNSezLLVI3y5BL2Pl+pfMBadFK152/GRuYFwv1MXIySEh YCKxpbuPqYuRi0NIYCmjRPPjl0AOB1BCRuLDJQGIGmGJP9e62CBqPjJKPH30gQ0kwSZgK3Fk 5ldWkHoRgTCJEyv9QcLMAu4SWxZPZQaxhQW8JH6uPM4OYrMIqEr8fXWZCcTmFXCV2HhsMQvE fHmJ1RsOgNVzCrhJfNs3lxliVyOjRM+bPtYJjHwLGBlWMYqklhbnpucWG+oVJ+YWl+al6yXn 525iBIbitmM/N+9gvLQx+BCjAAejEg/viUe58UKsiWXFlbmHGCU4mJVEeJ3Ono4T4k1JrKxK LcqPLyrNSS0+xGgKdNVEZinR5HxgnOSVxBuaGppbWBqaG5sbm1koifN2CByMERJITyxJzU5N LUgtgulj4uCUamCUCnzwb+nEm+fjBHNO8EY9S5H98XI5Q9d2D3HJSK+0uSz5BrYLta5v8GJ5 7+IXMaH5AneqjEbdo2i5qPpn7h87Vy9MOaf8QXun9N16i+fX3eY8sjFefc3stGDuUtbSsrPf alwfxje98pn0Q1TPLqC2r1QtrfXuvoJsV9O586cv23epJuQpL78SS3FGoqEWc1FxIgCAzv99 WwIAAA== X-CMS-MailID: 20200925224220eucas1p1a44e99a1d7750d37d5aefa61f329209b X-Msg-Generator: CA X-RootMTR: 20200925224220eucas1p1a44e99a1d7750d37d5aefa61f329209b X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200925224220eucas1p1a44e99a1d7750d37d5aefa61f329209b References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v4 6/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 Acked-by: David Hunt --- 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 8a12bf856..dd68bc233 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 Fri Sep 25 22:42: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: 78875 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 5C311A04C0; Sat, 26 Sep 2020 00:45:05 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 000E71EA6A; Sat, 26 Sep 2020 00:42:40 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 6548B1E9E2 for ; Sat, 26 Sep 2020 00:42:24 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200925224223euoutp0271f11ffe66e2e5b0b26786cc08a405d5~4KBYrpZqD2413424134euoutp02D for ; Fri, 25 Sep 2020 22:42:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200925224223euoutp0271f11ffe66e2e5b0b26786cc08a405d5~4KBYrpZqD2413424134euoutp02D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1601073743; bh=WftdC1B2COg7s1H3DcFSiIacdUfLA95Zumy6JUm6xdg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QT8/CKcT8Iys6vy/5o17gC4PwztzM3At0eGaIihXFBGCbA5vlpXOSJ50d8jRlQreH aGPlUmpp/tLaBE8eYMQlECGmUf53VN2+TnJiTZpXx+tJUw4UjQQ4HhUzbC8RoYal9k eF7Rc1dYNEgB26SsxF0AsG8MHFz285MSc8KOcbAg= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200925224222eucas1p221dd45d7dec27ea1e1d3d92053605a3d~4KBXkF1Et0960309603eucas1p2n; Fri, 25 Sep 2020 22:42:22 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 3C.0A.06318.D427E6F5; Fri, 25 Sep 2020 23:42:21 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200925224221eucas1p151297834da32a0f7cfdffc120f57ab3a~4KBW8kU3o3102531025eucas1p1r; Fri, 25 Sep 2020 22:42:21 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200925224221eusmtrp26ee72b0b166c473ac6890e34c939b05c~4KBW8DSN20483804838eusmtrp2K; Fri, 25 Sep 2020 22:42:21 +0000 (GMT) X-AuditID: cbfec7f5-38bff700000018ae-0a-5f6e724de0ec Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 50.CE.06017.D427E6F5; Fri, 25 Sep 2020 23:42:21 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200925224220eusmtip24f028850ff32077c750f8a7a8066f659~4KBWVvVG-1081510815eusmtip24; Fri, 25 Sep 2020 22:42:20 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 26 Sep 2020 00:42:08 +0200 Message-Id: <20200925224209.12173-8-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djP87q+RXnxBhMvmlncWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8aBPz2M BfsFKybNPcbewLiXr4uRk0NCwETi+7TbjF2MXBxCAisYJc7t6GaCcL4wSnQtv8YK4XxmlJj0 A6SMA6zlxq08iPhyRomOpcsZ4Yp+NE9mA5nLJmArcWTmV1YQW0QgTKK5eS8LSDOzgLPEk69g JcIC1hL/D3wGK2ERUJXYOqcfzOYVcJU492otM8R58hKrNxwAszkF3CS+7ZvLDLJLQuAym8S2 xjfsEEUuEl3Nh6BsYYlXx7dA2TIS/3fOZ4Jo2MYocfX3T0YIZz+jxPXeFVBV1hKH//1mg7hO U2L9Ln2IsKPErqVPWCA+5pO48VYQJMwMZE7aNp0ZIswr0dEmBFGtJ/G0ZyojzNo/a0E6QWwP iXfr1rNAwucqo8Tls+vYJzDKz0JYtoCRcRWjeGppcW56arFxXmq5XnFibnFpXrpecn7uJkZg 9J/+d/zrDsZ9f5IOMQpwMCrx8J54lBsvxJpYVlyZe4hRgoNZSYTX6ezpOCHelMTKqtSi/Pii 0pzU4kOM0hwsSuK8xotexgoJpCeWpGanphakFsFkmTg4pRoYVZ4uCfi/NLXhp89OXz/n9kc9 BQ80PwcZTxK801yVtHj1Oh7ZRSm3JQr4ItODHj7tqz6bsjrJ+6elZ2fibRb+jc+vmPybzpNj vd48fcuuDQrTxTjnsyrtlZpuW3P7xnKHX53dBxTC1gX77rxpcu7J45OO4YfeTz1crcIv/3NN 63QR/0wdS+OdSizFGYmGWsxFxYkA4rZH6foCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOLMWRmVeSWpSXmKPExsVy+t/xe7q+RXnxBrdf8VvcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsaBPz2MBfsFKybNPcbewLiXr4uRg0NC wETixq28LkYuDiGBpYwSZ2buZ4aIy0h8uCTQxcgJZApL/LnWxQZR85FR4kLrUnaQBJuArcSR mV9ZQepFBMIkTqz0BwkzC7hLbFk8lRnEFhawlvh/4DMriM0ioCqxdU4/mM0r4Cpx7tVaZoj5 8hKrNxwAszkF3CS+7ZvLDLGrkVGi500f6wRGvgWMDKsYRVJLi3PTc4uN9IoTc4tL89L1kvNz NzECA3HbsZ9bdjB2vQs+xCjAwajEw6vwNDdeiDWxrLgy9xCjBAezkgiv09nTcUK8KYmVValF +fFFpTmpxYcYTYGumsgsJZqcD4ySvJJ4Q1NDcwtLQ3Njc2MzCyVx3g6BgzFCAumJJanZqakF qUUwfUwcnFINjAVTlgYetPfWcT3f2eIc8uCD3bZTBeb74zJ7JlqFnNb6v4U3u+uLgZLspQPm ict7vQzscxiMti1JYa0733ji6I82S5mnCbF/yvg1zPQE63dKfq+/Vl1aOcVX4MBkoxfiD7z5 z71XYRI+3/Vap6xQN1V+dv6uNnvXgvKE5QzOz4Oa/3rJzklUYinOSDTUYi4qTgQAO5JsG1oC AAA= X-CMS-MailID: 20200925224221eucas1p151297834da32a0f7cfdffc120f57ab3a X-Msg-Generator: CA X-RootMTR: 20200925224221eucas1p151297834da32a0f7cfdffc120f57ab3a X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200925224221eucas1p151297834da32a0f7cfdffc120f57ab3a References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v4 7/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 Acked-by: David Hunt --- 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 dd68bc233..b720abe03 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 Fri Sep 25 22:42: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: 78874 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 33102A04C0; Sat, 26 Sep 2020 00:44:50 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 687F21EA62; Sat, 26 Sep 2020 00:42:39 +0200 (CEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 7B4161E9EA for ; Sat, 26 Sep 2020 00:42:24 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200925224224euoutp01b2182901bb3466b644e78660c0538800~4KBZvKpi21136111361euoutp01Q for ; Fri, 25 Sep 2020 22:42:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200925224224euoutp01b2182901bb3466b644e78660c0538800~4KBZvKpi21136111361euoutp01Q DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1601073744; bh=dU7rWktTPIfjQZ7fCAIykFYYMgwWcdJlLIM6bxgVZkM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fPYwsLZXhvuFvCa2aaOn9v1+Jz/T7b9wgXhQ6q6O7aCErVkGtBCkDm0EFfNO3Z+BG 2I9kWfi3HPYWer8TBkv1f25GmU2VFiBuP1t/UCHKU5m4o1Csbj/JHwduc2UcRCthTM l52OtNpYzbr5SBdSKM4gQPzbqLnM9wKl6/j7yEW8= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200925224223eucas1p1f793de5f97c20e5f499cf9f08bab9f3e~4KBYvPITq3102531025eucas1p1s; Fri, 25 Sep 2020 22:42:23 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 05.DF.05997.F427E6F5; Fri, 25 Sep 2020 23:42:23 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200925224222eucas1p1b10891c21bfef6784777526af4443dde~4KBXpCqA10081500815eucas1p1H; Fri, 25 Sep 2020 22:42:22 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200925224222eusmtrp1b240f1c66b69193a29891ce2cfcd93cb~4KBXod2A01720917209eusmtrp1-; Fri, 25 Sep 2020 22:42:22 +0000 (GMT) X-AuditID: cbfec7f4-677ff7000000176d-75-5f6e724f68d9 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 2F.3C.06314.D427E6F5; Fri, 25 Sep 2020 23:42:22 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200925224221eusmtip2ffdc7618af8634266d81621bd80484d8~4KBXEA1wY1081510815eusmtip25; Fri, 25 Sep 2020 22:42:21 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 26 Sep 2020 00:42:09 +0200 Message-Id: <20200925224209.12173-9-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djPc7r+RXnxBjdm8FvcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8bFY79Z Cw5LVbz5dZ6pgXGbaBcjJ4eEgInEguMfmbsYuTiEBFYwShx98ZQNwvnCKPH49SQo5zOjxMMl f1lgWh60vGaBSCxnlFj8u4kZrmr9oZlsIFVsArYSR2Z+ZQWxRQTCJJqb9wJ1cHAwCzhLPPkK ViIs4Cbx7d0DRhCbRUBVYvnJV2DlvAKuEjM2nGSGWCYvsXrDATCbE6R+31yo+HU2iT9fQiBs F4mZC6+wQtjCEq+Ob2GHsGUkTk/uATtUQmAbo8TV3z8ZIZz9jBLXe1dAVVlLHP73mw3iOE2J 9bv0IcKOEgtv3mEFCUsI8EnceCsIEmYGMidtm84MEeaV6GgTgqjWk3jaM5URZu2ftU+gYeUh 8XPxEmhYXWWUWLN3BcsERvlZCMsWMDKuYhRPLS3OTU8tNspLLdcrTswtLs1L10vOz93ECIz+ 0/+Of9nBuOtP0iFGAQ5GJR5ehae58UKsiWXFlbmHGCU4mJVEeJ3Ono4T4k1JrKxKLcqPLyrN SS0+xCjNwaIkzmu86GWskEB6YklqdmpqQWoRTJaJg1OqgbG6f6WksNDUfoNtfIoljh8PsM0/ NTHD/bRtxLd+F0Ufa9m3Bcw98t8qxSxeRvyQCTY8puCwKZVBW8u+UU6ujDs9O2TJAp3InyvL f5XYa/ovmnBFJsZA2z0+IeZ15c0mEfui+wr6Ce2zHCNWX31SzWR1UDvHxT6mPzGGQW/fgw+W VRyeu+qUWIozEg21mIuKEwGe/oy1+gIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrBLMWRmVeSWpSXmKPExsVy+t/xe7p+RXnxBi1TGS1urLK36Jv0kcni 3aftTBbPetYxWvzr+MPuwOrxa8FSVo/Fe14yeRx8t4cpgDlKz6Yov7QkVSEjv7jEVina0MJI z9DSQs/IxFLP0Ng81srIVEnfziYlNSezLLVI3y5BL+Pisd+sBYelKt78Os/UwLhNtIuRk0NC wETiQctrli5GLg4hgaWMEq8+bWLuYuQASshIfLgkAFEjLPHnWhcbRM1HRokrDe/ZQRJsArYS R2Z+ZQWpFxEIkzix0h8kzCzgLrFl8VRmEFtYwE3i27sHjCA2i4CqxPKTr1hBbF4BV4kZG04y Q8yXl1i94QCYzQlSv28uM8SuRkaJnjd9rBMY+RYwMqxiFEktLc5Nzy021CtOzC0uzUvXS87P 3cQIDMVtx35u3sF4aWPwIUYBDkYlHt4Tj3LjhVgTy4orcw8xSnAwK4nwOp09HSfEm5JYWZVa lB9fVJqTWnyI0RToqonMUqLJ+cA4ySuJNzQ1NLewNDQ3Njc2s1AS5+0QOBgjJJCeWJKanZpa kFoE08fEwSnVwJh7bGfT5GbfTeYzHCT0uq59Plt21mvRzGUsNTftN+87LCHC01Re5l3iLL2u aDqf7CuF7LjUzXF8WquPJvlu4nkZ+euQ6ny+IkOD119TJkUFX4i4tzlKV2hWwMSO/RMtJ7jP n5B3Rbul1yzcUJv1l7x7rXmn2Wkmhy17Tmnlrt2685D6soeT9iixFGckGmoxFxUnAgBNcPRw WwIAAA== X-CMS-MailID: 20200925224222eucas1p1b10891c21bfef6784777526af4443dde X-Msg-Generator: CA X-RootMTR: 20200925224222eucas1p1b10891c21bfef6784777526af4443dde X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200925224222eucas1p1b10891c21bfef6784777526af4443dde References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v4 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,