get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 44673,
    "url": "https://patches.dpdk.org/api/patches/44673/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1536838528-11800-17-git-send-email-igor.russkikh@aquantia.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": "<1536838528-11800-17-git-send-email-igor.russkikh@aquantia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1536838528-11800-17-git-send-email-igor.russkikh@aquantia.com",
    "date": "2018-09-13T11:35:24",
    "name": "[v2,17/21] net/atlantic: device statistics, xstats",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "31edadd6e5c2c94f7976e2c4ad514dfa33f1495b",
    "submitter": {
        "id": 1124,
        "url": "https://patches.dpdk.org/api/people/1124/?format=api",
        "name": "Igor Russkikh",
        "email": "igor.russkikh@aquantia.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/1536838528-11800-17-git-send-email-igor.russkikh@aquantia.com/mbox/",
    "series": [
        {
            "id": 1307,
            "url": "https://patches.dpdk.org/api/series/1307/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=1307",
            "date": "2018-09-13T11:35:08",
            "name": "[v2,01/21] net/atlantic: atlantic PMD driver skeleton",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/1307/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/44673/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/44673/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 7C2E31B053;\n\tThu, 13 Sep 2018 13:36:21 +0200 (CEST)",
            "from NAM01-SN1-obe.outbound.protection.outlook.com\n\t(mail-sn1nam01on0081.outbound.protection.outlook.com [104.47.32.81])\n\tby dpdk.org (Postfix) with ESMTP id 7BB869B6B\n\tfor <dev@dpdk.org>; Thu, 13 Sep 2018 13:36:11 +0200 (CEST)",
            "from ubuntubox.rdc.aquantia.com (95.79.108.179) by\n\tBLUPR0701MB1650.namprd07.prod.outlook.com (2a01:111:e400:58c6::20)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1143.15;\n\tThu, 13 Sep 2018 11:36:09 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=AQUANTIA1COM.onmicrosoft.com; s=selector1-aquantia-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=/PKq6GVihzds82oKqFVpXBSxdgrfoEcpcGA7PJi1uG0=;\n\tb=fiXxh4qEzVF2OvoPG2/JbVUPw2xyIoIG2AJNqVRBOQYE7dtDF8fl4I6UQRrjIO4sIO6Yo+Xke4lYKE+AbqxmCRUC0q0qI82pgTOHimRm1TJfDwm9pF0HmDGveN71v+FlYJhRSzprxrkcpVbJQ0qAL864UbYNuuK0zXlJuNRBCB0=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Igor.Russkikh@aquantia.com; ",
        "From": "Igor Russkikh <igor.russkikh@aquantia.com>",
        "To": "dev@dpdk.org",
        "Cc": "pavel.belous@aquantia.com,\n\tigor.russkikh@aquantia.com",
        "Date": "Thu, 13 Sep 2018 14:35:24 +0300",
        "Message-Id": "<1536838528-11800-17-git-send-email-igor.russkikh@aquantia.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1536838528-11800-1-git-send-email-igor.russkikh@aquantia.com>",
        "References": "<1536838528-11800-1-git-send-email-igor.russkikh@aquantia.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[95.79.108.179]",
        "X-ClientProxiedBy": "VI1PR0202CA0026.eurprd02.prod.outlook.com\n\t(2603:10a6:803:14::39) To BLUPR0701MB1650.namprd07.prod.outlook.com\n\t(2a01:111:e400:58c6::20)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "7ff73a53-57cd-4be8-071b-08d6196d1a27",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020);\n\tSRVR:BLUPR0701MB1650; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BLUPR0701MB1650;\n\t3:beepcLGkUDz4K7lL7pn9tL8b5M6W16dDHQr3qQHRcrGsOTcF2/sXDXCMP7ldXZwwWZSLaIVIRTchE4WTcQ305QWylzC6r01j1xGw0doPMzsclWNV2nJf5qDxupTvqGH8gjnj4HaE/418vYkpPnGgyJUcSCZyWECXEWws2iZocO+MvXj7kKWaBTxIJNn10E5/xsF0OkF0rDjWgvHpl4ayJir+A7YSnha96gLiVVvxT8tGqCiYAWv42bzLI19hInOF;\n\t25:9BDWjfs9Z8k7OwEYAcbgNnE1N3CbUcr/BKeBIfpADfK/ANwxggkx0SpbUpzPJbsrkod8Z4rEZGrqi/WAc6FBxpTU9uBDb+7yOQzyXZdmCUEEqDZXwx15GzZksAYKvU2Wo8h9t7Q0Qb3ZUJmsCjGowRyNU/m811wCwsMTtWFFkAEBIRf2rPCvH8XO/5i36UaAkpsnFJNAh2FXPTHSmKvK8DC9TW36g+z4jVu3qA+ffWKZJ7keo4FDJHfhrBlw1c/jVB+QdzgS67l2tFkisFTQcuUNcX+C6VCFtEumPY40CZlpNzNrrGRHHl72mJcmgkAzcSJLxwmgeqvtN4wPMev5FE7q3xXBfclcEC34qmFedPU=;\n\t31:ab03YMyNQKZ0gfgMza6coqzDDlQSHLY6mN9cLWpEn7cTWqQbtg1meQAWIwEl5xXZZm2A/6ebGZDi++Ej4U0t1g/T8hY0gYlRJHY7fwfI3uFhxG1PvKz1GSe/+NynPRvXyTd+41C8wiheeIjCE/edWkH0+dtpD9r1lZqhPkTPhz/viQBkw3FD9QEEcuNV7nfvP8+1tM4E7bbVCm2fydAr2/ONlhYccl86DSeT9Wtaur4=",
            "1; BLUPR0701MB1650;\n\t20:3DzREE3tn7IzZZpmAjtH9P8g1tPiaveE3f0ughPDQv5eB8LuOJAk+u3DIzE8H1WF7xpZvs+uGWvHwqHjEmKWMtarZ5LRf74aVuw+RG613ovdvgQ5JOxFqfY4iKRwnrXNo+lUVJZSR1o0Z3GXMOqVUY1mndlAEhHTN5aI8IjXAmMoP3Obsr4L2Mlp/DlcQF4tD2Ovdvto9Xf3mNjcxT0GoTCe5mh6Vl1nMZWVAYmagZiif3Lzn8xJLk/qCRRl7GwXkg9ASKtM1D3BfYEV6fuPSe/vE/yOEFzACPJDD+hRcr9/LsB1Iuq2/3xr16h+3xNfMfzRL/rQwlOsjDVD+znaIb1AklOEoDzDcQibRF3XA9hCy36lptfX2czdZ0kzUXWwcQuzI2nCgnYecUGe4fxxvOxmBY1RRyC43CO3ZTJRoY1OhwRSFGxuJxKzIr00b7sfQcsZXN0d3AmawuZc9Flytm0fC75gzHZTpCGJWNrxzmnX0VTiT9KnfmpyLX9R5dyd;\n\t4:FpdMKVZ2XCPr/xyCYjiVw/VXEgnbU+7GfnmTTuowsBtTSBJXVbnTaxb7VtT6HMzaxvvkevMmNokNONnfRv2QH3WJ1QopQAkEof8Ja2o+Lv5OZQwVdramsWLDOPoQNU3HsOg0eiVYIeCj516MDY3LnpapBCntA1KG4m6BhdgH01+e2Q9kdyy4Q4Xkbzw7E4kFgV49CmNN9c8k/WW57qcPs5HzrbenlU3uMTRGOuH/gzrsrtlycbQ0chObE4YYdzLFtOV9oxVLvLt3MD3++HVpSQ==",
            "=?us-ascii?Q?1; BLUPR0701MB1650;\n\t23:N75fvu0StTIPxFvq+FD10OAKFuMGYN1u4GRDlBs?=\n\tIf71Ya3ctDuSxArdq1Oq/FGRvowWAbKvnKmyZy89nwVphUisSGvMdpsWShtWLptjfhVMIBXLIee+XxyrQ46l/p7JnlvOkEjwXhLe/CHUUtqtF6yCEDF9D0yJSqFDCvzo2pU1U1Hptb+Jl/1vj6XGokldS8/OHcdGbOH2Ww1xMnDVJuoaTyqA0sCHTVqfPLQ3WwU2/O+zmWjdLMo8sgIuHEKPO+jUcPb1hizcX8G+LsVrZWepPwDCIaVt/8XjqDWjzSkK5uxNRvJ6eXtylufgNoR82LTO+5OUrcj1j+NbISAwAFK2HAdEovY+AEYWPWsd1q053S5AO0ygUNEZtWyw98flS66xeMkuKzhiR7GpukF0gyjf4RY5ka73Dlehz/x5F43UMgoOaN6sYlwrfFCmjTe1Oxhc6xJQU/oA9cVePlabtPjqgz7F3ouLGIlSZgqWWlqe5dTduLb8ZR9S0kreiSKLRfg0OjiAIs938Sx6rZb99zBxV1In2GVzLvS0Q8/2PKyA5ml5Be2rmWBxdOeDH3m7ITVgBfUk7NbTo7E76MkvuBtpdD+/AY6wGDbdt2nY5Chg6uqsHK7ihSkKSvxJeJ1UaoQeQIlxTkpPYRE2yxdwmKjjnoOj4c13cb2U2BPNyJFdWZtCvhv0697HDnmZHa5cM+YTqUAyIea9jgOGjRRkIOV7/FiKVON14qwNH+RoF3r+atoCTN/t7DC4uZAz7I9WWZkU95h6WX3JeWT8iqfYe9GGY26O+iex3+FJdvF9F9JaLD4O+vl2AFFspuIrtlQRE0IvGYvKwfg8wzq/xMEmLk42lsTxY8FDI9aoslNVc8FoyAn66ZCzAVyZDJH8bHJIG9dFqiDSab//uDUYjArB96/lN7s8AkNbNGs8cE9wYozagFtk99ab0Q4fIABBhwILFsnoIWsEs0t6G48OkQuvp+a9tE0D9LNA47Iz2BVhlyccBHgeXWF2aBOak4rLM8W7x6xqc3JqvwEG1rGb90zN+i0UFaR0LlN3gOyQVTckVtBTziCfrIYH62lyWtRHLWi93hsmg+HPTTHJ+I6LDHv+l49DlMhvi8rByzYkIxTP9GrLdhDgxjnOcub8l1D3U034ffAltTd5bw9UH2P5F1TqLV/AtpWd54PXNRdZ99ZsD35U+b7eLvoC+M+bzK/fxK3/92ERuz6lQjhgqaTreEmfLQqnQAxpSkBGO8Fz6sricqPDGTtrcRiiiWLgECMcKzOxo",
            "1; BLUPR0701MB1650;\n\t6:X0ki236tWFQEXxwstbKryPvw4LnE55i7E1x7Iy7QhWDgOuTNW37mLblxv3PjTcsVUH3LdpObczmfU1eeAQXpTuJHAJiZVT2BjnT18JCJFfhjSf7eMFmCf2k7+on8LHjykqhAkAqD8P6vL2Dh/CxD2D6GEBTyYq8tWSZmbpalfz5MR/RerbK41+CSenpHvPdaPFs9vCebwSV+vfJ/7l2NeRdgQDtYhjMgTGWt4kuloiKLNiRXpkwg2KEipDd4ASjtxnYDUjGEbJ09HEeECZ6wcNua7+4Gm4I36iWZqgXKT4+hhPc6diShOEZ24dQ/U2XD+7Z9duaiDJ6fligyr1Ewj3UWniHE3iWYiNmEMoqtaqdlNbA1dLAok8s2BweNFEkYZ4akw9xjF6v1ecHxEO3YkubXZKKvOAqGrAdiHbZHunDf/x0hhgYUM3EwsTArsQn4+ORjaLhetKUzt3jf5DJGmA==;\n\t5:yziqUj3FVYwhrGUtA1t15Tu/HIKXpsE/jnLw2lXpYu3WRwxp5SjgdQ4dAOTLon2D66XprexOvMyhjofbSg+/QlbzemUIKFzqbV+pz0+DZAbfjR2Zn07biTlLE1h7M6PCTGcj5o1PSu+lipHfdp20rB7jdKEn6T2WvTdwK4gVstU=;\n\t7:jv0PFZGUA83XehAAZLVgCrHRJNojlp23aiIIJ3BqdGQCkkUM7GMc6+vgrEPpN0a9sAarMNX3d+9NuLZUelb48Z9cAvducsSt9gOP0gh4qnlXNL+C76g90vPA3Hj+nB8su5BwjPIAIkdQaBiEhp+sWmQRJkPKTLF3IAo3xBa8PNrt0nBZLVOTi+KmjG6BNgImm6LNDPQ2SMePMhZthGVi1CfEd8DkHk6t+wTrD+R6AL3c2CMsKZSq13HvRh4TMZ/F"
        ],
        "X-MS-TrafficTypeDiagnostic": "BLUPR0701MB1650:",
        "X-Microsoft-Antispam-PRVS": "<BLUPR0701MB16504AF63B32A3BC606A833B981A0@BLUPR0701MB1650.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:(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231311)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201708071742011)(7699050);\n\tSRVR:BLUPR0701MB1650; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1650; ",
        "X-Forefront-PRVS": "07943272E1",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(39840400004)(366004)(396003)(376002)(136003)(346002)(199004)(189003)(6666003)(6916009)(97736004)(8936002)(68736007)(25786009)(50226002)(81166006)(81156014)(4326008)(107886003)(6486002)(51416003)(2906002)(53936002)(5660300001)(36756003)(86362001)(316002)(52116002)(8676002)(16586007)(7736002)(305945005)(11346002)(446003)(476003)(956004)(47776003)(72206003)(66066001)(44832011)(478600001)(486006)(186003)(26005)(16526019)(14444005)(386003)(48376002)(2351001)(106356001)(2361001)(2616005)(3846002)(105586002)(50466002)(7696005)(6116002)(76176011);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1650;\n\tH:ubuntubox.rdc.aquantia.com; \n\tFPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; ",
        "Received-SPF": "None (protection.outlook.com: aquantia.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "xcNb1d/k4seA67xpAxmhaGYeVtLLZ/PYEJ6CMNzYKVUJPVzCKgj0kJfLDQLc2U1xmrnc/TTPJHx+YHvqsXoZMAfULpqEVzWhzRRwkWKzOV9KnMf6agEmX2q1H3Q0WMWRPNzig875hmGKldP7UeAII+e3WuATXFJAKgV+tM7rr0WCqydf9oyqOUeE1hVlByDZTTNZByA29cmSCVGn1fu+VlsYrS7y0eR5X4XiFV9TsDaW6qjE9yxtpxflB0m49ii9qg1Rsd2d+DC0LPt0/0JDi+mFxP4pcXH2abpjUAaRugLbhzR5sVl8c37YapoWhDGU/0Dl3DVcdHQmkiJEg6mBQfijpngC30PjEMZWVf+fuJ8=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "aquantia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "13 Sep 2018 11:36:09.1471\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "7ff73a53-57cd-4be8-071b-08d6196d1a27",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "83e2e134-991c-4ede-8ced-34d47e38e6b1",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BLUPR0701MB1650",
        "Subject": "[dpdk-dev] [PATCH v2 17/21] net/atlantic: device statistics, xstats",
        "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: Igor Russkikh <igor.russkikh@aquantia.com>\n---\n drivers/net/atlantic/atl_ethdev.c | 136 ++++++++++++++++++++++++++++++++++++++\n 1 file changed, 136 insertions(+)",
    "diff": "diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c\nindex 44bdbcbb3..37f32c421 100644\n--- a/drivers/net/atlantic/atl_ethdev.c\n+++ b/drivers/net/atlantic/atl_ethdev.c\n@@ -59,6 +59,19 @@ static void atl_dev_allmulticast_enable(struct rte_eth_dev *dev);\n static void atl_dev_allmulticast_disable(struct rte_eth_dev *dev);\n static int  atl_dev_link_update(struct rte_eth_dev *dev, int wait);\n \n+static int atl_dev_xstats_get_names(struct rte_eth_dev *dev __rte_unused,\n+\t\t\t\t    struct rte_eth_xstat_name *xstats_names,\n+\t\t\t\t    unsigned int size);\n+\n+static int atl_dev_stats_get(struct rte_eth_dev *dev,\n+\t\t\t\tstruct rte_eth_stats *stats);\n+\n+static int atl_dev_xstats_get(struct rte_eth_dev *dev,\n+\t\t\t      struct rte_eth_xstat *stats, unsigned int n);\n+\n+static void atl_dev_stats_reset(struct rte_eth_dev *dev);\n+static void atl_dev_xstats_reset(struct rte_eth_dev *dev);\n+\n static int atl_dev_queue_stats_mapping_set(struct rte_eth_dev *eth_dev,\n \t\t\t\t\t     uint16_t queue_id,\n \t\t\t\t\t     uint8_t stat_idx,\n@@ -184,6 +197,34 @@ static const struct rte_eth_desc_lim tx_desc_lim = {\n \t.nb_mtu_seg_max = ATL_TX_MAX_SEG,\n };\n \n+#define ATL_XSTATS_FIELD(name) { \\\n+\t#name, \\\n+\toffsetof(struct aq_stats_s, name) \\\n+}\n+\n+struct atl_xstats_tbl_s {\n+\tconst char *name;\n+\tunsigned int offset;\n+};\n+\n+static struct atl_xstats_tbl_s atl_xstats_tbl[] = {\n+\tATL_XSTATS_FIELD(uprc),\n+\tATL_XSTATS_FIELD(mprc),\n+\tATL_XSTATS_FIELD(bprc),\n+\tATL_XSTATS_FIELD(erpt),\n+\tATL_XSTATS_FIELD(uptc),\n+\tATL_XSTATS_FIELD(mptc),\n+\tATL_XSTATS_FIELD(bptc),\n+\tATL_XSTATS_FIELD(erpr),\n+\tATL_XSTATS_FIELD(ubrc),\n+\tATL_XSTATS_FIELD(ubtc),\n+\tATL_XSTATS_FIELD(mbrc),\n+\tATL_XSTATS_FIELD(mbtc),\n+\tATL_XSTATS_FIELD(bbrc),\n+\tATL_XSTATS_FIELD(bbtc),\n+};\n+\n+\n static const struct eth_dev_ops atl_eth_dev_ops = {\n \t.dev_configure\t      = atl_dev_configure,\n \t.dev_start\t      = atl_dev_start,\n@@ -204,6 +245,12 @@ static const struct eth_dev_ops atl_eth_dev_ops = {\n \n \t.get_reg              = atl_dev_get_regs,\n \n+\t/* Stats */\n+\t.stats_get\t      = atl_dev_stats_get,\n+\t.xstats_get\t      = atl_dev_xstats_get,\n+\t.xstats_get_names     = atl_dev_xstats_get_names,\n+\t.stats_reset\t      = atl_dev_stats_reset,\n+\t.xstats_reset\t      = atl_dev_xstats_reset,\n \n \t/* LEDs */\n \t.dev_led_on           = atl_dev_led_on,\n@@ -390,6 +437,9 @@ eth_atl_dev_init(struct rte_eth_dev *eth_dev)\n \t\t\t(u8 *)&eth_dev->data->mac_addrs[0]) != 0)\n \t\treturn -EINVAL;\n \n+\t/* Reset the hw statistics */\n+\tatl_dev_stats_reset(eth_dev);\n+\n \trte_intr_callback_register(intr_handle,\n \t\t\t\t   atl_dev_interrupt_handler, eth_dev);\n \n@@ -699,6 +749,92 @@ atl_dev_reset(struct rte_eth_dev *dev)\n }\n \n \n+static int\n+atl_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)\n+{\n+\tstruct atl_adapter *adapter =\n+\t\t(struct atl_adapter *)dev->data->dev_private;\n+\tstruct aq_hw_s *hw = &adapter->hw;\n+\tstruct atl_sw_stats *swstats = &adapter->sw_stats;\n+\tunsigned int i;\n+\n+\thw->aq_fw_ops->update_stats(hw);\n+\n+\t/* Fill out the rte_eth_stats statistics structure */\n+\tstats->ipackets = hw->curr_stats.dma_pkt_rc;\n+\tstats->ibytes = hw->curr_stats.dma_oct_rc;\n+\tstats->imissed = hw->curr_stats.dpc;\n+\tstats->ierrors = hw->curr_stats.erpt;\n+\n+\tstats->opackets = hw->curr_stats.dma_pkt_tc;\n+\tstats->obytes = hw->curr_stats.dma_oct_tc;\n+\tstats->oerrors = 0;\n+\n+\tstats->rx_nombuf = swstats->rx_nombuf;\n+\n+\tfor (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS; i++) {\n+\t\tstats->q_ipackets[i] = swstats->q_ipackets[i];\n+\t\tstats->q_opackets[i] = swstats->q_opackets[i];\n+\t\tstats->q_ibytes[i] = swstats->q_ibytes[i];\n+\t\tstats->q_obytes[i] = swstats->q_obytes[i];\n+\t\tstats->q_errors[i] = swstats->q_errors[i];\n+\t}\n+\treturn 0;\n+}\n+\n+static void\n+atl_dev_stats_reset(struct rte_eth_dev *dev)\n+{\n+\tstruct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\n+\thw->aq_fw_ops->update_stats(hw);\n+\n+\t/* Reset software totals */\n+\tmemset(&hw->curr_stats, 0, sizeof(hw->curr_stats));\n+}\n+\n+static int\n+atl_dev_xstats_get_names(struct rte_eth_dev *dev __rte_unused,\n+\t\t\t struct rte_eth_xstat_name *xstats_names,\n+\t\t\t unsigned int size)\n+{\n+\tunsigned int i;\n+\n+\tif (!xstats_names)\n+\t\treturn RTE_DIM(atl_xstats_tbl);\n+\n+\tfor (i = 0; i < size && i < RTE_DIM(atl_xstats_tbl); i++)\n+\t\tsnprintf(xstats_names[i].name, RTE_ETH_XSTATS_NAME_SIZE, \"%s\",\n+\t\t\tatl_xstats_tbl[i].name);\n+\n+\treturn size;\n+}\n+\n+static int\n+atl_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats,\n+\t\t   unsigned int n)\n+{\n+\tstruct atl_adapter *adapter =\n+\t\t(struct atl_adapter *)dev->data->dev_private;\n+\tstruct aq_hw_s *hw = &adapter->hw;\n+\tunsigned int i;\n+\n+\tif (!stats)\n+\t\treturn 0;\n+\n+\tfor (i = 0; i < n && i < RTE_DIM(atl_xstats_tbl); i++) {\n+\t\tstats[i].id = i;\n+\t\tstats[i].value = *(u64 *)((uint8_t *)&hw->curr_stats +\n+\t\t\t\t\tatl_xstats_tbl[i].offset);\n+\t}\n+\n+\treturn n;\n+}\n+\n+static void\n+atl_dev_xstats_reset(struct rte_eth_dev *dev __rte_unused)\n+{\n+}\n /* return 0 means link status changed, -1 means not changed */\n static int\n atl_dev_link_update(struct rte_eth_dev *dev, int wait __rte_unused)\n",
    "prefixes": [
        "v2",
        "17/21"
    ]
}