Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/750535/?format=api
{ "id": 750535, "url": "http://patchwork.ozlabs.org/api/patches/750535/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20170413084555.6962-6-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": "<20170413084555.6962-6-alice.michael@intel.com>", "list_archive_url": null, "date": "2017-04-13T08:45:49", "name": "[next,S70,06/12] i40e: reduce wait time for adminq command completion", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "dcc7ba6548b54cea76129bc201dcaa5e8bc3426e", "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/20170413084555.6962-6-alice.michael@intel.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/750535/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/750535/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<intel-wired-lan-bounces@lists.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" ], "Received": [ "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\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 3w3mvY0Yryz9s8Q\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 14 Apr 2017 02:48:41 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id A33568A67A;\n\tThu, 13 Apr 2017 16:48:39 +0000 (UTC)", "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id 7KMawK0vBau8; Thu, 13 Apr 2017 16:48:38 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 16EA18A68D;\n\tThu, 13 Apr 2017 16:48:37 +0000 (UTC)", "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id 6D4661C275D\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Apr 2017 16:48:32 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 6760B89BF3\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Apr 2017 16:48:32 +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 3EfgpalJGD0r for <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Apr 2017 16:48:31 +0000 (UTC)", "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id D564789BEC\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Apr 2017 16:48:30 +0000 (UTC)", "from orsmga002.jf.intel.com ([10.7.209.21])\n\tby orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t13 Apr 2017 09:48:29 -0700", "from unknown (HELO localhost.jf.intel.com) ([10.166.16.121])\n\tby orsmga002.jf.intel.com with ESMTP; 13 Apr 2017 09:48:28 -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-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.37,195,1488873600\"; d=\"scan'208\";a=\"73711324\"", "From": "Alice Michael <alice.michael@intel.com>", "To": "alice.michael@intel.com,\n\tintel-wired-lan@lists.osuosl.org", "Date": "Thu, 13 Apr 2017 04:45:49 -0400", "Message-Id": "<20170413084555.6962-6-alice.michael@intel.com>", "X-Mailer": "git-send-email 2.9.3", "In-Reply-To": "<20170413084555.6962-1-alice.michael@intel.com>", "References": "<20170413084555.6962-1-alice.michael@intel.com>", "Subject": "[Intel-wired-lan] [next PATCH S70 06/12] i40e: reduce wait time for\n\tadminq command completion", "X-BeenThere": "intel-wired-lan@lists.osuosl.org", "X-Mailman-Version": "2.1.18-1", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.lists.osuosl.org>", "List-Unsubscribe": "<http://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=unsubscribe>", "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>", "List-Post": "<mailto:intel-wired-lan@lists.osuosl.org>", "List-Help": "<mailto:intel-wired-lan-request@lists.osuosl.org?subject=help>", "List-Subscribe": "<http://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.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@lists.osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@lists.osuosl.org>" }, "content": "From: Jacob Keller <jacob.e.keller@intel.com>\n\nWhen sending an adminq command, we wait for the command to complete in\na loop. This loop waits for an entire millisecond, when in practice the\nadminq command is processed often much faster.\n\nChange the loop to use i40e_usec_delay instead, and wait for 50 usecs\neach time instead. This appears to be about the minimum time required,\nbased on some manual observation and testing.\n\nThe primary benefit of this change is reducing latency of various\noperations in the PF driver, especially when related to having a large\nnumber of VFs enabled.\n\nFor example, on Linux, when instantiating 128 VFs, the time to finish\nthe operation dropped from about 9 seconds down to under 6 seconds.\nAdditionally, the time it takes to finish a PF reset with 128 VFs\ndropped from 5.1 seconds down to 0.7 seconds.\n\nAs the examples above show, a significant portion of the delay is wasted\nwaiting for admiqn operations which have already finished.\n\nThis patch shouldn't cause impact to functionality, as we still check\nand keep waiting until the command does get processed. The only expected\nchange is an increase in CPU utilization as we now check for completion\nfar more times. However, in practice the commands appear to generally be\ncomplete within the first delay window anyways.\n\nPreviously for NDIS we used i40e_msec_stall since i40e_msec_delay would\ncause the CPU to be yielded. We can now just use i40e_usec_delay instead\nbecause this function will behave correctly for both NDIS and non-NDIS\ncode. Thus, we can simply drop the #ifdef logic entirely.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\nChange-ID: If8af8388e100da0a14eaf9e1af3afadf73a958cf\n---\n drivers/net/ethernet/intel/i40e/i40e_adminq.c | 4 ++--\n drivers/net/ethernet/intel/i40e/i40e_adminq.h | 2 +-\n drivers/net/ethernet/intel/i40evf/i40e_adminq.c | 4 ++--\n drivers/net/ethernet/intel/i40evf/i40e_adminq.h | 2 +-\n 4 files changed, 6 insertions(+), 6 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.c b/drivers/net/ethernet/intel/i40e/i40e_adminq.c\nindex 56fb272..ba04988 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_adminq.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.c\n@@ -850,8 +850,8 @@ i40e_status i40e_asq_send_command(struct i40e_hw *hw,\n \t\t\t */\n \t\t\tif (i40e_asq_done(hw))\n \t\t\t\tbreak;\n-\t\t\tusleep_range(1000, 2000);\n-\t\t\ttotal_delay++;\n+\t\t\tudelay(50);\n+\t\t\ttotal_delay += 50;\n \t\t} while (total_delay < hw->aq.asq_cmd_timeout);\n \t}\n \ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.h b/drivers/net/ethernet/intel/i40e/i40e_adminq.h\nindex d92aad3..2349fbe 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_adminq.h\n+++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.h\n@@ -151,7 +151,7 @@ static inline int i40e_aq_rc_to_posix(int aq_ret, int aq_rc)\n \n /* general information */\n #define I40E_AQ_LARGE_BUF\t512\n-#define I40E_ASQ_CMD_TIMEOUT\t250 /* msecs */\n+#define I40E_ASQ_CMD_TIMEOUT\t250000 /* usecs */\n \n void i40e_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc,\n \t\t\t\t u16 opcode);\ndiff --git a/drivers/net/ethernet/intel/i40evf/i40e_adminq.c b/drivers/net/ethernet/intel/i40evf/i40e_adminq.c\nindex 9638515..8b0d4b2 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40e_adminq.c\n+++ b/drivers/net/ethernet/intel/i40evf/i40e_adminq.c\n@@ -797,8 +797,8 @@ i40e_status i40evf_asq_send_command(struct i40e_hw *hw,\n \t\t\t */\n \t\t\tif (i40evf_asq_done(hw))\n \t\t\t\tbreak;\n-\t\t\tusleep_range(1000, 2000);\n-\t\t\ttotal_delay++;\n+\t\t\tudelay(50);\n+\t\t\ttotal_delay += 50;\n \t\t} while (total_delay < hw->aq.asq_cmd_timeout);\n \t}\n \ndiff --git a/drivers/net/ethernet/intel/i40evf/i40e_adminq.h b/drivers/net/ethernet/intel/i40evf/i40e_adminq.h\nindex 1f9b3b5..e0bfaa3 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40e_adminq.h\n+++ b/drivers/net/ethernet/intel/i40evf/i40e_adminq.h\n@@ -151,7 +151,7 @@ static inline int i40e_aq_rc_to_posix(int aq_ret, int aq_rc)\n \n /* general information */\n #define I40E_AQ_LARGE_BUF\t512\n-#define I40E_ASQ_CMD_TIMEOUT\t250 /* msecs */\n+#define I40E_ASQ_CMD_TIMEOUT\t250000 /* usecs */\n \n void i40evf_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc,\n \t\t\t\t u16 opcode);\n", "prefixes": [ "next", "S70", "06/12" ] }