get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 43799,
    "url": "https://patches.dpdk.org/api/patches/43799/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1534923617-55302-1-git-send-email-yogev@cgstowernetworks.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": "<1534923617-55302-1-git-send-email-yogev@cgstowernetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1534923617-55302-1-git-send-email-yogev@cgstowernetworks.com",
    "date": "2018-08-22T07:40:17",
    "name": "vmxnet3: stats_reset implementation",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "cdefe736cddbe85393c0a8b4b0282bcfd093b839",
    "submitter": {
        "id": 1103,
        "url": "https://patches.dpdk.org/api/people/1103/?format=api",
        "name": "Yogev Chaimovich",
        "email": "yogev@cgstowernetworks.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/1534923617-55302-1-git-send-email-yogev@cgstowernetworks.com/mbox/",
    "series": [
        {
            "id": 1027,
            "url": "https://patches.dpdk.org/api/series/1027/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=1027",
            "date": "2018-08-22T07:40:17",
            "name": "vmxnet3: stats_reset implementation",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/1027/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/43799/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/43799/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 85DE12C60;\n\tWed, 22 Aug 2018 09:38:18 +0200 (CEST)",
            "from EUR03-VE1-obe.outbound.protection.outlook.com\n\t(mail-eopbgr50120.outbound.protection.outlook.com [40.107.5.120])\n\tby dpdk.org (Postfix) with ESMTP id 61B802B92\n\tfor <dev@dpdk.org>; Wed, 22 Aug 2018 09:38:16 +0200 (CEST)",
            "from ubuntu.cgs.com (5.144.48.231) by\n\tDB6PR0902MB1829.eurprd09.prod.outlook.com (2603:10a6:4:b1::22) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.1059.24; Wed, 22 Aug 2018 07:38:13 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=cgstowernetworks.onmicrosoft.com; s=selector1-cgstowernetworks-com; \n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=WjJdgVKqF5QaScdmbgXY7BzIr1RAaPfZKHyxfzqh2gs=;\n\tb=iBSHzTM2V9WQCzkqezBDQQi25/1XJnriIF1XXgu4tm8q3zsA4KRbMobm/BrKjfz76bUuvGBM4dKVy9W/VBTSLqW4qTgET/7w2/luJFtTJ2FwBThV5C21wdYzFA5kF1WpiFO++18Nkb0tW6mQip+hiRdvzklwNvpK5w73fTMMuOQ=",
        "From": "yogev ch <yogev@cgstowernetworks.com>",
        "To": "Yong Wang <yongwang@vmware.com>",
        "Cc": "dev@dpdk.org,\n\tyogev@cgstowernetworks.com",
        "Date": "Wed, 22 Aug 2018 10:40:17 +0300",
        "Message-Id": "<1534923617-55302-1-git-send-email-yogev@cgstowernetworks.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[5.144.48.231]",
        "X-ClientProxiedBy": "VI1PR03CA0051.eurprd03.prod.outlook.com\n\t(2603:10a6:803:50::22) To DB6PR0902MB1829.eurprd09.prod.outlook.com\n\t(2603:10a6:4:b1::22)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "a5e8acf4-cc90-4fc6-0756-08d60802380d",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(7021125)(8989137)(4534165)(7022125)(4603075)(4627221)(201702281549075)(8990107)(7048125)(7024125)(7027125)(7028125)(7023125)(5600074)(711020)(2017052603328)(7153060)(7193020);\n\tSRVR:DB6PR0902MB1829; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; DB6PR0902MB1829;\n\t3:cXccrJcKxp4rq2oXNvXGTqSPZv6VyaZL2GFunnYqEYvJxpg3i5moLYQG654XkltZ2TOcZUfUwGVe/3OY4amnIWQFH1q2riff4hLjXkWhpFR/33nSEm21VCh3OtwrJ0JTAJoGHAbcg6eaUtIcEsEnyU+DPG9Yw7+c9ZYq8iLDPdd0w8KWfR8UcYQwz3Frlv/x2Tixc/Mk15TUP807cAJsk7GykTbuClyOZ9WR77SCktMYUKwVbOwd1ceDE5n+wsc/;\n\t25:AQUY293+QCCjlKZ4aVknYvgX7pkXfIOo4sdFrOGqYzxpbquguqsRPa0+dX/Ue0R+MKp6Qdbt/zgEOQZwSO6OSHsJnoKmGN67ZF9CpXkQQSWceF0iC61GP997kl8A8IPfkC1ssqlurL8s0vYCjQs3Yzo6d9lVo93qDS3nXZ7J4IKNteCubUgJvfDCrB6bPNuAKkoCKjhsdEAiwmwGMbow48k/qUQIHS2orOmIohu56ii+jnu1AqXSsdXnH48997UXjLMQ3gqLynIN4N5V//jThnW8J0aUrTK+QcLaujVIK6R6TOSJdrB9xsFRaOaelRmqyjn+wrGB0+VWnKcOYGhNEw==;\n\t31:S4KoggNVo/66wLi8YoiZnyRFU76YjwBBT0keFInZurNVVbUCqj0XgBpHhNa+BOokMaC/Cvm2HhQQ3Og8uKpMz+fWfkRXGvoBUFmzct0zi5VbBIeP2nJgUe1cba6NmaNJ++bRh2JiIzlf0t1xr8sTfl1/zjarneQ//kcStxcyIWKstmBPpFQHkz13RWRnwLUbO4slhbUsdo1WU5LBCSQ6zdFsih61LTz1T2ma6h11mvM=",
            "1; DB6PR0902MB1829;\n\t4:0CHsrgbuyRrOjatPqTvawCQLqqFn9rSVuc4W4hx2urcSd++JHFzygOuHnQDyxf0bxQdbz8T6WsvQ+QNTIwk1IdjugNAHxoKIaFC/FVRJRkMsc0m828Msm9EvBh/cuO4tvqUtfhKByeTEp70+oIKL67dENQRefR8XVnTX/q0HWpKIgDiH7TL5mL33kJc9i3xLVbMEAXAHw3dfRu5M8yuPuo1iSmbvLPyLVBXhl7wFJobK5dhVJF45Hsfh3Q619CcnlelVR3E41xGBYw+z2idDxg==",
            "=?us-ascii?Q?1; DB6PR0902MB1829;\n\t23:U1TGd5exc7sbeLdIVfxPmJJnLdx9m4wl8FpT6i0?=\n\t+dHVt1kXo4F4QLd6LaMwNT0YSWvHiI7D4GMjA1jRAGgAS9ya2HU7YzFMUWGbHxqNsGvDEaTXvtrwYGXy5cc3Lc0EkWei56yzfkGuXsoT9WZ9oSbTYcJL+p9URK+O39vZXcqmZM/jc1SqLNJNT7mCR8L0GKgKz9tfCWEtg5WLiFzoKoQkWfqOJSIq669h1rf8jnDIj91lJMY4iixC6muOo7xTqWB5JFNc/KT11nt5zX8PD+nFEoJ+CZU/g1CCoH6/z7+sMFWdCYDiOEmivuqFZwH0VxufmKlMICtaN51kzN3Cok9DHL87HWCE7yQKqAdCojfhkj/Pksqd0CeHhgkF4n9BUhBLP/uHNYvEXdEBMiNASRQhOAeo1GuTTE58rIqbJXMB5or7btgu10PQyIfdZfKU02HWyahfmOAd5NwLzblNeSfvEVwhR2OdKkYf7AT/cZFgHkgBxBL7HwTndXMWAH40VmWiLjuYxHJDdb/LqxuxfywpL/RlcgDIti09WHYYi1Bq895zte3SfN/bRZgiaO554EKTCjteciLTHkwwnELpX8chl5StxKr1EfrtvCFy3PRQtuOGfmPwDepe88DQrIbkbM9LO5O+16UFNvlRXiie6xqbR/IT+bKYWUTXFWggVRXlUY1y0ZIAjbeDCc/g55bbDdmiqzsXw2Am1rht4KMYQmKmc1NdGVmH/sTFxzpCUTPGmCQLF3Rnb9Adg7wi4IhlhePXMdeD9Y64zBkJ+G00ZeBAih7iiOHD2H6Wh5YI1wctnIdQC+yNpFSj126altEIug5lF6vE0DPaEeCqBeYhm3EHvt/gdX9v8/9denn1XgEKsfFrPewDhu/D3fMqTMg8Bk9j4i93iIDQsPrjuh9DyFKQI/hiK+5cXv2McOzuKSL81VG+4encRksJiqyPqo3T1qt7grqO4cOsUzdcqFz4M2fnO1wIJKILRH/7sf7zcl890sBIvn2nmAwOAjxZi7vzG/+Rh7MaPEuynX2UX08xCSv6PGpp13GiffianNupfJCpT+FLfDnHj2inEF1YYGSYJ7pb7f/lD0d+glNi/qD6Pt7SDO56nintJdZHZeHBTzKZneEcjQALdjO1yOkmgUY16Xop9m90uGuylm3LOe/a6fWUmJ4FjKGIk57JpvZVMDRKIplyIKUkXO3ma2f2o78EqcA/QU3nLXTt4slXnz5Nl6my244L+ptNIUsEsi0wXqS2sjnceYIW5KlHn/9v+R3+w",
            "1; DB6PR0902MB1829;\n\t6:l7yF0aBKTV/ve9xMZFO0Yob/Uqf8/5BVZjjjSWdaWQDHJuc1RJBxo9HTmJ7/+oRTmBoNR4LliY2fdxojTgzHUGutchyY2s0ZhljMIeHEVCBVkg+4zlEG/Jfon6/rAeT8k97jwTSRhJZI9Zfer8eR5+1C9iP7fv37GYmfGhhm2aIC3D/B03XapZ9sw+gpfa4dhvLi1oUJppAaRkW4lCJEYoid28eYa3tjia6yYg2XC9rGk+exIevOWlA5aohNNhHJwVgMosFF6lSbpQ6Oc6vyxv6gvc2DgLtByTcmDTyFckCpRYpdwW44HcqOgxqivXz04yR2hQUY3hH+t+TFOfk/jecagTv3N8gRS2A8PyVcUWuGC17e/GshTrZ+UWkCewtkC/P6iKYKt+/bgOmZs7VedDLEBU4SCuvdTstz/toSqbqpZgYh/p0PSOxvWogWYTkpIgL6eDuHvbdT3STXvy4T1Q==;\n\t5:VBTxf8hg2C1sW081fKsdmV+e9XHfNTXe/epFJDqO+75boC9I7jrFQkthZexFN2TRYLKWP+74H2MIvE40loxg3xcKNPrVKL9pfWoEErsUD8fH3wpj2S6tC4unbQpX7H1SYgoXaJ0HQkolWZlW+waZy4WynH2ijhwDY8P2MpHtPC0=;\n\t7:G0gTPFut0hqNmk7Bh/t871HumammirDqVemoQgoHaXXn7IAAcVyppTpEtI3vEe6ZsHeEaRfT8rDE/KW60L41iGluSWRZZG5L+xJgHDx8ZvlUBKbgPe4Qcz6XwVZ7aUU8rc971NN0tZn3MYZTsFcY865iUa3pjRMj69i8UPQm6rDYlApbDLWH79ex+Ygi7iBJVZ+N26/mrHELbdZWSJFyjdO6uTC8ANN4nZBJ2fkBVYi0KK4kkKSaNbqx2xqD9bBb"
        ],
        "X-MS-TrafficTypeDiagnostic": "DB6PR0902MB1829:",
        "X-Microsoft-Antispam-PRVS": "<DB6PR0902MB182958A32B93AB22113114FED6300@DB6PR0902MB1829.eurprd09.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:(6040522)(2401047)(8121501046)(5005006)(823301075)(3002001)(93006095)(93001095)(3231311)(944501410)(52105095)(10201501046)(149027)(150027)(6041310)(20161123562045)(20161123564045)(20161123560045)(2016111802025)(20161123558120)(6043046)(201708071742011)(7699016);\n\tSRVR:DB6PR0902MB1829; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0902MB1829; ",
        "X-Forefront-PRVS": "0772E5DAD5",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10019020)(346002)(366004)(376002)(136003)(39830400003)(396003)(199004)(189003)(478600001)(48376002)(68736007)(25786009)(4326008)(14444005)(386003)(1857600001)(105586002)(5660300001)(956004)(37156001)(2616005)(8936002)(81166006)(16586007)(52116002)(81156014)(186003)(476003)(316002)(53936002)(71446004)(7736002)(50226002)(97736004)(26005)(486006)(51416003)(6506007)(2906002)(8676002)(107886003)(6486002)(66066001)(86362001)(53416004)(6916009)(16526019)(3846002)(36756003)(6512007)(305945005)(47776003)(106356001)(6116002)(86152003)(6346003)(50466002);\n\tDIR:OUT; SFP:1102; SCL:1; SRVR:DB6PR0902MB1829; H:ubuntu.cgs.com; FPR:;\n\tSPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; ",
        "Received-SPF": "None (protection.outlook.com: cgstowernetworks.com does not\n\tdesignate permitted sender hosts)",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=yogev@cgstowernetworks.com; ",
        "X-Microsoft-Antispam-Message-Info": "WZT7x1jvbDJiSni3BxNG/DeZv4+aZP1WHGAwspb0+mAB+AB28guIj016ZwHpDT1rKFyEdSkb6fwCmMBh7ZaBE3AqyrCnTytHjVrirk6yNmdhiyG7hMPFCCt+2hZgEXt7820z+wPHQ/ov0HNAe1dcxhKmvakvnfgl4D7wAhdB9NZ0OyP6AlO/E6fO5YNyZbIyYvyvYuhm41D3COCNSqqWOWi0EUgk4cugwXq/E8MhRwFRXDbJHqP5LswB+lschayTIGLjQSno1z14wUzJsNPh+N3zsjkvd252rMmxkKctcls3Qc5i+fFbH2v1VZ9+0HKdadbncf7lzHdWktTE+cRPuGV5xQfF8XxiOrkNLpK+8no=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "cgstowernetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "22 Aug 2018 07:38:13.7526\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "a5e8acf4-cc90-4fc6-0756-08d60802380d",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "fc9e9498-07e8-4b82-b4cf-365bba23cbbf",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DB6PR0902MB1829",
        "Subject": "[dpdk-dev] [PATCH] vmxnet3: stats_reset implementation",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Signed-off-by: yogev ch <yogev@cgstowernetworks.com>\n---\n drivers/net/vmxnet3/vmxnet3_ethdev.c | 78 ++++++++++++++++++++++++++++++++++--\n drivers/net/vmxnet3/vmxnet3_ethdev.h |  3 ++\n 2 files changed, 78 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c\nindex 2613cd1..2348300 100644\n--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c\n+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c\n@@ -78,6 +78,7 @@ static int vmxnet3_dev_link_update(struct rte_eth_dev *dev,\n static void vmxnet3_hw_stats_save(struct vmxnet3_hw *hw);\n static int vmxnet3_dev_stats_get(struct rte_eth_dev *dev,\n \t\t\t\t  struct rte_eth_stats *stats);\n+static void vmxnet3_dev_stats_reset(struct rte_eth_dev *dev);\n static int vmxnet3_dev_xstats_get_names(struct rte_eth_dev *dev,\n \t\t\t\t\tstruct rte_eth_xstat_name *xstats,\n \t\t\t\t\tunsigned int n);\n@@ -120,6 +121,7 @@ static int vmxnet3_mac_addr_set(struct rte_eth_dev *dev,\n \t.stats_get            = vmxnet3_dev_stats_get,\n \t.xstats_get_names     = vmxnet3_dev_xstats_get_names,\n \t.xstats_get           = vmxnet3_dev_xstats_get,\n+\t.stats_reset          = vmxnet3_dev_stats_reset,\n \t.mac_addr_set         = vmxnet3_mac_addr_set,\n \t.dev_infos_get        = vmxnet3_dev_info_get,\n \t.dev_supported_ptypes_get = vmxnet3_dev_supported_ptypes_get,\n@@ -335,6 +337,10 @@ struct vmxnet3_xstats_name_off {\n \tmemset(hw->saved_tx_stats, 0, sizeof(hw->saved_tx_stats));\n \tmemset(hw->saved_rx_stats, 0, sizeof(hw->saved_rx_stats));\n \n+\t/* clear snapshot stats */\n+\tmemset(hw->snapshot_tx_stats, 0, sizeof(hw->snapshot_tx_stats));\n+\tmemset(hw->snapshot_rx_stats, 0, sizeof(hw->snapshot_rx_stats));\n+\n \t/* set the initial link status */\n \tmemset(&link, 0, sizeof(link));\n \tlink.link_duplex = ETH_LINK_FULL_DUPLEX;\n@@ -890,7 +896,49 @@ static int eth_vmxnet3_pci_remove(struct rte_pci_device *pci_dev)\n \tVMXNET3_UPDATE_RX_STAT(hw, q, pktsRxError, res);\n \tVMXNET3_UPDATE_RX_STAT(hw, q, pktsRxOutOfBuf, res);\n \n-#undef VMXNET3_UPDATE_RX_STATS\n+#undef VMXNET3_UPDATE_RX_STAT\n+}\n+\n+static void\n+vmxnet3_tx_stats_get(struct vmxnet3_hw *hw, unsigned int q,\n+\t\t\t\t\tstruct UPT1_TxStats *res)\n+{\n+\t\tvmxnet3_hw_tx_stats_get(hw, q, res);\n+\n+#define VMXNET3_REDUCE_SNAPSHOT_TX_STAT(h, i, f, r)\t\\\n+\t\t((r)->f -= (h)->snapshot_tx_stats[(i)].f)\n+\n+\tVMXNET3_REDUCE_SNAPSHOT_TX_STAT(hw, q, ucastPktsTxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_TX_STAT(hw, q, mcastPktsTxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_TX_STAT(hw, q, bcastPktsTxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_TX_STAT(hw, q, ucastBytesTxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_TX_STAT(hw, q, mcastBytesTxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_TX_STAT(hw, q, bcastBytesTxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_TX_STAT(hw, q, pktsTxError, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_TX_STAT(hw, q, pktsTxDiscard, res);\n+\n+#undef VMXNET3_REDUCE_SNAPSHOT_TX_STAT\n+}\n+\n+static void\n+vmxnet3_rx_stats_get(struct vmxnet3_hw *hw, unsigned int q,\n+\t\t\t\t\tstruct UPT1_RxStats *res)\n+{\n+\t\tvmxnet3_hw_rx_stats_get(hw, q, res);\n+\n+#define VMXNET3_REDUCE_SNAPSHOT_RX_STAT(h, i, f, r)\t\\\n+\t\t((r)->f -= (h)->snapshot_rx_stats[(i)].f)\n+\n+\tVMXNET3_REDUCE_SNAPSHOT_RX_STAT(hw, q, ucastPktsRxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_RX_STAT(hw, q, mcastPktsRxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_RX_STAT(hw, q, bcastPktsRxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_RX_STAT(hw, q, ucastBytesRxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_RX_STAT(hw, q, mcastBytesRxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_RX_STAT(hw, q, bcastBytesRxOK, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_RX_STAT(hw, q, pktsRxError, res);\n+\tVMXNET3_REDUCE_SNAPSHOT_RX_STAT(hw, q, pktsRxOutOfBuf, res);\n+\n+#undef VMXNET3_REDUCE_SNAPSHOT_RX_STAT\n }\n \n static void\n@@ -1005,7 +1053,7 @@ static int eth_vmxnet3_pci_remove(struct rte_pci_device *pci_dev)\n \n \tRTE_BUILD_BUG_ON(RTE_ETHDEV_QUEUE_STAT_CNTRS < VMXNET3_MAX_TX_QUEUES);\n \tfor (i = 0; i < hw->num_tx_queues; i++) {\n-\t\tvmxnet3_hw_tx_stats_get(hw, i, &txStats);\n+\t\tvmxnet3_tx_stats_get(hw, i, &txStats);\n \n \t\tstats->q_opackets[i] = txStats.ucastPktsTxOK +\n \t\t\ttxStats.mcastPktsTxOK +\n@@ -1022,7 +1070,7 @@ static int eth_vmxnet3_pci_remove(struct rte_pci_device *pci_dev)\n \n \tRTE_BUILD_BUG_ON(RTE_ETHDEV_QUEUE_STAT_CNTRS < VMXNET3_MAX_RX_QUEUES);\n \tfor (i = 0; i < hw->num_rx_queues; i++) {\n-\t\tvmxnet3_hw_rx_stats_get(hw, i, &rxStats);\n+\t\tvmxnet3_rx_stats_get(hw, i, &rxStats);\n \n \t\tstats->q_ipackets[i] = rxStats.ucastPktsRxOK +\n \t\t\trxStats.mcastPktsRxOK +\n@@ -1044,6 +1092,30 @@ static int eth_vmxnet3_pci_remove(struct rte_pci_device *pci_dev)\n }\n \n static void\n+vmxnet3_dev_stats_reset(struct rte_eth_dev *dev)\n+{\n+\tunsigned int i;\n+\tstruct vmxnet3_hw *hw = dev->data->dev_private;\n+\tstruct UPT1_TxStats txStats;\n+\tstruct UPT1_RxStats rxStats;\n+\n+\tVMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD, VMXNET3_CMD_GET_STATS);\n+\n+\tRTE_BUILD_BUG_ON(RTE_ETHDEV_QUEUE_STAT_CNTRS < VMXNET3_MAX_TX_QUEUES);\n+\n+\tfor (i = 0; i < hw->num_tx_queues; i++) {\n+\t\tvmxnet3_hw_tx_stats_get(hw, i, &txStats);\n+\t\tmemcpy(&hw->snapshot_tx_stats[i], &txStats,\n+\t\t\tsizeof(hw->snapshot_tx_stats[0]));\n+\t}\n+\tfor (i = 0; i < hw->num_rx_queues; i++) {\n+\t\tvmxnet3_hw_rx_stats_get(hw, i, &rxStats);\n+\t\tmemcpy(&hw->snapshot_rx_stats[i], &rxStats,\n+\t\t\tsizeof(hw->snapshot_rx_stats[0]));\n+\t}\n+}\n+\n+static void\n vmxnet3_dev_info_get(struct rte_eth_dev *dev __rte_unused,\n \t\t     struct rte_eth_dev_info *dev_info)\n {\ndiff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.h b/drivers/net/vmxnet3/vmxnet3_ethdev.h\nindex d3f2b35..5bc3a84 100644\n--- a/drivers/net/vmxnet3/vmxnet3_ethdev.h\n+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.h\n@@ -98,6 +98,9 @@ struct vmxnet3_hw {\n #define VMXNET3_VFT_TABLE_SIZE     (VMXNET3_VFT_SIZE * sizeof(uint32_t))\n \tUPT1_TxStats\t      saved_tx_stats[VMXNET3_MAX_TX_QUEUES];\n \tUPT1_RxStats\t      saved_rx_stats[VMXNET3_MAX_RX_QUEUES];\n+\n+\tUPT1_TxStats          snapshot_tx_stats[VMXNET3_MAX_TX_QUEUES];\n+\tUPT1_RxStats          snapshot_rx_stats[VMXNET3_MAX_RX_QUEUES];\n };\n \n #define VMXNET3_REV_3\t\t2\t\t/* Vmxnet3 Rev. 3 */\n",
    "prefixes": []
}