get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 750537,
    "url": "http://patchwork.ozlabs.org/api/patches/750537/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20170413084555.6962-12-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-12-alice.michael@intel.com>",
    "list_archive_url": null,
    "date": "2017-04-13T08:45:55",
    "name": "[next,S70,12/12] i40e: make use of i40e_reset_all_vfs when initializing new VFs",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "bf7c200b2f4b0059d826f460fe76469742bbfba3",
    "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-12-alice.michael@intel.com/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/750537/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/750537/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 3w3mvc5qfHz9s8Q\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 14 Apr 2017 02:48:44 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 0BFFD8A686;\n\tThu, 13 Apr 2017 16:48:42 +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 FdWo2N+6C9Z7; Thu, 13 Apr 2017 16:48:40 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 9B0B68A696;\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 6059E1C275D\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Apr 2017 16:48:33 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 5A9EA89BDE\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Apr 2017 16:48: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 A-mTRaPSBIDy for <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Apr 2017 16:48:32 +0000 (UTC)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id C9A2389C9E\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tThu, 13 Apr 2017 16:48:32 +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:29 -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=\"73711342\"",
        "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:55 -0400",
        "Message-Id": "<20170413084555.6962-12-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 12/12] i40e: make use of\n\ti40e_reset_all_vfs when initializing new VFs",
        "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 allocating a large number of VFs, the driver previously used\ni40e_reset_vf in a sequence. Just as when performing a normal reset,\nthis accumulates a large amount of delay for handling all of the VFs in\nsequence. This delay is mainly due to a hardware requirement to wait\nafter initiating a reset on the VF.\n\nWe recently added a new function, i40e_reset_all_vfs() which can be used\nto amortize the delay time, by first triggering all VF resets, then\nwaiting once, and finally cleaning up and allocating the VFs. This is\nalmost as good as truly running the resets in parallel.\n\nIn order to avoid sending a spurious reset message to a client\ninterface, we have a check to see whether we've assigned\npf->num_alloc_vfs yet. This was originally intended as a way to\ndistinquish the \"initialization\" case from the regular reset case.\n\nUnfortunately, this means that we can't directly use i40e_reset_all_vfs\nyet. Lets avoid this check of pf->num_alloc_vfs by replacing it with\na proper VSI state bit which we can use instead. This makes the\nintention much clearer and allows us to re-use the i40e_reset_all_vfs\nfunction directly.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\nReviewed-by: Williams, Mitch A <mitch.a.williams@intel.com>\nChange-ID: I694279b37eb6b5a91b6670182d0c15d10244fd6e\n---\n drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 10 +++++++---\n drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h |  1 +\n 2 files changed, 8 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\nindex b97f9f2..355821b 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\n@@ -1007,7 +1007,8 @@ static void i40e_cleanup_reset_vf(struct i40e_vf *vf)\n \t\tset_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states);\n \t\tclear_bit(I40E_VF_STATE_DISABLED, &vf->vf_states);\n \t\t/* Do not notify the client during VF init */\n-\t\tif (vf->pf->num_alloc_vfs)\n+\t\tif (test_and_clear_bit(I40E_VF_STATE_PRE_ENABLE,\n+\t\t\t\t       &vf->vf_states))\n \t\t\ti40e_notify_client_of_vf_reset(pf, abs_vf_id);\n \t\tvf->num_vlan = 0;\n \t}\n@@ -1283,8 +1284,8 @@ int i40e_alloc_vfs(struct i40e_pf *pf, u16 num_alloc_vfs)\n \t\t/* assign default capabilities */\n \t\tset_bit(I40E_VIRTCHNL_VF_CAP_L2, &vfs[i].vf_caps);\n \t\tvfs[i].spoofchk = true;\n-\t\t/* VF resources get allocated during reset */\n-\t\ti40e_reset_vf(&vfs[i], false);\n+\n+\t\tset_bit(I40E_VF_STATE_PRE_ENABLE, &vfs[i].vf_states);\n \n \t\tif (pf->eswitch_mode == DEVLINK_ESWITCH_MODE_SWITCHDEV) {\n \t\t\tret = i40e_alloc_port_netdev(&vfs[i],\n@@ -1295,6 +1296,9 @@ int i40e_alloc_vfs(struct i40e_pf *pf, u16 num_alloc_vfs)\n \t}\n \tpf->num_alloc_vfs = num_alloc_vfs;\n \n+\t/* VF resources get allocated during reset */\n+\ti40e_reset_all_vfs(pf, false);\n+\n \ti40e_notify_client_of_vf_enable(pf, num_alloc_vfs);\n \n err_alloc:\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h\nindex 7ff45df..3b122ac 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h\n+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h\n@@ -63,6 +63,7 @@ enum i40e_vf_states {\n \tI40E_VF_STATE_DISABLED,\n \tI40E_VF_STATE_MC_PROMISC,\n \tI40E_VF_STATE_UC_PROMISC,\n+\tI40E_VF_STATE_PRE_ENABLE,\n };\n \n /* VF capabilities */\n",
    "prefixes": [
        "next",
        "S70",
        "12/12"
    ]
}