get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 512044,
    "url": "http://patchwork.ozlabs.org/api/patches/512044/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1440798961-17326-8-git-send-email-catherine.sullivan@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": "<1440798961-17326-8-git-send-email-catherine.sullivan@intel.com>",
    "list_archive_url": null,
    "date": "2015-08-28T21:55:53",
    "name": "[next,S13,07/15] i40evf: detect reset more reliably",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "217fc3bb3b412cf3f57770c70c6fcb6ab6dab101",
    "submitter": {
        "id": 13931,
        "url": "http://patchwork.ozlabs.org/api/people/13931/?format=api",
        "name": "Catherine Sullivan",
        "email": "catherine.sullivan@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/1440798961-17326-8-git-send-email-catherine.sullivan@intel.com/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/512044/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/512044/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 fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ozlabs.org (Postfix) with ESMTP id 317861401C7\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 29 Aug 2015 07:55:13 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 804528B989;\n\tFri, 28 Aug 2015 21:55:12 +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 1--hF2k2ieLL; Fri, 28 Aug 2015 21:55:11 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id AF2878463A;\n\tFri, 28 Aug 2015 21:55:11 +0000 (UTC)",
            "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ash.osuosl.org (Postfix) with ESMTP id 1F5651CEB0B\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 28 Aug 2015 21:55:08 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 1863E95ECE\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 28 Aug 2015 21:55:08 +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 aNjQqBgkEtMb for <intel-wired-lan@lists.osuosl.org>;\n\tFri, 28 Aug 2015 21:55:07 +0000 (UTC)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 4613A95ED3\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 28 Aug 2015 21:55:07 +0000 (UTC)",
            "from orsmga003.jf.intel.com ([10.7.209.27])\n\tby orsmga101.jf.intel.com with ESMTP; 28 Aug 2015 14:55:07 -0700",
            "from catheri1-tigger.jf.intel.com ([134.134.176.92])\n\tby orsmga003.jf.intel.com with ESMTP; 28 Aug 2015 14:55:05 -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.17,427,1437462000\"; d=\"scan'208\";a=\"634260299\"",
        "From": "Catherine Sullivan <catherine.sullivan@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Fri, 28 Aug 2015 17:55:53 -0400",
        "Message-Id": "<1440798961-17326-8-git-send-email-catherine.sullivan@intel.com>",
        "X-Mailer": "git-send-email 1.9.3",
        "In-Reply-To": "<1440798961-17326-1-git-send-email-catherine.sullivan@intel.com>",
        "References": "<1440798961-17326-1-git-send-email-catherine.sullivan@intel.com>",
        "Subject": "[Intel-wired-lan] [next PATCH S13 07/15] i40evf: detect reset more\n\treliably",
        "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: Mitch Williams <mitch.a.williams@intel.com>\n\nUsing VFGEN_RSTAT to detect a VF reset is an endeavor that is fraught\nwith peril. It's entirely too easy to miss a reset because none of the\nbits are sticky. By the time the VF driver reads the register, the reset\nmay have been processed and cleaned up by the PF driver, leaving the\nregister in the same state that it was before the reset.\n\nInstead, detect a reset with the VF_ARQLEN register. When the VF is\nreset, the enable bit in this register is cleared, and it stays cleared\nuntil the VF driver processes the reset and re-enables the admin queue.\n\nBecause we now deal with multiple registers in the reset and watchdog\ntasks, rename the rstat_val variable to reg_val.\n\nSigned-off-by: Mitch Williams <mitch.a.williams@intel.com>\nChange-ID: Id1df17045c0992e607da0162d31807f7fc20d199\n---\n drivers/net/ethernet/intel/i40evf/i40evf_main.c | 36 +++++++++++--------------\n 1 file changed, 16 insertions(+), 20 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c\nindex 897e1ac..53ecc09 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c\n+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c\n@@ -1419,16 +1419,16 @@ static void i40evf_watchdog_task(struct work_struct *work)\n \t\t\t\t\t\t      struct i40evf_adapter,\n \t\t\t\t\t\t      watchdog_task);\n \tstruct i40e_hw *hw = &adapter->hw;\n-\tuint32_t rstat_val;\n+\tu32 reg_val;\n \n \tif (test_and_set_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section))\n \t\tgoto restart_watchdog;\n \n \tif (adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) {\n-\t\trstat_val = rd32(hw, I40E_VFGEN_RSTAT) &\n-\t\t\t    I40E_VFGEN_RSTAT_VFR_STATE_MASK;\n-\t\tif ((rstat_val == I40E_VFR_VFACTIVE) ||\n-\t\t    (rstat_val == I40E_VFR_COMPLETED)) {\n+\t\treg_val = rd32(hw, I40E_VFGEN_RSTAT) &\n+\t\t\t  I40E_VFGEN_RSTAT_VFR_STATE_MASK;\n+\t\tif ((reg_val == I40E_VFR_VFACTIVE) ||\n+\t\t    (reg_val == I40E_VFR_COMPLETED)) {\n \t\t\t/* A chance for redemption! */\n \t\t\tdev_err(&adapter->pdev->dev, \"Hardware came out of reset. Attempting reinit.\\n\");\n \t\t\tadapter->state = __I40EVF_STARTUP;\n@@ -1453,11 +1453,8 @@ static void i40evf_watchdog_task(struct work_struct *work)\n \t\tgoto watchdog_done;\n \n \t/* check for reset */\n-\trstat_val = rd32(hw, I40E_VFGEN_RSTAT) &\n-\t\t    I40E_VFGEN_RSTAT_VFR_STATE_MASK;\n-\tif (!(adapter->flags & I40EVF_FLAG_RESET_PENDING) &&\n-\t    (rstat_val != I40E_VFR_VFACTIVE) &&\n-\t    (rstat_val != I40E_VFR_COMPLETED)) {\n+\treg_val = rd32(hw, I40E_VF_ARQLEN1) & I40E_VF_ARQLEN1_ARQENABLE_MASK;\n+\tif (!(adapter->flags & I40EVF_FLAG_RESET_PENDING) && !reg_val) {\n \t\tadapter->state = __I40EVF_RESETTING;\n \t\tadapter->flags |= I40EVF_FLAG_RESET_PENDING;\n \t\tdev_err(&adapter->pdev->dev, \"Hardware reset detected\\n\");\n@@ -1572,7 +1569,7 @@ static void i40evf_reset_task(struct work_struct *work)\n \tstruct net_device *netdev = adapter->netdev;\n \tstruct i40e_hw *hw = &adapter->hw;\n \tstruct i40evf_mac_filter *f;\n-\tuint32_t rstat_val;\n+\tu32 reg_val;\n \tint i = 0, err;\n \n \twhile (test_and_set_bit(__I40EVF_IN_CRITICAL_TASK,\n@@ -1593,12 +1590,11 @@ static void i40evf_reset_task(struct work_struct *work)\n \n \t/* poll until we see the reset actually happen */\n \tfor (i = 0; i < I40EVF_RESET_WAIT_COUNT; i++) {\n-\t\trstat_val = rd32(hw, I40E_VFGEN_RSTAT) &\n-\t\t\t    I40E_VFGEN_RSTAT_VFR_STATE_MASK;\n-\t\tif ((rstat_val != I40E_VFR_VFACTIVE) &&\n-\t\t    (rstat_val != I40E_VFR_COMPLETED))\n+\t\treg_val = rd32(hw, I40E_VF_ARQLEN1) &\n+\t\t\t  I40E_VF_ARQLEN1_ARQENABLE_MASK;\n+\t\tif (!reg_val)\n \t\t\tbreak;\n-\t\tusleep_range(500, 1000);\n+\t\tusleep_range(5000, 10000);\n \t}\n \tif (i == I40EVF_RESET_WAIT_COUNT) {\n \t\tdev_info(&adapter->pdev->dev, \"Never saw reset\\n\");\n@@ -1607,9 +1603,9 @@ static void i40evf_reset_task(struct work_struct *work)\n \n \t/* wait until the reset is complete and the PF is responding to us */\n \tfor (i = 0; i < I40EVF_RESET_WAIT_COUNT; i++) {\n-\t\trstat_val = rd32(hw, I40E_VFGEN_RSTAT) &\n-\t\t\t    I40E_VFGEN_RSTAT_VFR_STATE_MASK;\n-\t\tif (rstat_val == I40E_VFR_VFACTIVE)\n+\t\treg_val = rd32(hw, I40E_VFGEN_RSTAT) &\n+\t\t\t  I40E_VFGEN_RSTAT_VFR_STATE_MASK;\n+\t\tif (reg_val == I40E_VFR_VFACTIVE)\n \t\t\tbreak;\n \t\tmsleep(I40EVF_RESET_WAIT_MS);\n \t}\n@@ -1621,7 +1617,7 @@ static void i40evf_reset_task(struct work_struct *work)\n \n \t\t/* reset never finished */\n \t\tdev_err(&adapter->pdev->dev, \"Reset never finished (%x)\\n\",\n-\t\t\trstat_val);\n+\t\t\treg_val);\n \t\tadapter->flags |= I40EVF_FLAG_PF_COMMS_FAILED;\n \n \t\tif (netif_running(adapter->netdev)) {\n",
    "prefixes": [
        "next",
        "S13",
        "07/15"
    ]
}