get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 40895,
    "url": "https://patches.dpdk.org/api/patches/40895/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1528477766-15788-12-git-send-email-anoob.joseph@caviumnetworks.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<1528477766-15788-12-git-send-email-anoob.joseph@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1528477766-15788-12-git-send-email-anoob.joseph@caviumnetworks.com",
    "date": "2018-06-08T17:09:22",
    "name": "[dpdk-dev,11/15] examples/l2fwd: move periodic tasks to new function",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "9848fd2d052e4c5d0ba8705fe2fe65cbbf3db99c",
    "submitter": {
        "id": 893,
        "url": "https://patches.dpdk.org/api/people/893/?format=api",
        "name": "Anoob Joseph",
        "email": "anoob.joseph@caviumnetworks.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1528477766-15788-12-git-send-email-anoob.joseph@caviumnetworks.com/mbox/",
    "series": [
        {
            "id": 60,
            "url": "https://patches.dpdk.org/api/series/60/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=60",
            "date": "2018-06-08T17:09:11",
            "name": "preparing l2fwd for eventmode additions",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/60/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/40895/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/40895/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 516361D016;\n\tFri,  8 Jun 2018 19:10:54 +0200 (CEST)",
            "from NAM01-BY2-obe.outbound.protection.outlook.com\n\t(mail-by2nam01on0065.outbound.protection.outlook.com [104.47.34.65])\n\tby dpdk.org (Postfix) with ESMTP id 68C191D006\n\tfor <dev@dpdk.org>; Fri,  8 Jun 2018 19:10:50 +0200 (CEST)",
            "from ajoseph83.caveonetworks.com.caveonetworks.com (115.113.156.2)\n\tby SN6PR07MB4911.namprd07.prod.outlook.com (2603:10b6:805:3c::29)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.15;\n\tFri, 8 Jun 2018 17:10:46 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=t1ZXoF60oJTVz2CVz3Y9C6iGwz6u1u/MNDxBPjech/U=;\n\tb=QJni0EPy+9q0o5PqQTJzVKfqzyKDndL3EZGTi6AKu9CBSCzU3E9gPVWEc/ooQ4pdeNXbtjaCv68ujbHoaRvlKEeE4rSgz1BEpCJSF7Fas5AzLwTv6jn3+KjwVf+SYpNbqytiyvdEQEeQmGIKOm9pvjZOUsvgCob7kcrEOAI2lyY=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Anoob.Joseph@cavium.com; ",
        "From": "Anoob Joseph <anoob.joseph@caviumnetworks.com>",
        "To": "Bruce Richardson <bruce.richardson@intel.com>,\n\tPablo de Lara <pablo.de.lara.guarch@intel.com>",
        "Cc": "Anoob Joseph <anoob.joseph@caviumnetworks.com>,\n\tJerin Jacob <jerin.jacob@caviumnetworks.com>,\n\tNarayana Prasad <narayanaprasad.athreya@caviumnetworks.com>, dev@dpdk.org",
        "Date": "Fri,  8 Jun 2018 22:39:22 +0530",
        "Message-Id": "<1528477766-15788-12-git-send-email-anoob.joseph@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1528477766-15788-1-git-send-email-anoob.joseph@caviumnetworks.com>",
        "References": "<1528477766-15788-1-git-send-email-anoob.joseph@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[115.113.156.2]",
        "X-ClientProxiedBy": "BM1PR01CA0111.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:b00::27)\n\tTo SN6PR07MB4911.namprd07.prod.outlook.com\n\t(2603:10b6:805:3c::29)",
        "X-MS-PublicTrafficType": "Email",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652020)(5600026)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);\n\tSRVR:SN6PR07MB4911; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; SN6PR07MB4911;\n\t3:pievWu7a6zjkf4Qo5zLQh62u1Rf29XIe3PqnZZmqXuctd8AU3VNOXoAwQ4oJr29w7L1cFTK5VyF1M+z18IZ8FqkoNNETIGDGJ1mx8AojDAYpLFiPHzB/fICWYhzdbKUMbPB+BDFsDHGbzYbkD05p6pynCtXgE4jnc0Bc9EiY0QTP1790bTxh1YOTamEgQJCUxzIeu97ouDNJQqKFXvsejw4KsVcVzV/TLMWp8J70huiCC1UQhbu2R4yKlxAdmCu/;\n\t25:rsQMfNRQgMl4NFktnohAe73WM7YcPvU7hnkWqF2o8UXhN3ZW25Z03Tvs5tQicml/HOLCOW5Ivlo9qTZWtxGHGf6twx4VoWw8n/Xb4ewG5gKdXn9qkp2Z8Q1JfPIwp4GJl0cn56fx0CtJQMr25yUvWmIy6NeUY6odPITfos1k8qst4CSQlPhMEHfRIbnQN83PBkfKGn2tgVIL1kcwqRddpppdWtUqL9KngZ4ExTyPK975f/lzQnamW4w3XsAdjhshhuGlT4NrqnuFQMJFbX1vcPsOsvCJ+55xtfdYlZ/bvdAN14bm5Rv+HRlDq6s1QgyIoE2SbH+PbZM0oBEvj1ZHEg==;\n\t31:6DRYRwcw1v3hFefPkXCSwZDeuhMl+bN2ToaIHivJdtz2zLaejnvSVgxe0cPk1Wys50TjIBp2lTdtFY+HeWbIrEtKSGnIOagJBI8UDxvGj5HbseSE0n1uAee/QkUvtrbhBemozFzlKvHr5QEk4InviSxDNJrecla4rgc9nuTvEpXvJDXOKV6aN7196k16HWTdwjadmfLuc+AELKC/YdF7jhzFTtQNLcRGemoVEJJL7bs=",
            "1; SN6PR07MB4911;\n\t20:XbhXctFKmysC/yc6ukbrCXytH6G7X2j1C2aH2WU7fpjq8osqFLeS+iucBr7kfPSb6xGFFHS/paK//6LoalaglZSXNTQTAb6myrbwkC44+DXeavxlvrRSJacpgNb50yNyx7+cKFuzUix9Zz7lb7x/C4/Wq2Zz6kVp2/rwC5T/OtRbZzdirh55P7pqJI2QEQw9/6Pu1ohzWJ24HF+2qwfrg1O28xtnm1i56UMN2mtPqMZexNBkzxJpcu3iGvJzdsLxrlaBmdyDbpJvwBT/jSeOw/C9XZPU1Pc7WozbTRH0awE+d/2n+eXxHAPc3PpGQ7tvl/a5AFk6ti7n8B/xOhxu0ABacLhMlOyp9OfNLLq8WGsUaSBfJMFeKovJWy0fFV6CYa5H1bJ1w9SMFM0Kg6wcKf7NbDQU9F5lxXlAA57SjdctJhTELQW2l3aBcN+vBqIdvvacnycgIc1lCrCl/vCYTK5Erca0mcFTC/ldK+kSHKyG3bg5jaRkuMgyVSKGQxLPgtWoRnUIlhdLXSVBvGPUadYZ15jG4rHvIg2RGAN30cbiB5/0GorfazXfAkKGCZSMMCoPMzsNwYcADuTJNZa0M2CxLeiGdCWVQrDqmhxwkIU=;\n\t4:Kyt8GlJfUvxOZVRMEejFDituZNhUuc9/ngdK43BCwN9QYT2fjmco+fjFKCvhyaH5m06M2KpQudnXEr5Erj0jB19UoYpSzM+TN1kMcMAwktOhDOLmF8dV9Sqj9pSKCV/sYSG5iMJ56Q078qgb2B23ZxrLIvJbpvnqzeI4ZsaRdIxef5tVbsw7ajDQoIDS0xokDttFunm1UtPT1Vp9juyrpWcLIZvPuH2uu1T068rpbQmLbvrN5XxCtMnYCO9DP6gEQgTR6LiHy2ld959n34m7AA==",
            "=?us-ascii?Q?1; SN6PR07MB4911;\n\t23:YHjjZSNSnzte0pIebznrD9KReb6fEP9q27xaNLyxW?=\n\tNC7c7B1LMeRUxY/spB7xfmGFvIrXreieQFcio6uRIgdfTSJhtAgEiQ6VUfLJglFG7vBvZlq1ihdhTYZs2vvvTOQD+wZE2nxjX6+J9PL0bfNRtUo/94zbfL1dy9mYul1GO19ztjIwRZbY5sM46N0qhnBJYeO6I8dEI0KcTryrB7RPnXW8SN00fqX9069CDtmXtUEA3hobvVEExPiSTePzN175RjKlt6ow0eEM/X4WrtgWQLF4xwj8fXmWRIpv/NSaF/0DMvGs+BstO1c3PvG545lTz9Mw3VwE7w/4zQuULD7km9hCe18gTVWop9Z7VFZxlFhsDBvDLlmxOCwE0julFdx987c4vwDMgz9UaFudjiLTHUsUBYK0n1UJoAd6+VZaGsSR9dvsfXn0ucBwniAyNg7TI7vX8pCK5xslc+CO/qs0q7Z2AKrqSdTnf4825w9BCzXf6JZvlBw92aUSopHsDYeTvsuA/hpwXZZOxyRUAGWlk1T+3YGXsGXz8QQ+xz75zhEKNRg66DHukLwK8aU56OhSBUThD4paycAEf/HMtiGZRCFlrPBo8wxIJHeFPH6lMvjZaO4AJ/7at87Nj/7x06aFd0p0OKpluqL4akGDojJ+Fb+xnJcVl2bj8aYSIF3cwOKaGN8y5CjOejNKh72WQ/peWVFB/S5aH/lGGN1+EUsFnT9kG2nyuTNNDGfOgKp9O44+wAX6wqgXI+Ihv91doa2PvLjIeFWvATtNfW+T27U0fEplQFza7kJnlQ1rPMD399Zq5tDKVQX7kGzhBIjOp0pSP2y/6mUdjlxFuFzakkJyTDWxJt3yb7cQjzn0om03cn+QppeUixBhgHs+1nOt2Sg0h4/iV7SskB2zshjAQ5oNa6ENcygmQycI7BDT3JC05ik7uKrDyWw1z4tUwB6scKF0ucWF4E43g98dj+hsa1rFPJ0r7u1sg0v7vYkahaSSMZl1htmqFTrcqtbJnlGF7bfmkznZLtZoC5XC27oR3o8ik4/3SIuR9xf+2aSTuRNpJR7oT8jlgPkf2DwvZ4vZMrgfa5ZH9FdybqF5Ty51KFct9HiGex8JnlYfhW+2sJy/ZxJVnzUkcWQ9l6PiTnmj/6iwBI+mkJwxzaOGzJeLtfYGAjimbNb3oSBKQKq8N5YHyqbyiPYpPBknLw13cIzxUy6uAhu48RIya6ar803uyvUmokKlc0olgqIoul6tgJUEf+J7BcYD6WRkUi/cdzL+B9w",
            "1; SN6PR07MB4911;\n\t6:b5rtggWNzz7EFpVuBICyTTX/8EMaEN3iAc+M4/2lH4gvkz68Q717g8WQEsWuIv9mCGqRpU2jRVNQAS617AXeJSQceAg1FD/2upml1jMyOWTMS6+YKEg7GcLJL1dbz8D0/g+dKMs0aBPXdOGruMdWeLsdAoDd6engk6wUzm5Q7Kr2nBCUxs7cnHrYJf0FLfeCYgvf3S42laSbFFo8q6hO9rXyTfDm/hm6tvHGeAv5QZp6iZ89R/w2SEZWEwMJoQNT0Ig5JS7FmKrucntj0NeCztlsvEPtzEE830e+p2HmlfgcZ1qViTAvDaPFC3aM0ZuYb7i33R3WVXheMxTshFHlNFF2gZKbb6IAxMDOvO4Tc6nhZE2DHy+KpJGOY3TI9+pN2mDXVKujiDWy/5lLmf2EZuzXuemIwfyiED0aDSOjOHoSNH0/PhaPVbzuvGrJjJ6L3kTOupH/MKCR2ghIJNqpvA==;\n\t5:x6yaq3iBe7eNtZPux5v6uuBAfSnlNEZBvE4TjRU6su/HVNKP3DYeAKdd7ELOJ4AXD2JujNNX0m5SLE/XHVH11X9W+dn+y/Qd2MSyDcKDgZY8TbrqjbQchbJUFbMxKUVCYOm0am5t89lft7UUvWFnonKmzrjeaJy1NnARRvRA6so=;\n\t24:M6+bz4PGhJl9ueoZF+E8UHYbSZOiWCsdRtAQK4TFgfYm/Rf4OEZ4FhXpBKsCnTm+6yFkSCRE9ITkbu3T4dqcECrr5OMFKZxXUADZCHsrIFs=",
            "1; SN6PR07MB4911;\n\t7:+yfW6yBiLLIMI5QgFtd4Wf4UWN7KucfHregpljZGX6/2navvRAdXSbOY80YOQxN8RkEGjNRgAeM5x1QYyRbi+YgNGe9x7kjpa1eDPkwmiwOMt8pUXZd0/uEuuD2Mn9aMNCUyY8m/mzt/G1dDo+ZOVIJyEtTTHl1iQZK02DcZUUAkAA1hxsrTez2GNbijZunL6qkg3eERwRPRt0wKJnLsMd5LMrv/FrmvnDOmsp/4/QfOzgPLI4iJgMHc6DdxdnQo"
        ],
        "X-MS-TrafficTypeDiagnostic": "SN6PR07MB4911:",
        "X-Microsoft-Antispam-PRVS": "<SN6PR07MB4911D4751856A513672C458DF87B0@SN6PR07MB4911.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(3231254)(944501410)(52105095)(10201501046)(93006095)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016);\n\tSRVR:SN6PR07MB4911; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB4911; ",
        "X-Forefront-PRVS": "06973FFAD3",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(366004)(39380400002)(39860400002)(376002)(396003)(346002)(199004)(189003)(6666003)(4326008)(54906003)(76176011)(5660300001)(25786009)(48376002)(50466002)(446003)(386003)(186003)(11346002)(16526019)(2616005)(42882007)(44832011)(51416003)(476003)(66066001)(110136005)(36756003)(316002)(55236004)(2906002)(7736002)(81156014)(81166006)(8936002)(50226002)(106356001)(105586002)(68736007)(52116002)(26005)(956004)(8676002)(305945005)(53936002)(6512007)(47776003)(486006)(478600001)(6486002)(6116002)(72206003)(3846002)(16586007)(6506007)(97736004);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB4911;\n\tH:ajoseph83.caveonetworks.com.caveonetworks.com; FPR:; SPF:None;\n\tLANG:en; PTR:InfoNoRecords; A:1; MX:1; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "ncSOkGFSIdHq3WS9ZMvXY6ifWzU7UVT5ZxORKfGtJIbZI6QSDYGX7T8lzGsfPAiGAEQLnFTLsLSJ9juL8BZ4AWU0gIrf64KsOjwk6H+mmrTvv6j/9O67hMhgHIoqaZgLmOc/f+yUtIoP/+6FR6oBdGbUMpIqYV946A56fcKuhNTym2qaHRTzr3SFjoxYWxtV",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Office365-Filtering-Correlation-Id": "0a4fc839-bca6-474d-89d0-08d5cd62c7dc",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "08 Jun 2018 17:10:46.4295\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "0a4fc839-bca6-474d-89d0-08d5cd62c7dc",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "711e4ccf-2e9b-4bcf-a551-4094005b6194",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SN6PR07MB4911",
        "Subject": "[dpdk-dev] [PATCH 11/15] examples/l2fwd: move periodic tasks to new\n\tfunction",
        "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://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Move the periodic operations (stats flush and drain buffers) to a new\nfunction.\n\nSigned-off-by: Anoob Joseph <anoob.joseph@caviumnetworks.com>\n---\n examples/l2fwd/l2fwd_worker.c | 83 ++++++++++++++++++++++++-------------------\n examples/l2fwd/l2fwd_worker.h |  6 ++++\n 2 files changed, 52 insertions(+), 37 deletions(-)",
    "diff": "diff --git a/examples/l2fwd/l2fwd_worker.c b/examples/l2fwd/l2fwd_worker.c\nindex f73de82..231b849 100644\n--- a/examples/l2fwd/l2fwd_worker.c\n+++ b/examples/l2fwd/l2fwd_worker.c\n@@ -94,6 +94,45 @@ l2fwd_drain_buffers(struct lcore_queue_conf *qconf)\n \t}\n }\n \n+static inline void\n+l2fwd_periodic_drain_stats_monitor(struct lcore_queue_conf *qconf,\n+\t\tstruct tsc_tracker *t, int is_master_core)\n+{\n+\tuint64_t diff_tsc, cur_tsc;\n+\n+\tcur_tsc = rte_rdtsc();\n+\n+\t/*\n+\t * TX burst queue drain\n+\t */\n+\tdiff_tsc = cur_tsc - t->prev_tsc;\n+\tif (unlikely(diff_tsc > t->drain_tsc)) {\n+\n+\t\t/* Drain buffers */\n+\t\tl2fwd_drain_buffers(qconf);\n+\n+\t\t/* if timer is enabled */\n+\t\tif (timer_period > 0) {\n+\n+\t\t\t/* advance the timer */\n+\t\t\tt->timer_tsc += diff_tsc;\n+\n+\t\t\t/* if timer has reached its timeout */\n+\t\t\tif (unlikely(t->timer_tsc >= timer_period)) {\n+\n+\t\t\t\t/* do this only on master core */\n+\t\t\t\tif (is_master_core) {\n+\t\t\t\t\tprint_stats();\n+\t\t\t\t\t/* reset the timer */\n+\t\t\t\t\tt->timer_tsc = 0;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\n+\t\tt->prev_tsc = cur_tsc;\n+\t}\n+}\n+\n static void\n l2fwd_mac_updating(struct rte_mbuf *m, unsigned dest_portid)\n {\n@@ -135,19 +174,18 @@ l2fwd_main_loop(void)\n \tstruct rte_mbuf *pkts_burst[MAX_PKT_BURST];\n \tstruct rte_mbuf *m;\n \tunsigned lcore_id;\n-\tuint64_t prev_tsc, diff_tsc, cur_tsc, timer_tsc;\n \tunsigned i, j, portid, nb_rx;\n \tstruct lcore_queue_conf *qconf;\n-\tconst uint64_t drain_tsc = (rte_get_tsc_hz() + US_PER_S - 1)\n-\t\t\t/ US_PER_S * BURST_TX_DRAIN_US;\n \tint is_master_core;\n-\n-\tprev_tsc = 0;\n-\ttimer_tsc = 0;\n+\tstruct tsc_tracker tsc = {0};\n \n \tlcore_id = rte_lcore_id();\n \tqconf = &lcore_queue_conf[lcore_id];\n \n+\t/* Set drain tsc */\n+\ttsc.drain_tsc = (rte_get_tsc_hz() + US_PER_S - 1) /\n+\t\t\tUS_PER_S * BURST_TX_DRAIN_US;\n+\n \tif (qconf->n_rx_port == 0) {\n \t\tRTE_LOG(INFO, L2FWD, \"lcore %u has nothing to do\\n\", lcore_id);\n \t\treturn;\n@@ -167,37 +205,8 @@ l2fwd_main_loop(void)\n \n \twhile (!force_quit) {\n \n-\t\tcur_tsc = rte_rdtsc();\n-\n-\t\t/*\n-\t\t * TX burst queue drain\n-\t\t */\n-\t\tdiff_tsc = cur_tsc - prev_tsc;\n-\t\tif (unlikely(diff_tsc > drain_tsc)) {\n-\n-\t\t\t/* Drain buffers */\n-\t\t\tl2fwd_drain_buffers(qconf);\n-\n-\t\t\t/* if timer is enabled */\n-\t\t\tif (timer_period > 0) {\n-\n-\t\t\t\t/* advance the timer */\n-\t\t\t\ttimer_tsc += diff_tsc;\n-\n-\t\t\t\t/* if timer has reached its timeout */\n-\t\t\t\tif (unlikely(timer_tsc >= timer_period)) {\n-\n-\t\t\t\t\t/* do this only on master core */\n-\t\t\t\t\tif (is_master_core) {\n-\t\t\t\t\t\tprint_stats();\n-\t\t\t\t\t\t/* reset the timer */\n-\t\t\t\t\t\ttimer_tsc = 0;\n-\t\t\t\t\t}\n-\t\t\t\t}\n-\t\t\t}\n-\n-\t\t\tprev_tsc = cur_tsc;\n-\t\t}\n+\t\t/* Do periodic operations (buffer drain & stats monitor) */\n+\t\tl2fwd_periodic_drain_stats_monitor(qconf, &tsc, is_master_core);\n \n \t\t/*\n \t\t * Read packet from RX queues\ndiff --git a/examples/l2fwd/l2fwd_worker.h b/examples/l2fwd/l2fwd_worker.h\nindex 8971a6a..65650aa 100644\n--- a/examples/l2fwd/l2fwd_worker.h\n+++ b/examples/l2fwd/l2fwd_worker.h\n@@ -4,6 +4,12 @@\n #ifndef _L2FWD_WORKER_H_\n #define _L2FWD_WORKER_H_\n \n+struct tsc_tracker {\n+\tuint64_t prev_tsc;\n+\tuint64_t timer_tsc;\n+\tuint64_t drain_tsc;\n+};\n+\n int\n l2fwd_launch_one_lcore(__attribute__((unused)) void *dummy);\n \n",
    "prefixes": [
        "dpdk-dev",
        "11/15"
    ]
}