get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/81172/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 81172,
    "url": "http://patches.dpdk.org/api/patches/81172/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20201017030701.16134-8-l.wojciechow@partner.samsung.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20201017030701.16134-8-l.wojciechow@partner.samsung.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201017030701.16134-8-l.wojciechow@partner.samsung.com",
    "date": "2020-10-17T03:06:51",
    "name": "[v8,07/17] test/distributor: fix freeing mbufs",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "b579973863622db2131cfc65c5a61a8c8a76aa4f",
    "submitter": {
        "id": 1628,
        "url": "http://patches.dpdk.org/api/people/1628/?format=api",
        "name": "Lukasz Wojciechowski",
        "email": "l.wojciechow@partner.samsung.com"
    },
    "delegate": {
        "id": 24651,
        "url": "http://patches.dpdk.org/api/users/24651/?format=api",
        "username": "dmarchand",
        "first_name": "David",
        "last_name": "Marchand",
        "email": "david.marchand@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20201017030701.16134-8-l.wojciechow@partner.samsung.com/mbox/",
    "series": [
        {
            "id": 13072,
            "url": "http://patches.dpdk.org/api/series/13072/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=13072",
            "date": "2020-10-17T03:06:44",
            "name": "fix distributor synchronization issues",
            "version": 8,
            "mbox": "http://patches.dpdk.org/series/13072/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/81172/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/81172/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id EFE7AA04DB;\n\tSat, 17 Oct 2020 05:10:41 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 8805BE2E4;\n\tSat, 17 Oct 2020 05:08:07 +0200 (CEST)",
            "from mailout1.w1.samsung.com (mailout1.w1.samsung.com\n [210.118.77.11]) by dpdk.org (Postfix) with ESMTP id 9755AE2A8\n for <dev@dpdk.org>; Sat, 17 Oct 2020 05:07:39 +0200 (CEST)",
            "from eucas1p1.samsung.com (unknown [182.198.249.206])\n by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id\n 20201017030722euoutp0151c9003e044a93626cdf65bab89dfd72~_qLvkNkSQ0903009030euoutp01w\n for <dev@dpdk.org>; Sat, 17 Oct 2020 03:07:22 +0000 (GMT)",
            "from eusmges2new.samsung.com (unknown [203.254.199.244]) by\n eucas1p2.samsung.com (KnoxPortal) with ESMTP id\n 20201017030716eucas1p2f06e78f9a35e054842b1ad194bc548bd~_qLpzOsjq1521315213eucas1p2Z;\n Sat, 17 Oct 2020 03:07:16 +0000 (GMT)",
            "from eucas1p1.samsung.com ( [182.198.249.206]) by\n eusmges2new.samsung.com (EUCPMTA) with SMTP id D2.42.05997.4EF5A8F5; Sat, 17\n Oct 2020 04:07:16 +0100 (BST)",
            "from eusmtrp2.samsung.com (unknown [182.198.249.139]) by\n eucas1p2.samsung.com (KnoxPortal) with ESMTPA id\n 20201017030715eucas1p2366d1f0ce16a219b21542bb26e4588a6~_qLpCbwAZ1097310973eucas1p24;\n Sat, 17 Oct 2020 03:07:15 +0000 (GMT)",
            "from eusmgms1.samsung.com (unknown [182.198.249.179]) by\n eusmtrp2.samsung.com (KnoxPortal) with ESMTP id\n 20201017030715eusmtrp25e6ba6d9f2f9fe785a3912ec8f5d7510~_qLpB3h9g2813028130eusmtrp2M;\n Sat, 17 Oct 2020 03:07:15 +0000 (GMT)",
            "from eusmtip1.samsung.com ( [203.254.199.221]) by\n eusmgms1.samsung.com (EUCPMTA) with SMTP id 2B.99.06314.3EF5A8F5; Sat, 17\n Oct 2020 04:07:15 +0100 (BST)",
            "from localhost.localdomain (unknown [106.210.88.70]) by\n eusmtip1.samsung.com (KnoxPortal) with ESMTPA id\n 20201017030714eusmtip13a1463d0d770a8b49ffa101699ad0146~_qLoQVeVj3124931249eusmtip17;\n Sat, 17 Oct 2020 03:07:14 +0000 (GMT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com\n 20201017030722euoutp0151c9003e044a93626cdf65bab89dfd72~_qLvkNkSQ0903009030euoutp01w",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com;\n s=mail20170921; t=1602904042;\n bh=dtWIMxmqC093nromZjQX9OoS2dikG3YuYpmSL0ZQi8w=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=M4fIBWGClr4NJD1WgRTRI0t2xBo6QHk/N6eAa/JivYFvy8Gmzv4iCHiej2AgnHZ16\n 887j0xGsJZ548ZA8n+cja6VOB+88K4WKTjxWeopg1tbhNrj/weS1P3PmYR7D2DqqHS\n 3m/XAiBE1a2neoOHf+CYGoICfIisesoJz82c/Pco=",
        "X-AuditID": "cbfec7f4-65dff7000000176d-be-5f8a5fe40e4c",
        "From": "Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>",
        "To": "David Hunt <david.hunt@intel.com>, Bruce Richardson\n <bruce.richardson@intel.com>",
        "Cc": "dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org",
        "Date": "Sat, 17 Oct 2020 05:06:51 +0200",
        "Message-Id": "<20201017030701.16134-8-l.wojciechow@partner.samsung.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20201017030701.16134-1-l.wojciechow@partner.samsung.com>",
        "X-Brightmail-Tracker": [
            "\n H4sIAAAAAAAAA+NgFnrKIsWRmVeSWpSXmKPExsWy7djPc7pP4rviDfacYre4screom/SRyaL\n d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsErozrk8MK\n ztlVbNgu1sA4z6iLkZNDQsBE4urVacxdjFwcQgIrGCUuTDnDBOF8YZTY8n0zO4TzmVFi4e8l\n rDAtryZuZ4FILGeUmLFjKStc1Y6mWYwgVWwCthJHZn4F6xARCJNobt4L1MHBwSzgLPHkKxtI\n WBio5MnUtywgNouAqsS8nUvA4rwCrhJrn79jglgmL7F6wwFmkFZOATeJxuOuIKskBC6zSSx/\n u4URosZFYtepu1D1whKvjm9hh7BlJP7vnM8E0bCNUeLq75+MEM5+RonrvSugqqwlDv/7zQZx\n nKbE+l36EGFHiY/9k8HCEgJ8EjfeCoKEmYHMSdumM0OEeSU62oQgqvUknvZMZYRZ+2ftExYI\n 20Pi36QP0LC6yihxasl35gmM8rMQli1gZFzFKJ5aWpybnlpslJdarlecmFtcmpeul5yfu4kR\n GPmn/x3/soNx15+kQ4wCHIxKPLwcSzvjhVgTy4orcw8xSnAwK4nwOp09HSfEm5JYWZValB9f\n VJqTWnyIUZqDRUmc13jRy1ghgfTEktTs1NSC1CKYLBMHp1QDo9WfPMvmLh+xp2v6WVSeuCx8\n Wye7Q2/9/jMrX7A3XHgQWbi9l6mdVb+i68CU4+pHeuZMUBIKv7XSpZm9RVVZrf7EbMn2jZJt\n JYUeX5bOTqmMeViRuvPyXYdrEuvrC0VO8cjEOPBeOPQ4/ruZacZqp+cVEb05h3xvrPCN6NYt\n EAo7ud61obRWiaU4I9FQi7moOBEAcHIRbvgCAAA=",
            "\n H4sIAAAAAAAAA+NgFjrKLMWRmVeSWpSXmKPExsVy+t/xu7qP47viDc7d4bW4screom/SRyaL\n d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj\n PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYzrk8MKztlVbNgu1sA4z6iLkZNDQsBE\n 4tXE7SxdjFwcQgJLGSXuvzvK3MXIAZSQkfhwSQCiRljiz7UuNoiaj4wSG+7cZgNJsAnYShyZ\n +ZUVpF5EIEzixEp/kDCzgLvElsVTmUFsYaCSJ1PfsoDYLAKqEvN2LgFr5RVwlVj7/B0TxHx5\n idUbDoCt5RRwk2g87gqxqpFR4uysdSwTGPkWMDKsYhRJLS3OTc8tNtQrTswtLs1L10vOz93E\n CAzCbcd+bt7BeGlj8CFGAQ5GJR7eDYs644VYE8uKK3MPMUpwMCuJ8DqdPR0nxJuSWFmVWpQf\n X1Sak1p8iNEU6KiJzFKiyfnACMkriTc0NTS3sDQ0NzY3NrNQEuftEDgYIySQnliSmp2aWpBa\n BNPHxMEp1cDIdtyxcNIZpUN3dh7wXLnsbOJl2fbGOFHf430/Ur7VBBotLI0u8G66rX0u6crR\n Mu/ygyclbq1ZeMv93t1zDZcPthyOuZ96xTEmlaOZbbaCQ3UL16b/XGF75pq+atNaHuetG9P6\n /um7yNdzZ0TJvFyUcsf/fdtRzSXqvw8tzJ80o6hAvKnoncp8JZbijERDLeai4kQA6y7qrlgC\n AAA="
        ],
        "X-CMS-MailID": "20201017030715eucas1p2366d1f0ce16a219b21542bb26e4588a6",
        "X-Msg-Generator": "CA",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "X-RootMTR": "20201017030715eucas1p2366d1f0ce16a219b21542bb26e4588a6",
        "X-EPHeader": "CA",
        "CMS-TYPE": "201P",
        "X-CMS-RootMailID": "20201017030715eucas1p2366d1f0ce16a219b21542bb26e4588a6",
        "References": "<20201010160508.19709-1-l.wojciechow@partner.samsung.com>\n <20201017030701.16134-1-l.wojciechow@partner.samsung.com>\n <CGME20201017030715eucas1p2366d1f0ce16a219b21542bb26e4588a6@eucas1p2.samsung.com>",
        "Subject": "[dpdk-dev] [PATCH v8 07/17] test/distributor: fix freeing mbufs",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Sanity tests with mbuf alloc and shutdown tests assume that\nmbufs passed to worker cores are freed in handlers.\nSuch packets should not be returned to the distributor's main\ncore. The only packets that should be returned are the packets\nsend after completion of the tests in quit_workers function.\n\nThis patch stops returning mbufs to distributor's core.\nIn case of shutdown tests it is impossible to determine\nhow worker and distributor threads would synchronize.\nPackets used by tests should be freed and packets used during\nquit_workers() shouldn't. That's why returning mbufs to mempool\nis moved to test procedure run on distributor thread\nfrom worker threads.\n\nAdditionally this patch cleans up unused variables.\n\nFixes: c0de0eb82e40 (\"distributor: switch over to new API\")\nCc: david.hunt@intel.com\nCc: stable@dpdk.org\n\nSigned-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>\nAcked-by: David Hunt <david.hunt@intel.com>\n---\n app/test/test_distributor.c | 67 ++++++++++++++++++-------------------\n 1 file changed, 33 insertions(+), 34 deletions(-)",
    "diff": "diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c\nindex 6cd7a2edd..ec1fe348b 100644\n--- a/app/test/test_distributor.c\n+++ b/app/test/test_distributor.c\n@@ -63,20 +63,18 @@ handle_work(void *arg)\n \tstruct rte_mbuf *buf[8] __rte_cache_aligned;\n \tstruct worker_params *wp = arg;\n \tstruct rte_distributor *db = wp->dist;\n-\tunsigned int count = 0, num;\n+\tunsigned int num;\n \tunsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED);\n \n \tnum = rte_distributor_get_pkt(db, id, buf, NULL, 0);\n \twhile (!quit) {\n \t\t__atomic_fetch_add(&worker_stats[id].handled_packets, num,\n \t\t\t\t__ATOMIC_RELAXED);\n-\t\tcount += num;\n \t\tnum = rte_distributor_get_pkt(db, id,\n \t\t\t\tbuf, buf, num);\n \t}\n \t__atomic_fetch_add(&worker_stats[id].handled_packets, num,\n \t\t\t__ATOMIC_RELAXED);\n-\tcount += num;\n \trte_distributor_return_pkt(db, id, buf, num);\n \treturn 0;\n }\n@@ -268,7 +266,6 @@ handle_work_with_free_mbufs(void *arg)\n \tstruct rte_mbuf *buf[8] __rte_cache_aligned;\n \tstruct worker_params *wp = arg;\n \tstruct rte_distributor *d = wp->dist;\n-\tunsigned int count = 0;\n \tunsigned int i;\n \tunsigned int num;\n \tunsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED);\n@@ -276,13 +273,11 @@ handle_work_with_free_mbufs(void *arg)\n \tnum = rte_distributor_get_pkt(d, id, buf, NULL, 0);\n \twhile (!quit) {\n \t\tworker_stats[id].handled_packets += num;\n-\t\tcount += num;\n \t\tfor (i = 0; i < num; i++)\n \t\t\trte_pktmbuf_free(buf[i]);\n \t\tnum = rte_distributor_get_pkt(d, id, buf, NULL, 0);\n \t}\n \tworker_stats[id].handled_packets += num;\n-\tcount += num;\n \trte_distributor_return_pkt(d, id, buf, num);\n \treturn 0;\n }\n@@ -308,7 +303,6 @@ sanity_test_with_mbuf_alloc(struct worker_params *wp, struct rte_mempool *p)\n \t\t\trte_distributor_process(d, NULL, 0);\n \t\tfor (j = 0; j < BURST; j++) {\n \t\t\tbufs[j]->hash.usr = (i+j) << 1;\n-\t\t\trte_mbuf_refcnt_set(bufs[j], 1);\n \t\t}\n \n \t\trte_distributor_process(d, bufs, BURST);\n@@ -332,15 +326,10 @@ sanity_test_with_mbuf_alloc(struct worker_params *wp, struct rte_mempool *p)\n static int\n handle_work_for_shutdown_test(void *arg)\n {\n-\tstruct rte_mbuf *pkt = NULL;\n \tstruct rte_mbuf *buf[8] __rte_cache_aligned;\n \tstruct worker_params *wp = arg;\n \tstruct rte_distributor *d = wp->dist;\n-\tunsigned int count = 0;\n \tunsigned int num;\n-\tunsigned int total = 0;\n-\tunsigned int i;\n-\tunsigned int returned = 0;\n \tunsigned int zero_id = 0;\n \tunsigned int zero_unset;\n \tconst unsigned int id = __atomic_fetch_add(&worker_idx, 1,\n@@ -359,9 +348,6 @@ handle_work_for_shutdown_test(void *arg)\n \t * for zero_quit */\n \twhile (!quit && !(id == zero_id && zero_quit)) {\n \t\tworker_stats[id].handled_packets += num;\n-\t\tcount += num;\n-\t\tfor (i = 0; i < num; i++)\n-\t\t\trte_pktmbuf_free(buf[i]);\n \t\tnum = rte_distributor_get_pkt(d, id, buf, NULL, 0);\n \n \t\tif (num > 0) {\n@@ -370,14 +356,12 @@ handle_work_for_shutdown_test(void *arg)\n \t\t\t\tfalse, __ATOMIC_ACQ_REL, __ATOMIC_ACQUIRE);\n \t\t}\n \t\tzero_id = __atomic_load_n(&zero_idx, __ATOMIC_ACQUIRE);\n-\n-\t\ttotal += num;\n \t}\n \tworker_stats[id].handled_packets += num;\n-\tcount += num;\n-\treturned = rte_distributor_return_pkt(d, id, buf, num);\n \n \tif (id == zero_id) {\n+\t\trte_distributor_return_pkt(d, id, NULL, 0);\n+\n \t\t/* for worker zero, allow it to restart to pick up last packet\n \t\t * when all workers are shutting down.\n \t\t */\n@@ -388,14 +372,10 @@ handle_work_for_shutdown_test(void *arg)\n \n \t\twhile (!quit) {\n \t\t\tworker_stats[id].handled_packets += num;\n-\t\t\tcount += num;\n-\t\t\trte_pktmbuf_free(pkt);\n \t\t\tnum = rte_distributor_get_pkt(d, id, buf, NULL, 0);\n \t\t}\n-\t\treturned = rte_distributor_return_pkt(d,\n-\t\t\t\tid, buf, num);\n-\t\tprintf(\"Num returned = %d\\n\", returned);\n \t}\n+\trte_distributor_return_pkt(d, id, buf, num);\n \treturn 0;\n }\n \n@@ -411,7 +391,9 @@ sanity_test_with_worker_shutdown(struct worker_params *wp,\n {\n \tstruct rte_distributor *d = wp->dist;\n \tstruct rte_mbuf *bufs[BURST];\n-\tunsigned i;\n+\tstruct rte_mbuf *bufs2[BURST];\n+\tunsigned int i;\n+\tunsigned int failed = 0;\n \n \tprintf(\"=== Sanity test of worker shutdown ===\\n\");\n \n@@ -437,16 +419,17 @@ sanity_test_with_worker_shutdown(struct worker_params *wp,\n \t */\n \n \t/* get more buffers to queue up, again setting them to the same flow */\n-\tif (rte_mempool_get_bulk(p, (void *)bufs, BURST) != 0) {\n+\tif (rte_mempool_get_bulk(p, (void *)bufs2, BURST) != 0) {\n \t\tprintf(\"line %d: Error getting mbufs from pool\\n\", __LINE__);\n+\t\trte_mempool_put_bulk(p, (void *)bufs, BURST);\n \t\treturn -1;\n \t}\n \tfor (i = 0; i < BURST; i++)\n-\t\tbufs[i]->hash.usr = 1;\n+\t\tbufs2[i]->hash.usr = 1;\n \n \t/* get worker zero to quit */\n \tzero_quit = 1;\n-\trte_distributor_process(d, bufs, BURST);\n+\trte_distributor_process(d, bufs2, BURST);\n \n \t/* flush the distributor */\n \trte_distributor_flush(d);\n@@ -460,9 +443,15 @@ sanity_test_with_worker_shutdown(struct worker_params *wp,\n \t\tprintf(\"Line %d: Error, not all packets flushed. \"\n \t\t\t\t\"Expected %u, got %u\\n\",\n \t\t\t\t__LINE__, BURST * 2, total_packet_count());\n-\t\treturn -1;\n+\t\tfailed = 1;\n \t}\n \n+\trte_mempool_put_bulk(p, (void *)bufs, BURST);\n+\trte_mempool_put_bulk(p, (void *)bufs2, BURST);\n+\n+\tif (failed)\n+\t\treturn -1;\n+\n \tprintf(\"Sanity test with worker shutdown passed\\n\\n\");\n \treturn 0;\n }\n@@ -476,7 +465,8 @@ test_flush_with_worker_shutdown(struct worker_params *wp,\n {\n \tstruct rte_distributor *d = wp->dist;\n \tstruct rte_mbuf *bufs[BURST];\n-\tunsigned i;\n+\tunsigned int i;\n+\tunsigned int failed = 0;\n \n \tprintf(\"=== Test flush fn with worker shutdown (%s) ===\\n\", wp->name);\n \n@@ -513,9 +503,14 @@ test_flush_with_worker_shutdown(struct worker_params *wp,\n \t\tprintf(\"Line %d: Error, not all packets flushed. \"\n \t\t\t\t\"Expected %u, got %u\\n\",\n \t\t\t\t__LINE__, BURST, total_packet_count());\n-\t\treturn -1;\n+\t\tfailed = 1;\n \t}\n \n+\trte_mempool_put_bulk(p, (void *)bufs, BURST);\n+\n+\tif (failed)\n+\t\treturn -1;\n+\n \tprintf(\"Flush test with worker shutdown passed\\n\\n\");\n \treturn 0;\n }\n@@ -581,7 +576,10 @@ quit_workers(struct worker_params *wp, struct rte_mempool *p)\n \tconst unsigned num_workers = rte_lcore_count() - 1;\n \tunsigned i;\n \tstruct rte_mbuf *bufs[RTE_MAX_LCORE];\n-\trte_mempool_get_bulk(p, (void *)bufs, num_workers);\n+\tif (rte_mempool_get_bulk(p, (void *)bufs, num_workers) != 0) {\n+\t\tprintf(\"line %d: Error getting mbufs from pool\\n\", __LINE__);\n+\t\treturn;\n+\t}\n \n \tzero_quit = 0;\n \tquit = 1;\n@@ -589,11 +587,12 @@ quit_workers(struct worker_params *wp, struct rte_mempool *p)\n \t\tbufs[i]->hash.usr = i << 1;\n \trte_distributor_process(d, bufs, num_workers);\n \n-\trte_mempool_put_bulk(p, (void *)bufs, num_workers);\n-\n \trte_distributor_process(d, NULL, 0);\n \trte_distributor_flush(d);\n \trte_eal_mp_wait_lcore();\n+\n+\trte_mempool_put_bulk(p, (void *)bufs, num_workers);\n+\n \tquit = 0;\n \tworker_idx = 0;\n \tzero_idx = RTE_MAX_LCORE;\n",
    "prefixes": [
        "v8",
        "07/17"
    ]
}