get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 44412,
    "url": "http://patches.dpdk.org/api/patches/44412/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1536333719-32155-18-git-send-email-igor.russkikh@aquantia.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": "<1536333719-32155-18-git-send-email-igor.russkikh@aquantia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1536333719-32155-18-git-send-email-igor.russkikh@aquantia.com",
    "date": "2018-09-07T15:21:55",
    "name": "[17/21] net/atlantic: device statistics, xstats",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "f26695fce588827ad7ff3b42660098d65d10149a",
    "submitter": {
        "id": 1124,
        "url": "http://patches.dpdk.org/api/people/1124/?format=api",
        "name": "Igor Russkikh",
        "email": "igor.russkikh@aquantia.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1536333719-32155-18-git-send-email-igor.russkikh@aquantia.com/mbox/",
    "series": [
        {
            "id": 1228,
            "url": "http://patches.dpdk.org/api/series/1228/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1228",
            "date": "2018-09-07T15:21:39",
            "name": "net/atlantic: Aquantia aQtion 10G NIC Family DPDK PMD driver",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/1228/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/44412/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/44412/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 DAF546CC3;\n\tFri,  7 Sep 2018 17:23:54 +0200 (CEST)",
            "from NAM03-BY2-obe.outbound.protection.outlook.com\n\t(mail-by2nam03on0056.outbound.protection.outlook.com [104.47.42.56])\n\tby dpdk.org (Postfix) with ESMTP id B27B95B38\n\tfor <dev@dpdk.org>; Fri,  7 Sep 2018 17:23:36 +0200 (CEST)",
            "from ubuntubox.rdc.aquantia.com (95.79.108.179) by\n\tBLUPR0701MB1652.namprd07.prod.outlook.com (2a01:111:e400:58c6::22)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1122.16;\n\tFri, 7 Sep 2018 15:23:33 +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=fFsc9iucHgd/dGVDSipx1RyFyU8gis6JEuvMbS1ZRLc=;\n\tb=qlGUqNJj8OZr3Ts3R3HE7Vbq8XtHf/ETVSBeEBIZrOGY+K9ECkwXNGkbJaPPEFmLZvYGhXgE9NkUqQbhHmMK4G/wq/jMEsUZyZHBWWvGq1OG+DW1b+NzAScTdavanCJIvqrayGOg6KFf0YqWuXAsos3Ur91q+wt/Ni0LPMRVvNM=",
        "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, Nadezhda.Krupnina@aquantia.com,\n\tigor.russkikh@aquantia.com, Simon.Edelhaus@aquantia.com,\n\tCorey Melton <comelton@cisco.com>, Ashish Kumar <ashishk2@cisco.com>",
        "Date": "Fri,  7 Sep 2018 18:21:55 +0300",
        "Message-Id": "<1536333719-32155-18-git-send-email-igor.russkikh@aquantia.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1536333719-32155-1-git-send-email-igor.russkikh@aquantia.com>",
        "References": "<1536333719-32155-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": "BN6PR20CA0060.namprd20.prod.outlook.com\n\t(2603:10b6:404:151::22) To BLUPR0701MB1652.namprd07.prod.outlook.com\n\t(2a01:111:e400:58c6::22)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "a0312514-a25f-42fa-7d74-08d614d5e053",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020);\n\tSRVR:BLUPR0701MB1652; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BLUPR0701MB1652;\n\t3:e50KKz3Y2ATfIfoZ2Q7vcfpw/dxm2pBVEi8+81TVKikM4aD1EpyFXq1AimMgqcvJrZ/l4hRZThncCMG3jnkas8BEFQEh59RjL8RenHupGDZQV96qGoW9IwKPe1p93/l/JnZ72ntnAxY2j9gjgp9sojzhM4JPLkfBa8gegnCU9oaaq+RdH0cqIPLTtA8G6Bc7OFi3KNKfNR7qgAfqagdv3P7LpKInP4tt2qJ4NXxpuySAAG51sa1LkyFhhabkcSBn;\n\t25:WkgVxoxLJWlrtJ3mP3JkwbX4ip63cw/DkC68xtkI5M5cuUxiS+QY0f+3h8JEg5IG6aMykrO2JxQVcb97xVVRGpohQvew4UlA9ymVRgRuR+AmFhgdYoAitEw/X/LhE5GmsrS2G8gEfkipjTZVarXWKRNyFiNdWAs2dWLT7ij+Lsd9fvT3V6TNP4zJmd15SlqDynOeE4DudiY3g2vnet6pzDLxxecIzN3/mMftT6r51Fl6MnJd/atP4PmoDB4AscqA3jOd3IDr/ivYj8qh+fJt0jslh8W+WXcrmE4ycgd/lwqOlicREmSWA2Es42qLniEwcM5ojJLMxgsS44QGnk8WKQ==;\n\t31:h35yPl14gRY/HkAHY6PEYu1BeG+RKOkTuuhahp5GGZsWXnsK6JMd4mWpGhC/hIq10ownFdKyIxUqCmY8khQR2vEtV/BB7AMz7ejB076qLf1AmmSIcQzMG/ENn43tWV5OTvKS6AYZfGEedIMYVWeuxXqHsMTP2vzIb2BbH6H8DtdaahziZr6iWpqFAQJob3zLhkDaRsQgn42df9CrsPHlrpgpNQUWnkGGzeCJyOnZ3Ds=",
            "1; BLUPR0701MB1652;\n\t20:MuIvfRDgByd3TFOo/KUj4q0j8IR/DWSLtVzWdyvKb0T3t91leZsVK777fhX7FDto+N7w/tKyH8nXLw9UOClcsQ/Mq2XX461BcWMTeZUBkhNGtZSuuILvMJqCBNJIBuGn6oRqunvPAKWbvIAHUNN2AEEzdUkZhawAhbMZmCvFa4WJwTyEyXrAzx5+V2wCTBePg9Z+WAiaamh9HPyNQunMvpY478eno4uDGRCiJbnSkwPVanLDcsmopgX9ClYyQLw2caMzCay6b+23bszhiqmOUSYzfzP8bH0GojKLxVAFkkA1pQAqA0rfKimXJMKLL1TfT5Z5Yem6TfOV21HWCVoUYho59qEic5TndSZVqq8FQhWTUJxNraeN8YVKKo9THzl00zcVydTJLaBoMa+dHgxbdXe/EvBVyEzB2GRJMB+BXkul06BiRcELPAzOYWu2cN5faRM7J0g4MNhsnyAWz7x2nqZSdhlFFwY4icK9eyUjBhhJ3tbaxxE91dZvo8NNqPs4;\n\t4:M8fUVEvD2w7mxiL4yd7v7Ec+KMGsGTZoaL9IZiBNHAnF4zCgCKGOi5ZlTeQafcb7AlJZJqaYeVQQ4AveXjWs4UHz3Rp2dEHF07QlWV0GPmCP+LqHBksLujE6S99X5ppH2H3EkbENLUtgZcXzlLSRbR8siMP+/BqIzVHNEnC6KBmsNNZDNwj3aWrrhBZ63bpfmu7usuViIK8NhJIS9Y0z/TPv8JTc9YHgJTJVs0bjyjwFI9ui1WXYQBLwQpOc4vybWdnoMfF/7kr5i5455gBN8A==",
            "=?us-ascii?Q?1; BLUPR0701MB1652;\n\t23:Rv4xCl28EIYitsWd7R0sw5Ebbn8v7/qWud0vhEP?=\n\tFJRibV8KyjBj45xBUpTYypZP6eVRTrcKwVTDiwo95NOc6IdMfLIl0Rb1+/Tc/aKZdlgKrOa0lXyFRKaeXHhNuXGNaI4yCj4tCIZpNkYMhlq/Wkngs1F3ln+9NXP1ph2ySTH0HGVh5nJhkclwkkZolFfhbaiS/v1to53ZNs5tQ4jgfC1wcm4bYHsnFz7I3iGOLlTwVUhhJps/DA6teVc+K5eXOH6wLwRf64fLKjM3mROz8Y60N3sfzBXslYHF41KENlWSql6lhrvrmf80eiADH7+dYe9LD59E4Fe6GxVeOWkiGuRYwI+oX4XB/oJzx/BgImX6fvnXU3xwfUFpndTpKx7wt64Yon3igvxWPTPcQixln9xDudj4A7IFmtEQzYArk242PpJIDk+8jserufnpFdRaIYf2KMdTDVMRDtkrdzY92r8vm6dOX8lkXkAMIUsen3by2VCLbmqN/YKCtP1yKs5yl4XVSbyUkdNjibuOkwVSt58HSOK9VPICZpOTuCc+KCM8zE+m3kwRB64bT0sPwl5msHSBcWHB9XEkAMhI4G4UKjx2wv6l/BnRes6tNUXhq0cNrTLrBtzd99hX1sGP3Hn8FR9wrpXUnNinbOwaLZ0k5h+ZX4BSXDR3z+ZbtaHuJIGZiHhk7dNC3IZ0DJ2cmp6TFB/cpbmHCSg8Pq6xR40DocCuIb+JbMifvZa4MykZANqH3johLONZMPXSrgGIuhMS0kc5u5U0lD+yYz310iB4Wg1TWVaIrovwRdL/JhixTOOQSYU/GT+WaX+kSPosPRSqo41J5nJlyuB2Mh6QFmDdM26efuUlMlmaN2J8hAs0vL7YMu3w/pBoEnFAqbT8soPB9aOslcjpyd06FjAdV18oh8OY4oCRMzTOepSJv4I0AwfNXTA60PeWXwWLuQ33k33N/9a9v9pOU9inCkDiHfXX+ucwgQK+utdK313d4kd36YtbPkt1itTqGpw8UFur/UTXvwoJjm9iZKMABQe2Kg2AoGfRUR0fuD6KCktgb7jet4JLFZMwx1Itb+QJNf5mGeR60G+FXrjw4WDigC2pQD9z3OVNhU+Cbm7N2hMMRscHLljr5Mw8rVxLdG/hE8SNNA9H/xcd0C1Z2RGFUcBBOObokSP6YU9+V58xwCPczd2m2BUofaFjACPQmzlZPP7fMkkSlaicbmAsgsbY5ghZrZjLo2VzRZzIzNRQa97Awky/3+uguv5OKovmiq8uHqCXuhUaI",
            "1; BLUPR0701MB1652;\n\t6:7R7IpkGmx89WHkK5ZPF+xPSHBCRp3h2058kDnzg1APjfFZnkgTqjxDLi2Om9P3LDJbJU7KZEGOEOKHi/7AmYMjoFVB9clBDxwhDCd37RRk6dc9n/xW6acfh5Ww5HgMyYaoFwEU83KcJpP4a0krVVtdc/0CQypfA2k6drBwwHzW5NZqDf83zHfhjt4m9VwExlqNSpFFe/nC+fhlqPwHf8GMgUlygYJW8fFrmLzkYP8WCVNGKAN77Lh/HkEuGA6TR7i9o0ZWJVDC3W1O2xdove4qLcI4difUKmKNo6Fjyyk38JEcOFP8xe2PeDOmV/qtTU52dNTaOmx/kTTx3sloEKQLz8WtTQNQWR940T1lyU21QO8nMlzvdUxLZyCtZ+4CGUAS3AxJ34RONhWxpG+LJBEAnEKG94dv4NriyOhK+XyGfBI+nHF4ST9K+4r2xgqPwdUCmxuR0f/tjuA2C9bjfFZQ==;\n\t5:2sn0/+TcTZW5JhahfqDJFmVvxG2UclinMZwjP8J9OHEK2FiW4uIuZtXNDtdQQKRuh2kXbLdBlSG7ZawQQ3f0oTrrcZeoCn4/FSpSZgN+7EoToJCJRZ7+5vwWEkv2/+U5ddVzKKegXtnMmyxVE32cfEl6blQiworYPczIydjoh+M=;\n\t7:o06wAbBxHO9QF7S4t3JXQ9feZ1rlPp/qw1240iEjZUBKob62qiQRqcb9Nv4UxO7/iquCHRb5Ob/hwudivSHaYPMJ7k86sfx+lzCY+aXDW/8MOcvflvLnnKf3eyTRJOzQgzXy/OwhsHCaQ1583TG1QaTB42OnKZ0RNjChKFP+RVMsSt1lfua/ZlWG+HjyEHsbPF/gsDIdlkkolnO3RXhZdl78REsDtzgmRaLGB3/KwR4pqEhs1X87wANEaH3nQNnD"
        ],
        "X-MS-TrafficTypeDiagnostic": "BLUPR0701MB1652:",
        "X-Microsoft-Antispam-PRVS": "<BLUPR0701MB165210AF9700E71C0551822E98000@BLUPR0701MB1652.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)(5005006)(8121501046)(93006095)(93001095)(3231311)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699050);\n\tSRVR:BLUPR0701MB1652; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1652; ",
        "X-Forefront-PRVS": "07880C4932",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(39850400004)(396003)(376002)(366004)(346002)(136003)(189003)(199004)(81156014)(81166006)(44832011)(8936002)(2351001)(486006)(106356001)(2361001)(105586002)(446003)(2906002)(50226002)(476003)(11346002)(956004)(2616005)(305945005)(7736002)(16586007)(316002)(54906003)(14444005)(16526019)(66066001)(26005)(7696005)(52116002)(8676002)(51416003)(76176011)(186003)(386003)(68736007)(478600001)(6666003)(6916009)(6486002)(5660300001)(53936002)(47776003)(4326008)(25786009)(86362001)(48376002)(50466002)(72206003)(6116002)(97736004)(36756003)(3846002);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1652;\n\tH:ubuntubox.rdc.aquantia.com; \n\tFPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; ",
        "Received-SPF": "None (protection.outlook.com: aquantia.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "rJLTaGBdrrwUH0Lo32imme/UkCbiB+WunJKgH6/844XY2gh+PbEiPQY+XOFgNkQOrQOBVBbEoqzvhmyEEUxLxe/P3D/CJWUS/5Tl9/0sryOBiSssyTHOhnkOdeuqvSR3mPstFXPMUR4lieqibYRG1PBFLVyq0bM5RHCfI7shDgySxxxsYpAf2IpOsxGPCFwJLey/9PQcayTUZl9A9X41y1XMsNpzersxGZkEtlom1yiKch+7moJYo6XipU111mBdQzsY7p9dGVnACPIP6yt2rEgtFvDguNndQd6H3urlPqlOZdywthbqwd0eDszWRtsiLHhRXSSQWLsC7aH1EpjF4mLFMoBxhn/+mbTXLsLZYvE=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "aquantia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "07 Sep 2018 15:23:33.0230\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "a0312514-a25f-42fa-7d74-08d614d5e053",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "83e2e134-991c-4ede-8ced-34d47e38e6b1",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BLUPR0701MB1652",
        "Subject": "[dpdk-dev] [PATCH 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 | 131 ++++++++++++++++++++++++++++++++++++++\n 1 file changed, 131 insertions(+)",
    "diff": "diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c\nindex b3ec7c492..c99d321c9 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+                                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@@ -180,6 +193,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@@ -200,6 +241,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@@ -384,6 +431,9 @@ eth_atl_dev_init(struct rte_eth_dev *eth_dev)\n \tif (hw->aq_fw_ops->get_mac_permanent(hw, (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@@ -693,6 +743,87 @@ 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 = (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 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, struct rte_eth_xstat_name *xstats_names, 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, unsigned int n)\n+{\n+\tstruct atl_adapter *adapter = (struct atl_adapter *)dev->data->dev_private;\n+\tstruct aq_hw_s *hw = &adapter->hw;\n+\tunsigned 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 + atl_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+\treturn;\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": [
        "17/21"
    ]
}