get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 951753,
    "url": "http://patchwork.ozlabs.org/api/patches/951753/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20180731104148.11896-1-alice.michael@intel.com/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api",
        "name": "Intel Wired Ethernet development",
        "link_name": "intel-wired-lan",
        "list_id": "intel-wired-lan.osuosl.org",
        "list_email": "intel-wired-lan@osuosl.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20180731104148.11896-1-alice.michael@intel.com>",
    "list_archive_url": null,
    "date": "2018-07-31T10:41:38",
    "name": "[next,S93,01/11] i40e: add helper function for copying strings from stat arrays",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "6bb95e4e24be44a1864215382092ec278a2472db",
    "submitter": {
        "id": 71123,
        "url": "http://patchwork.ozlabs.org/api/people/71123/?format=api",
        "name": "Michael, Alice",
        "email": "alice.michael@intel.com"
    },
    "delegate": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/users/68/?format=api",
        "username": "jtkirshe",
        "first_name": "Jeff",
        "last_name": "Kirsher",
        "email": "jeffrey.t.kirsher@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20180731104148.11896-1-alice.michael@intel.com/mbox/",
    "series": [
        {
            "id": 58617,
            "url": "http://patchwork.ozlabs.org/api/series/58617/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=58617",
            "date": "2018-07-31T10:41:48",
            "name": "[next,S93,01/11] i40e: add helper function for copying strings from stat arrays",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/58617/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/951753/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/951753/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@osuosl.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=osuosl.org\n\t(client-ip=140.211.166.137; helo=fraxinus.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdmarc=fail (p=none dis=none) header.from=intel.com"
        ],
        "Received": [
            "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 41g5Cr20mjz9s2L\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed,  1 Aug 2018 04:52:40 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id DBBFD85EA0;\n\tTue, 31 Jul 2018 18:52:38 +0000 (UTC)",
            "from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id 9WfcnGNibanu; Tue, 31 Jul 2018 18:52:38 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id C25DF85F50;\n\tTue, 31 Jul 2018 18:52:34 +0000 (UTC)",
            "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id 22D781C3E95\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 31 Jul 2018 18:52:33 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 017F085B62\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 31 Jul 2018 18:52:33 +0000 (UTC)",
            "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id QUuv-drYa8tz for <intel-wired-lan@lists.osuosl.org>;\n\tTue, 31 Jul 2018 18:52:29 +0000 (UTC)",
            "from mga07.intel.com (mga07.intel.com [134.134.136.100])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id 245E285BBA\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 31 Jul 2018 18:52:29 +0000 (UTC)",
            "from orsmga008.jf.intel.com ([10.7.209.65])\n\tby orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t31 Jul 2018 11:52:27 -0700",
            "from alicemic-2.jf.intel.com ([10.166.16.121])\n\tby orsmga008.jf.intel.com with ESMTP; 31 Jul 2018 11:52:27 -0700"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.51,428,1526367600\"; d=\"scan'208\";a=\"61310069\"",
        "From": "Alice Michael <alice.michael@intel.com>",
        "To": "alice.michael@intel.com,\n\tintel-wired-lan@lists.osuosl.org",
        "Date": "Tue, 31 Jul 2018 03:41:38 -0700",
        "Message-Id": "<20180731104148.11896-1-alice.michael@intel.com>",
        "X-Mailer": "git-send-email 2.9.5",
        "Subject": "[Intel-wired-lan] [next PATCH S93 01/11] i40e: add helper function\n\tfor copying strings from stat arrays",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.24",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>",
        "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "From: Jacob Keller <jacob.e.keller@intel.com>\n\nMany of the ethtool statistics use the same basic logic for copying\nstrings into the supplied buffer. A set of stats are stored in a const\narray of i40e_stats structures, and we apply these all together.\n\nSimplify the stats code by introducing a helper function which can take\na stats array and copy the strings into the buffer, updating the buffer\npointer as we go.\n\nWe use a macro to implement i40e_add_stat_strings so that ARRAY_SIZE can\nbe used on the array passed in. This ensures that we always use the\nmatching size in __i40e_add_stat_strings.\n\nMore complex stats currently do not use i40e_stats arrays, usually due\nto custom formatted strings, or because the stats are not laid out in\nthe expected way. These stats will be updated to use the helper function\nin separate future patches.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\n---\n drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 59 +++++++++++++++++---------\n 1 file changed, 39 insertions(+), 20 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\nindex 6947a2a..20e8630 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n@@ -1816,6 +1816,37 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,\n }\n \n /**\n+ * __i40e_add_stat_strings - copy stat strings into ethtool buffer\n+ * @p: ethtool supplied buffer\n+ * @stats: stat definitions array\n+ * @size: size of the stats array\n+ *\n+ * Copy the strings described by stats into the buffer pointed at by p.\n+ **/\n+static void __i40e_add_stat_strings(u8 **p, const struct i40e_stats stats[],\n+\t\t\t\t    const unsigned int size)\n+{\n+\tunsigned int i;\n+\n+\tfor (i = 0; i < size; i++) {\n+\t\tsnprintf(*p, ETH_GSTRING_LEN, \"%s\", stats[i].stat_string);\n+\t\t*p += ETH_GSTRING_LEN;\n+\t}\n+}\n+\n+/**\n+ * 40e_add_stat_strings - copy stat strings into ethtool buffer\n+ * @p: ethtool supplied buffer\n+ * @stats: stat definitions array\n+ *\n+ * Format and copy the strings described by the const static stats value into\n+ * the buffer pointed at by p. Assumes that stats can have ARRAY_SIZE called\n+ * for it.\n+ **/\n+#define i40e_add_stat_strings(p, stats, ...) \\\n+\t__i40e_add_stat_strings(p, stats, ARRAY_SIZE(stats))\n+\n+/**\n  * i40e_get_stat_strings - copy stat strings into supplied buffer\n  * @netdev: the netdev to collect strings for\n  * @data: supplied buffer to copy strings into\n@@ -1833,16 +1864,10 @@ static void i40e_get_stat_strings(struct net_device *netdev, u8 *data)\n \tunsigned int i;\n \tu8 *p = data;\n \n-\tfor (i = 0; i < I40E_NETDEV_STATS_LEN; i++) {\n-\t\tsnprintf(data, ETH_GSTRING_LEN, \"%s\",\n-\t\t\t i40e_gstrings_net_stats[i].stat_string);\n-\t\tdata += ETH_GSTRING_LEN;\n-\t}\n-\tfor (i = 0; i < I40E_MISC_STATS_LEN; i++) {\n-\t\tsnprintf(data, ETH_GSTRING_LEN, \"%s\",\n-\t\t\t i40e_gstrings_misc_stats[i].stat_string);\n-\t\tdata += ETH_GSTRING_LEN;\n-\t}\n+\ti40e_add_stat_strings(&data, i40e_gstrings_net_stats);\n+\n+\ti40e_add_stat_strings(&data, i40e_gstrings_misc_stats);\n+\n \tfor (i = 0; i < I40E_MAX_NUM_QUEUES(netdev); i++) {\n \t\tsnprintf(data, ETH_GSTRING_LEN, \"tx-%u.tx_packets\", i);\n \t\tdata += ETH_GSTRING_LEN;\n@@ -1856,11 +1881,8 @@ static void i40e_get_stat_strings(struct net_device *netdev, u8 *data)\n \tif (vsi != pf->vsi[pf->lan_vsi] || pf->hw.partition_id != 1)\n \t\treturn;\n \n-\tfor (i = 0; i < I40E_VEB_STATS_LEN; i++) {\n-\t\tsnprintf(data, ETH_GSTRING_LEN, \"%s\",\n-\t\t\t i40e_gstrings_veb_stats[i].stat_string);\n-\t\tdata += ETH_GSTRING_LEN;\n-\t}\n+\ti40e_add_stat_strings(&data, i40e_gstrings_veb_stats);\n+\n \tfor (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) {\n \t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"veb.tc_%u_tx_packets\", i);\n@@ -1876,11 +1898,8 @@ static void i40e_get_stat_strings(struct net_device *netdev, u8 *data)\n \t\tdata += ETH_GSTRING_LEN;\n \t}\n \n-\tfor (i = 0; i < I40E_GLOBAL_STATS_LEN; i++) {\n-\t\tsnprintf(data, ETH_GSTRING_LEN, \"%s\",\n-\t\t\t i40e_gstrings_stats[i].stat_string);\n-\t\tdata += ETH_GSTRING_LEN;\n-\t}\n+\ti40e_add_stat_strings(&data, i40e_gstrings_stats);\n+\n \tfor (i = 0; i < I40E_MAX_USER_PRIORITY; i++) {\n \t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"port.tx_priority_%u_xon\", i);\n",
    "prefixes": [
        "next",
        "S93",
        "01/11"
    ]
}