get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 139705,
    "url": "https://patches.dpdk.org/api/patches/139705/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20240426143848.2280689-1-ferruh.yigit@amd.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": "<20240426143848.2280689-1-ferruh.yigit@amd.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20240426143848.2280689-1-ferruh.yigit@amd.com",
    "date": "2024-04-26T14:38:48",
    "name": "[RFC,v2] net/af_packet: make stats reset reliable",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "b80a2d98d75c8716f45210150d2b865f10aed9a5",
    "submitter": {
        "id": 2700,
        "url": "https://patches.dpdk.org/api/people/2700/?format=api",
        "name": "Ferruh Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20240426143848.2280689-1-ferruh.yigit@amd.com/mbox/",
    "series": [
        {
            "id": 31833,
            "url": "https://patches.dpdk.org/api/series/31833/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=31833",
            "date": "2024-04-26T14:38:48",
            "name": "[RFC,v2] net/af_packet: make stats reset reliable",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/31833/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/139705/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/139705/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 mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id B31E543F17;\n\tFri, 26 Apr 2024 16:39:02 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 38A4343E57;\n\tFri, 26 Apr 2024 16:39:02 +0200 (CEST)",
            "from NAM11-CO1-obe.outbound.protection.outlook.com\n (mail-co1nam11on2058.outbound.protection.outlook.com [40.107.220.58])\n by mails.dpdk.org (Postfix) with ESMTP id 4466943E53\n for <dev@dpdk.org>; Fri, 26 Apr 2024 16:39:00 +0200 (CEST)",
            "from DS0PR17CA0013.namprd17.prod.outlook.com (2603:10b6:8:191::11)\n by PH0PR12MB7791.namprd12.prod.outlook.com (2603:10b6:510:280::15) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.22; Fri, 26 Apr\n 2024 14:38:57 +0000",
            "from DS1PEPF00017090.namprd03.prod.outlook.com\n (2603:10b6:8:191:cafe::df) by DS0PR17CA0013.outlook.office365.com\n (2603:10b6:8:191::11) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.29 via Frontend\n Transport; Fri, 26 Apr 2024 14:38:57 +0000",
            "from SATLEXMB04.amd.com (165.204.84.17) by\n DS1PEPF00017090.mail.protection.outlook.com (10.167.17.132) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n 15.20.7519.19 via Frontend Transport; Fri, 26 Apr 2024 14:38:56 +0000",
            "from telcodpdk.amd.com (10.180.168.240) by SATLEXMB04.amd.com\n (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Fri, 26 Apr\n 2024 09:38:55 -0500"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=anrd63RM2vMZ/VJX7TR3bSihCyx0OSH9Te2EInqQn2t00yS86Hx3GCImEN5Z7NHBIobfra6v/iUokEZg2lYspVeUPP4ZXjZdlm8AyU2+j4VsMQAboa+WWIEu/k26ePah1vkWU+D6tweTCxNcVytu8u7C2FAG72va5pezKkbQcck7upN1hDrS7a/RovZWZnd94ExAgJfun1HgkaCd0q06gWrC1o/M0WhB3zHFyE6r4qFQtZETUxBpetoHtnh81RHw0YzmFg8HyX9hhp2/S2nSnVCSnFsddRFYVuaNC0twpy+DpqId7S2bAxz53cBoUSI+aOIYS2qw9gSEfU5jGnwXJQ==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=H9c7r1CntggnX0Qz0EHJ04o90xFFx7VzbE7QZjhgcHc=;\n b=cYf+9NuUSy1NCYefKBAQI8gPpkP2MSd3nNiwx0dln+D13e4yPGqAJh/YxJaQf+N5+uuJ670vTMTgoyBkGiUgCGlVHLZjdphlhFl7KyKNOhCRtdz8Vy/io/K5YoM+5gzW2aAphuwNHm6p8P/hAa58NDU8ZLFxaluS9Mh1TGH6nqehhRNDd4bO5tZuQL34imokI2+hcS8guKwnKOnFpWmQ8Rk1R8+n0DwuCXDPawUGJeEEeXBuC0Z5Ry5Fgh1IJ5t+1ADeFVuHLexQOSXMJPTkpVtzUx5VaXMpe4Eeg3vLFnGcA1O7nhoDK97sYy5B6JheHV5xvbyp6Ou49vIeDdVTtw==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 165.204.84.17) smtp.rcpttodomain=tuxdriver.com smtp.mailfrom=amd.com;\n dmarc=pass (p=quarantine sp=quarantine pct=100) action=none\n header.from=amd.com; dkim=none (message not signed); arc=none (0)",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=H9c7r1CntggnX0Qz0EHJ04o90xFFx7VzbE7QZjhgcHc=;\n b=FWTCUMllTgTOActdZkdKvCEmtTOnIfK+eZIHOFDCLN4FN7MCNqxvGRayWksskCM+ryHsWknTSHLC2vMyZF9MkWdIsua7qprV6ISAClD3UTlD5DL1UYNE9/EBL99Q6fGUrkjIgfM7fXZHOqjdXH4B/CzVZDVThjIrXOvruFhFqCI=",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 165.204.84.17)\n smtp.mailfrom=amd.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=amd.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of amd.com designates\n 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C",
        "From": "Ferruh Yigit <ferruh.yigit@amd.com>",
        "To": "\"John W. Linville\" <linville@tuxdriver.com>",
        "CC": "Thomas Monjalon <thomas@monjalon.net>, <dev@dpdk.org>, =?utf-8?q?Mattias?=\n\t=?utf-8?q?_R=C3=B6nnblom?= <mattias.ronnblom@ericsson.com>,\n Stephen Hemminger <stephen@networkplumber.org>, =?utf-8?q?Morten_Br=C3=B8ru?=\n\t=?utf-8?q?p?= <mb@smartsharesystems.com>",
        "Subject": "[RFC v2] net/af_packet: make stats reset reliable",
        "Date": "Fri, 26 Apr 2024 15:38:48 +0100",
        "Message-ID": "<20240426143848.2280689-1-ferruh.yigit@amd.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20240425174617.2126159-1-ferruh.yigit@amd.com>",
        "References": "<20240425174617.2126159-1-ferruh.yigit@amd.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"UTF-8\"",
        "Content-Transfer-Encoding": "8bit",
        "X-Originating-IP": "[10.180.168.240]",
        "X-ClientProxiedBy": "SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com\n (10.181.40.145)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "DS1PEPF00017090:EE_|PH0PR12MB7791:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "d07c1b15-1684-4547-a131-08dc65fe9ab1",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230031|1800799015|376005|36860700004|82310400014;",
        "X-Microsoft-Antispam-Message-Info": "=?utf-8?q?bgmXDQLd3CU84qtqst1uRokNCSeWovv?=\n\t=?utf-8?q?0UJAh2k0pbq5KQPjhf52OdBGyfN5CTRUFNIiu3pdNIpot2kulVVaXMncDDEaCscTJ?=\n\t=?utf-8?q?Sii2KdqNn+SBXKJ4WKPhCNYLMjbhnHFgRiHTBT2pJjQKSBeJLxxnE2eJFxgYMoXae?=\n\t=?utf-8?q?ICPs8CNNlrpVmQAMtR2N6cKI9jPQwN9hnxSqD2+RX8oLISFRq+19wjPnh4K97kNZA?=\n\t=?utf-8?q?oaQ4zWDBfZJ2qys+2P/RB1Tw/36RVYJmFpKp5neoqV2AA3I2nTb5+p+WxrONlEc8G?=\n\t=?utf-8?q?9nFHMLqO5/R2xGo86tUkfK63gJCrfuPZdXu7aOsZG7U7itGcsqVTGwd1YthRSqKKE?=\n\t=?utf-8?q?OKnb0CDH/Du9Mg5Jdv7u+B+sgVbWGiW5/WHufFem/5CicBnQZ/yFG1BSziT4hq7gp?=\n\t=?utf-8?q?w31yjU4EzbEZzb/ZDussheSaVdaMlrR7WQup7jpKTZy5+wGSi2SiBbwGYwk/JUNpo?=\n\t=?utf-8?q?aYJGvRtFO7o86pK/yJc8aTuyBnFQBe+djf9nnDGiCFwoztZSONqU/6bO9G3H1VRed?=\n\t=?utf-8?q?cK39AiHnAIkdSVG016b9DcrBhfsU9r/ZNYM5g4A4VMxOWge0JpbbfI/X8sMS4AOhA?=\n\t=?utf-8?q?6bYgVG3oTvu10QFMCNnQVyQhBPL1r/gUj1o7UJUgJ+5JxofJGf2jofEbjxV6pvJ/7?=\n\t=?utf-8?q?92ZhkIgj/SB7Eyt1RnXZeV0q9QtRDzwtN67Iqk3t5OSwcXhHU0iP1/KmmrugJV9eK?=\n\t=?utf-8?q?9o8HQmlsCt6zAy2SeWrwd08gCHz68S62siOdphWbvNwGiwmCQjgtRuR8lxt+o/pI5?=\n\t=?utf-8?q?CQqvAcs0/mrn6GAReUVwx4SOcvVDEU4O9/JGjEbgYbAfbS8f940JC5vK1JXD3vBAS?=\n\t=?utf-8?q?hiFvISaZ5zngttMVJFDdCP7xii9XvTqFM6qIXvp1XBwVbYWxLnFdaQSsivxD00LzH?=\n\t=?utf-8?q?zZk0oq8CL5OHmf3YRQiz2jmCT5WyOXwg/lqFXoWThMeLzztNUcrUDdcy/tlYeeDAU?=\n\t=?utf-8?q?T/87OSmSlOa08yN5obByIu704el2sBYFMZfhOJYnswjGpWPEec8wo1/X06Yi/29Wo?=\n\t=?utf-8?q?woibCjhJaraqODEKbGTeMOMIIwZvqr9eCzn6SOV240jnLRvPgaGP1trWjqpbNJrE8?=\n\t=?utf-8?q?VxeqblAzdjk1xkB3xO/hR/L53PvLr9sBTXyftxLrj5BibYQD8Y9khvlNzaaYB2diX?=\n\t=?utf-8?q?CdjkLEzFddTtVnJ0sl/z107KAf8p4u1bJg+TYJrLrXzxjilsOrQbaRWNlYVz6xE4S?=\n\t=?utf-8?q?RHWKaK4GudjoDLTH1lFE6QTgIKnXFmQ8xm5U4GhPt1UNiplnXHn1fsnw5ei83LUkd?=\n\t=?utf-8?q?Cp/U7B7Yvr8iS?=",
        "X-Forefront-Antispam-Report": "CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230031)(1800799015)(376005)(36860700004)(82310400014); DIR:OUT;\n SFP:1101;",
        "X-OriginatorOrg": "amd.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "26 Apr 2024 14:38:56.9636 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n d07c1b15-1684-4547-a131-08dc65fe9ab1",
        "X-MS-Exchange-CrossTenant-Id": "3dd8961f-e488-4e60-8e11-a82d994e183d",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17];\n Helo=[SATLEXMB04.amd.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n DS1PEPF00017090.namprd03.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "PH0PR12MB7791",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "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"
    },
    "content": "For stats reset, use an offset instead of zeroing out actual stats values,\nget_stats() displays diff between stats and offset.\nThis way stats only updated in datapath and offset only updated in stats\nreset function. This makes stats reset function more reliable.\n\nAs stats only written by single thread, we can remove 'volatile' qualifier\nwhich should improve the performance in datapath.\n\nSigned-off-by: Ferruh Yigit <ferruh.yigit@amd.com>\n---\nCc: Mattias Rönnblom <mattias.ronnblom@ericsson.com>\nCc: Stephen Hemminger <stephen@networkplumber.org>\nCc: Morten Brørup <mb@smartsharesystems.com>\n\nThis update triggered by mail list discussion [1].\n\n[1]\nhttps://inbox.dpdk.org/dev/3b2cf48e-2293-4226-b6cd-5f4dd3969f99@lysator.liu.se/\n\nv2:\n* Remove wrapping check for stats\n---\n drivers/net/af_packet/rte_eth_af_packet.c | 66 ++++++++++++++---------\n 1 file changed, 41 insertions(+), 25 deletions(-)",
    "diff": "diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c\nindex 397a32db5886..10c8e1e50139 100644\n--- a/drivers/net/af_packet/rte_eth_af_packet.c\n+++ b/drivers/net/af_packet/rte_eth_af_packet.c\n@@ -51,8 +51,10 @@ struct pkt_rx_queue {\n \tuint16_t in_port;\n \tuint8_t vlan_strip;\n \n-\tvolatile unsigned long rx_pkts;\n-\tvolatile unsigned long rx_bytes;\n+\tuint64_t rx_pkts;\n+\tuint64_t rx_bytes;\n+\tuint64_t rx_pkts_offset;\n+\tuint64_t rx_bytes_offset;\n };\n \n struct pkt_tx_queue {\n@@ -64,9 +66,12 @@ struct pkt_tx_queue {\n \tunsigned int framecount;\n \tunsigned int framenum;\n \n-\tvolatile unsigned long tx_pkts;\n-\tvolatile unsigned long err_pkts;\n-\tvolatile unsigned long tx_bytes;\n+\tuint64_t tx_pkts;\n+\tuint64_t err_pkts;\n+\tuint64_t tx_bytes;\n+\tuint64_t tx_pkts_offset;\n+\tuint64_t err_pkts_offset;\n+\tuint64_t tx_bytes_offset;\n };\n \n struct pmd_internals {\n@@ -385,8 +390,15 @@ eth_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n \treturn 0;\n }\n \n+\n+static uint64_t\n+stats_get_diff(uint64_t stats, uint64_t offset)\n+{\n+\treturn stats - offset;\n+}\n+\n static int\n-eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *igb_stats)\n+eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)\n {\n \tunsigned i, imax;\n \tunsigned long rx_total = 0, tx_total = 0, tx_err_total = 0;\n@@ -396,27 +408,29 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *igb_stats)\n \timax = (internal->nb_queues < RTE_ETHDEV_QUEUE_STAT_CNTRS ?\n \t        internal->nb_queues : RTE_ETHDEV_QUEUE_STAT_CNTRS);\n \tfor (i = 0; i < imax; i++) {\n-\t\tigb_stats->q_ipackets[i] = internal->rx_queue[i].rx_pkts;\n-\t\tigb_stats->q_ibytes[i] = internal->rx_queue[i].rx_bytes;\n-\t\trx_total += igb_stats->q_ipackets[i];\n-\t\trx_bytes_total += igb_stats->q_ibytes[i];\n+\t\tstruct pkt_rx_queue *rxq = &internal->rx_queue[i];\n+\t\tstats->q_ipackets[i] = stats_get_diff(rxq->rx_pkts, rxq->rx_pkts_offset);\n+\t\tstats->q_ibytes[i] = stats_get_diff(rxq->rx_bytes, rxq->rx_bytes_offset);\n+\t\trx_total += stats->q_ipackets[i];\n+\t\trx_bytes_total += stats->q_ibytes[i];\n \t}\n \n \timax = (internal->nb_queues < RTE_ETHDEV_QUEUE_STAT_CNTRS ?\n \t        internal->nb_queues : RTE_ETHDEV_QUEUE_STAT_CNTRS);\n \tfor (i = 0; i < imax; i++) {\n-\t\tigb_stats->q_opackets[i] = internal->tx_queue[i].tx_pkts;\n-\t\tigb_stats->q_obytes[i] = internal->tx_queue[i].tx_bytes;\n-\t\ttx_total += igb_stats->q_opackets[i];\n-\t\ttx_err_total += internal->tx_queue[i].err_pkts;\n-\t\ttx_bytes_total += igb_stats->q_obytes[i];\n+\t\tstruct pkt_tx_queue *txq = &internal->tx_queue[i];\n+\t\tstats->q_opackets[i] = stats_get_diff(txq->tx_pkts, txq->tx_pkts_offset);\n+\t\tstats->q_obytes[i] = stats_get_diff(txq->tx_bytes, txq->tx_bytes_offset);\n+\t\ttx_total += stats->q_opackets[i];\n+\t\ttx_err_total += stats_get_diff(txq->err_pkts, txq->err_pkts_offset);\n+\t\ttx_bytes_total += stats->q_obytes[i];\n \t}\n \n-\tigb_stats->ipackets = rx_total;\n-\tigb_stats->ibytes = rx_bytes_total;\n-\tigb_stats->opackets = tx_total;\n-\tigb_stats->oerrors = tx_err_total;\n-\tigb_stats->obytes = tx_bytes_total;\n+\tstats->ipackets = rx_total;\n+\tstats->ibytes = rx_bytes_total;\n+\tstats->opackets = tx_total;\n+\tstats->oerrors = tx_err_total;\n+\tstats->obytes = tx_bytes_total;\n \treturn 0;\n }\n \n@@ -427,14 +441,16 @@ eth_stats_reset(struct rte_eth_dev *dev)\n \tstruct pmd_internals *internal = dev->data->dev_private;\n \n \tfor (i = 0; i < internal->nb_queues; i++) {\n-\t\tinternal->rx_queue[i].rx_pkts = 0;\n-\t\tinternal->rx_queue[i].rx_bytes = 0;\n+\t\tstruct pkt_rx_queue *rxq = &internal->rx_queue[i];\n+\t\trxq->rx_pkts_offset = rxq->rx_pkts;\n+\t\trxq->rx_bytes_offset = rxq->rx_bytes;\n \t}\n \n \tfor (i = 0; i < internal->nb_queues; i++) {\n-\t\tinternal->tx_queue[i].tx_pkts = 0;\n-\t\tinternal->tx_queue[i].err_pkts = 0;\n-\t\tinternal->tx_queue[i].tx_bytes = 0;\n+\t\tstruct pkt_tx_queue *txq = &internal->tx_queue[i];\n+\t\ttxq->tx_pkts_offset = txq->tx_pkts;\n+\t\ttxq->err_pkts_offset = txq->err_pkts;\n+\t\ttxq->tx_bytes_offset = txq->tx_bytes;\n \t}\n \n \treturn 0;\n",
    "prefixes": [
        "RFC",
        "v2"
    ]
}