Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/915568/?format=api
{ "id": 915568, "url": "http://patchwork.ozlabs.org/api/patches/915568/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20180517080840.30192-7-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": "<20180517080840.30192-7-alice.michael@intel.com>", "list_archive_url": null, "date": "2018-05-17T08:08:38", "name": "[next,S92,7/9] i40e: update data pointer directly when copying to the buffer", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "1c7808707691e4ab104ee947917bb241fb293041", "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/20180517080840.30192-7-alice.michael@intel.com/mbox/", "series": [ { "id": 45017, "url": "http://patchwork.ozlabs.org/api/series/45017/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=45017", "date": "2018-05-17T08:08:34", "name": "[next,S92,1/9] i40e: free skb after clearing lock in ptp_stop", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/45017/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/915568/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/915568/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.138; helo=whitealder.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 whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\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 40mxL00k1pz9s3X\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 18 May 2018 02:18:00 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id B24FE88269;\n\tThu, 17 May 2018 16:17:58 +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 dj-o7fXrDm5N; Thu, 17 May 2018 16:17:56 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id E6B26882A7;\n\tThu, 17 May 2018 16:17:55 +0000 (UTC)", "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id 50D211C2C4E\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 17 May 2018 16:17:52 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 473B588217\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 17 May 2018 16:17:52 +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 E-a8J-+C4bI2 for <intel-wired-lan@lists.osuosl.org>;\n\tThu, 17 May 2018 16:17:49 +0000 (UTC)", "from mga11.intel.com (mga11.intel.com [192.55.52.93])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id 9BCCB88273\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 17 May 2018 16:17:48 +0000 (UTC)", "from orsmga006.jf.intel.com ([10.7.209.51])\n\tby fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t17 May 2018 09:17:47 -0700", "from alicemic-2.jf.intel.com ([10.166.16.121])\n\tby orsmga006.jf.intel.com with ESMTP; 17 May 2018 09:17:47 -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.49,411,1520924400\"; d=\"scan'208\";a=\"42632764\"", "From": "Alice Michael <alice.michael@intel.com>", "To": "alice.michael@intel.com,\n\tintel-wired-lan@lists.osuosl.org", "Date": "Thu, 17 May 2018 01:08:38 -0700", "Message-Id": "<20180517080840.30192-7-alice.michael@intel.com>", "X-Mailer": "git-send-email 2.9.5", "In-Reply-To": "<20180517080840.30192-1-alice.michael@intel.com>", "References": "<20180517080840.30192-1-alice.michael@intel.com>", "Subject": "[Intel-wired-lan] [next PATCH S92 7/9] i40e: update data pointer\n\tdirectly when copying to the buffer", "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\nA future patch is going to add a helper function i40e_add_ethtool_stats\nthat will help lower the amount of boiler plate code in the\ni40e_get_ethtool_stats function.\n\nThis conversion will take place over many patches, and the helper\nfunction will work by directly updating a reference to the data pointer.\n\nSince this would not work combined with the current method of accessing\ndata like an array, update all the code that copies stats into the data\nbuffer to use direct updates to the pointer instead of array accesses.\n\nThis will prevent incorrect stat updates for patches in between the\nconversion.\n\nSimilarly, when copying strings, we used a separate char *p pointer.\nInstead, use the data pointer directly as it's already a (u8 *) type\nwhich is the same size.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\n---\n drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 117 ++++++++++++-------------\n 1 file changed, 58 insertions(+), 59 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\nindex 2498d19..94e1995 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n@@ -1579,7 +1579,6 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,\n \tstruct i40e_vsi *vsi = np->vsi;\n \tstruct i40e_pf *pf = vsi->back;\n \tunsigned int j;\n-\tint i = 0;\n \tchar *p;\n \tstruct rtnl_link_stats64 *net_stats = i40e_get_vsi_stats_struct(vsi);\n \tunsigned int start;\n@@ -1588,12 +1587,12 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,\n \n \tfor (j = 0; j < I40E_NETDEV_STATS_LEN; j++) {\n \t\tp = (char *)net_stats + i40e_gstrings_net_stats[j].stat_offset;\n-\t\tdata[i++] = (i40e_gstrings_net_stats[j].sizeof_stat ==\n+\t\t*(data++) = (i40e_gstrings_net_stats[j].sizeof_stat ==\n \t\t\tsizeof(u64)) ? *(u64 *)p : *(u32 *)p;\n \t}\n \tfor (j = 0; j < I40E_MISC_STATS_LEN; j++) {\n \t\tp = (char *)vsi + i40e_gstrings_misc_stats[j].stat_offset;\n-\t\tdata[i++] = (i40e_gstrings_misc_stats[j].sizeof_stat ==\n+\t\t*(data++) = (i40e_gstrings_misc_stats[j].sizeof_stat ==\n \t\t\t sizeof(u64)) ? *(u64 *)p : *(u32 *)p;\n \t}\n \trcu_read_lock();\n@@ -1604,29 +1603,29 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,\n \t\t\t/* Bump the stat counter to skip these stats, and make\n \t\t\t * sure the memory is zero'd\n \t\t\t */\n-\t\t\tdata[i++] = 0;\n-\t\t\tdata[i++] = 0;\n-\t\t\tdata[i++] = 0;\n-\t\t\tdata[i++] = 0;\n+\t\t\t*(data++) = 0;\n+\t\t\t*(data++) = 0;\n+\t\t\t*(data++) = 0;\n+\t\t\t*(data++) = 0;\n \t\t\tcontinue;\n \t\t}\n \n \t\t/* process Tx ring statistics */\n \t\tdo {\n \t\t\tstart = u64_stats_fetch_begin_irq(&tx_ring->syncp);\n-\t\t\tdata[i] = tx_ring->stats.packets;\n-\t\t\tdata[i + 1] = tx_ring->stats.bytes;\n+\t\t\tdata[0] = tx_ring->stats.packets;\n+\t\t\tdata[1] = tx_ring->stats.bytes;\n \t\t} while (u64_stats_fetch_retry_irq(&tx_ring->syncp, start));\n-\t\ti += 2;\n+\t\tdata += 2;\n \n \t\t/* Rx ring is the 2nd half of the queue pair */\n \t\trx_ring = &tx_ring[1];\n \t\tdo {\n \t\t\tstart = u64_stats_fetch_begin_irq(&rx_ring->syncp);\n-\t\t\tdata[i] = rx_ring->stats.packets;\n-\t\t\tdata[i + 1] = rx_ring->stats.bytes;\n+\t\t\tdata[0] = rx_ring->stats.packets;\n+\t\t\tdata[1] = rx_ring->stats.bytes;\n \t\t} while (u64_stats_fetch_retry_irq(&rx_ring->syncp, start));\n-\t\ti += 2;\n+\t\tdata += 2;\n \t}\n \trcu_read_unlock();\n \tif (vsi != pf->vsi[pf->lan_vsi] || pf->hw.partition_id != 1)\n@@ -1639,33 +1638,33 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,\n \t\tfor (j = 0; j < I40E_VEB_STATS_LEN; j++) {\n \t\t\tp = (char *)veb;\n \t\t\tp += i40e_gstrings_veb_stats[j].stat_offset;\n-\t\t\tdata[i++] = (i40e_gstrings_veb_stats[j].sizeof_stat ==\n+\t\t\t*(data++) = (i40e_gstrings_veb_stats[j].sizeof_stat ==\n \t\t\t\t sizeof(u64)) ? *(u64 *)p : *(u32 *)p;\n \t\t}\n \t\tfor (j = 0; j < I40E_MAX_TRAFFIC_CLASS; j++) {\n-\t\t\tdata[i++] = veb->tc_stats.tc_tx_packets[j];\n-\t\t\tdata[i++] = veb->tc_stats.tc_tx_bytes[j];\n-\t\t\tdata[i++] = veb->tc_stats.tc_rx_packets[j];\n-\t\t\tdata[i++] = veb->tc_stats.tc_rx_bytes[j];\n+\t\t\t*(data++) = veb->tc_stats.tc_tx_packets[j];\n+\t\t\t*(data++) = veb->tc_stats.tc_tx_bytes[j];\n+\t\t\t*(data++) = veb->tc_stats.tc_rx_packets[j];\n+\t\t\t*(data++) = veb->tc_stats.tc_rx_bytes[j];\n \t\t}\n \t} else {\n-\t\ti += I40E_VEB_STATS_TOTAL;\n+\t\tdata += I40E_VEB_STATS_TOTAL;\n \t}\n \tfor (j = 0; j < I40E_GLOBAL_STATS_LEN; j++) {\n \t\tp = (char *)pf + i40e_gstrings_stats[j].stat_offset;\n-\t\tdata[i++] = (i40e_gstrings_stats[j].sizeof_stat ==\n+\t\t*(data++) = (i40e_gstrings_stats[j].sizeof_stat ==\n \t\t\t sizeof(u64)) ? *(u64 *)p : *(u32 *)p;\n \t}\n \tfor (j = 0; j < I40E_MAX_USER_PRIORITY; j++) {\n-\t\tdata[i++] = pf->stats.priority_xon_tx[j];\n-\t\tdata[i++] = pf->stats.priority_xoff_tx[j];\n+\t\t*(data++) = pf->stats.priority_xon_tx[j];\n+\t\t*(data++) = pf->stats.priority_xoff_tx[j];\n \t}\n \tfor (j = 0; j < I40E_MAX_USER_PRIORITY; j++) {\n-\t\tdata[i++] = pf->stats.priority_xon_rx[j];\n-\t\tdata[i++] = pf->stats.priority_xoff_rx[j];\n+\t\t*(data++) = pf->stats.priority_xon_rx[j];\n+\t\t*(data++) = pf->stats.priority_xoff_rx[j];\n \t}\n \tfor (j = 0; j < I40E_MAX_USER_PRIORITY; j++)\n-\t\tdata[i++] = pf->stats.priority_xon_2_xoff[j];\n+\t\t*(data++) = pf->stats.priority_xon_2_xoff[j];\n }\n \n static void i40e_get_stat_strings(struct net_device *netdev, u8 *data)\n@@ -1677,73 +1676,73 @@ static void i40e_get_stat_strings(struct net_device *netdev, u8 *data)\n \tu8 *p = data;\n \n \tfor (i = 0; i < I40E_NETDEV_STATS_LEN; i++) {\n-\t\tsnprintf(p, ETH_GSTRING_LEN, \"%s\",\n+\t\tsnprintf(data, ETH_GSTRING_LEN, \"%s\",\n \t\t\t i40e_gstrings_net_stats[i].stat_string);\n-\t\tp += ETH_GSTRING_LEN;\n+\t\tdata += ETH_GSTRING_LEN;\n \t}\n \tfor (i = 0; i < I40E_MISC_STATS_LEN; i++) {\n-\t\tsnprintf(p, ETH_GSTRING_LEN, \"%s\",\n+\t\tsnprintf(data, ETH_GSTRING_LEN, \"%s\",\n \t\t\t i40e_gstrings_misc_stats[i].stat_string);\n-\t\tp += ETH_GSTRING_LEN;\n+\t\tdata += ETH_GSTRING_LEN;\n \t}\n \tfor (i = 0; i < I40E_MAX_NUM_QUEUES(netdev); i++) {\n-\t\tsnprintf(p, ETH_GSTRING_LEN, \"tx-%u.tx_packets\", i);\n-\t\tp += ETH_GSTRING_LEN;\n-\t\tsnprintf(p, ETH_GSTRING_LEN, \"tx-%u.tx_bytes\", i);\n-\t\tp += ETH_GSTRING_LEN;\n-\t\tsnprintf(p, ETH_GSTRING_LEN, \"rx-%u.rx_packets\", i);\n-\t\tp += ETH_GSTRING_LEN;\n-\t\tsnprintf(p, ETH_GSTRING_LEN, \"rx-%u.rx_bytes\", i);\n-\t\tp += ETH_GSTRING_LEN;\n+\t\tsnprintf(data, ETH_GSTRING_LEN, \"tx-%u.tx_packets\", i);\n+\t\tdata += ETH_GSTRING_LEN;\n+\t\tsnprintf(data, ETH_GSTRING_LEN, \"tx-%u.tx_bytes\", i);\n+\t\tdata += ETH_GSTRING_LEN;\n+\t\tsnprintf(data, ETH_GSTRING_LEN, \"rx-%u.rx_packets\", i);\n+\t\tdata += ETH_GSTRING_LEN;\n+\t\tsnprintf(data, ETH_GSTRING_LEN, \"rx-%u.rx_bytes\", i);\n+\t\tdata += ETH_GSTRING_LEN;\n \t}\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(p, ETH_GSTRING_LEN, \"%s\",\n+\t\tsnprintf(data, ETH_GSTRING_LEN, \"%s\",\n \t\t\t i40e_gstrings_veb_stats[i].stat_string);\n-\t\tp += ETH_GSTRING_LEN;\n+\t\tdata += ETH_GSTRING_LEN;\n \t}\n \tfor (i = 0; i < I40E_MAX_TRAFFIC_CLASS; i++) {\n-\t\tsnprintf(p, ETH_GSTRING_LEN,\n+\t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"veb.tc_%u_tx_packets\", i);\n-\t\tp += ETH_GSTRING_LEN;\n-\t\tsnprintf(p, ETH_GSTRING_LEN,\n+\t\tdata += ETH_GSTRING_LEN;\n+\t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"veb.tc_%u_tx_bytes\", i);\n-\t\tp += ETH_GSTRING_LEN;\n-\t\tsnprintf(p, ETH_GSTRING_LEN,\n+\t\tdata += ETH_GSTRING_LEN;\n+\t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"veb.tc_%u_rx_packets\", i);\n-\t\tp += ETH_GSTRING_LEN;\n-\t\tsnprintf(p, ETH_GSTRING_LEN,\n+\t\tdata += ETH_GSTRING_LEN;\n+\t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"veb.tc_%u_rx_bytes\", i);\n-\t\tp += ETH_GSTRING_LEN;\n+\t\tdata += ETH_GSTRING_LEN;\n \t}\n \n \tfor (i = 0; i < I40E_GLOBAL_STATS_LEN; i++) {\n-\t\tsnprintf(p, ETH_GSTRING_LEN, \"%s\",\n+\t\tsnprintf(data, ETH_GSTRING_LEN, \"%s\",\n \t\t\t i40e_gstrings_stats[i].stat_string);\n-\t\tp += ETH_GSTRING_LEN;\n+\t\tdata += ETH_GSTRING_LEN;\n \t}\n \tfor (i = 0; i < I40E_MAX_USER_PRIORITY; i++) {\n-\t\tsnprintf(p, ETH_GSTRING_LEN,\n+\t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"port.tx_priority_%u_xon\", i);\n-\t\tp += ETH_GSTRING_LEN;\n-\t\tsnprintf(p, ETH_GSTRING_LEN,\n+\t\tdata += ETH_GSTRING_LEN;\n+\t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"port.tx_priority_%u_xoff\", i);\n-\t\tp += ETH_GSTRING_LEN;\n+\t\tdata += ETH_GSTRING_LEN;\n \t}\n \tfor (i = 0; i < I40E_MAX_USER_PRIORITY; i++) {\n-\t\tsnprintf(p, ETH_GSTRING_LEN,\n+\t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"port.rx_priority_%u_xon\", i);\n-\t\tp += ETH_GSTRING_LEN;\n-\t\tsnprintf(p, ETH_GSTRING_LEN,\n+\t\tdata += ETH_GSTRING_LEN;\n+\t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"port.rx_priority_%u_xoff\", i);\n-\t\tp += ETH_GSTRING_LEN;\n+\t\tdata += ETH_GSTRING_LEN;\n \t}\n \tfor (i = 0; i < I40E_MAX_USER_PRIORITY; i++) {\n-\t\tsnprintf(p, ETH_GSTRING_LEN,\n+\t\tsnprintf(data, ETH_GSTRING_LEN,\n \t\t\t \"port.rx_priority_%u_xon_2_xoff\", i);\n-\t\tp += ETH_GSTRING_LEN;\n+\t\tdata += ETH_GSTRING_LEN;\n \t}\n \n \tWARN_ONCE(p - data != i40e_get_stats_count(netdev) * ETH_GSTRING_LEN,\n", "prefixes": [ "next", "S92", "7/9" ] }