get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1298397,
    "url": "http://patchwork.ozlabs.org/api/patches/1298397/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20200525122710.25064-1-vaibhavgupta40@gmail.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": "<20200525122710.25064-1-vaibhavgupta40@gmail.com>",
    "list_archive_url": null,
    "date": "2020-05-25T12:27:10",
    "name": "[v2] e1000: use generic power management",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "dd8cd062d124d00b1a733e6f02f08bc0a8ae4ff3",
    "submitter": {
        "id": 78824,
        "url": "http://patchwork.ozlabs.org/api/people/78824/?format=api",
        "name": "Vaibhav Gupta",
        "email": "vaibhavgupta40@gmail.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/20200525122710.25064-1-vaibhavgupta40@gmail.com/mbox/",
    "series": [
        {
            "id": 179427,
            "url": "http://patchwork.ozlabs.org/api/series/179427/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=179427",
            "date": "2020-05-25T12:27:10",
            "name": "[v2] e1000: use generic power management",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/179427/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1298397/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1298397/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 spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=140.211.166.137; helo=fraxinus.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=<UNKNOWN>)",
            "ozlabs.org;\n dmarc=fail (p=none dis=none) header.from=gmail.com",
            "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20161025 header.b=gbHF0I8l;\n\tdkim-atps=neutral"
        ],
        "Received": [
            "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 49WkXZ2gh8z9sVm\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 27 May 2020 05:28:46 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id EA32D86948;\n\tTue, 26 May 2020 19:28:44 +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 txKnhI7I4dBn; Tue, 26 May 2020 19:28:44 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 3E0EA86930;\n\tTue, 26 May 2020 19:28:44 +0000 (UTC)",
            "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n by ash.osuosl.org (Postfix) with ESMTP id D3A061BF384\n for <intel-wired-lan@lists.osuosl.org>; Mon, 25 May 2020 12:28:07 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by fraxinus.osuosl.org (Postfix) with ESMTP id CE6FD85FA4\n for <intel-wired-lan@lists.osuosl.org>; Mon, 25 May 2020 12:28:07 +0000 (UTC)",
            "from fraxinus.osuosl.org ([127.0.0.1])\n by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n with ESMTP id 2sDXIfASXB_n for <intel-wired-lan@lists.osuosl.org>;\n Mon, 25 May 2020 12:28:07 +0000 (UTC)",
            "from mail-pg1-f196.google.com (mail-pg1-f196.google.com\n [209.85.215.196])\n by fraxinus.osuosl.org (Postfix) with ESMTPS id 2DF0E85F5C\n for <intel-wired-lan@lists.osuosl.org>; Mon, 25 May 2020 12:28:07 +0000 (UTC)",
            "by mail-pg1-f196.google.com with SMTP id p21so8614055pgm.13\n for <intel-wired-lan@lists.osuosl.org>; Mon, 25 May 2020 05:28:07 -0700 (PDT)",
            "from varodek.iballbatonwifi.com ([103.105.152.209])\n by smtp.gmail.com with ESMTPSA id r21sm12635055pjo.2.2020.05.25.05.28.01\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Mon, 25 May 2020 05:28:05 -0700 (PDT)"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n h=from:to:cc:subject:date:message-id:mime-version\n :content-transfer-encoding;\n bh=+E+o+aNk0CHjmIBkGKHgmosMQQyVO/7BF9hxr8UpXao=;\n b=gbHF0I8l8bVjcUzFdEYW48thV0WucozZhYw8JGmAmLv4MFXm2Fo/2sG9J+9swMgfJB\n H8BvwFudl25lv3J9Vmr4L1PuMaOjt6AVEnwVJFQQ3ojsKBPtbvLyh9Nv3KtvpEo/63LX\n UOatZ58ylsIBXCED3SJtycPD+z5Q6GWuuweu12iBZAOfBPtEPrqgmzQDRDTMtpeRyznV\n SrlXp+Z8rDnWUcbHCeY0tWOpLRBboBWQHzfJJf5YuBHRtM8LfPJC1lkajYImz3bNIHUw\n eV/JTX6Vx0pwj6HSA9f2yrrYhAxX7HNhMuZXiWlTh3kZQqBCR9zyY4fLlEEFksTgqyfO\n XsxQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n :content-transfer-encoding;\n bh=+E+o+aNk0CHjmIBkGKHgmosMQQyVO/7BF9hxr8UpXao=;\n b=WNu2jitGBbvI7TAcGwNtHDFy2Upx3iKazGBlz2Y/f5RrFyGmkFW9YlKyK/lXNfPlmp\n kCz0c1N4owENLiV5E/E1KullWzoaZIGxenTD/L2+BLvlzpTo2Kntr5oWRAvZP4tyZH4/\n f0Uge993Oc7KuSyGruSKh3MB85XTt/ZDZdoDz09gjcggO3Vr0e42Kol2HhYBqYTDITzj\n 6Mk6YwtF0lYKX9XL3VM6iuoDXJgS5CktRj2kcTCkU952Kb9UDRNmdwYzPCD2u1PrZZkD\n Ko027Ne3jLpbN0I5sAvNg14E3gY78mmdxv2RPbDSDqQ4L+jTmtAIsHaV5srAKevezCNM\n 0RRg==",
        "X-Gm-Message-State": "AOAM533l9H37qT51sMmp5TJpJT3MQyrj+fvLxbwhvemBBRaOOkg5+nFu\n e9gL37vOleTB2m8A7aS3c3E=",
        "X-Google-Smtp-Source": "\n ABdhPJwTEJ27OYACa1+AlYAvcPMWB9JsfTWTgmrQEgc6lVISLR09tt4cnP0umhCR/NNEkHAOniSX1Q==",
        "X-Received": "by 2002:a05:6a00:150c:: with SMTP id\n q12mr16628282pfu.270.1590409686633;\n Mon, 25 May 2020 05:28:06 -0700 (PDT)",
        "From": "Vaibhav Gupta <vaibhavgupta40@gmail.com>",
        "To": "Vaibhav Gupta <vaibhav.varodek@gmail.com>,\n Bjorn Helgaas <helgaas@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,\n bjorn@helgaas.com, Jeff Kirsher <jeffrey.t.kirsher@intel.com>,\n \"David S. Miller\" <davem@davemloft.net>, rjw@rjwysocki.net",
        "Date": "Mon, 25 May 2020 17:57:10 +0530",
        "Message-Id": "<20200525122710.25064-1-vaibhavgupta40@gmail.com>",
        "X-Mailer": "git-send-email 2.26.2",
        "MIME-Version": "1.0",
        "X-Mailman-Approved-At": "Tue, 26 May 2020 19:28:43 +0000",
        "Subject": "[Intel-wired-lan] [PATCH v2] e1000: use generic power management",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n <intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <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 <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "Cc": "Vaibhav Gupta <vaibhavgupta40@gmail.com>, netdev@vger.kernel.org,\n linux-kernel@vger.kernel.org, intel-wired-lan@lists.osuosl.org,\n skhan@linuxfoundation.org, linux-kernel-mentees@lists.linuxfoundation.org",
        "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": "compile-tested only\n\nWith legacy PM hooks, it was the responsibility of a driver to manage PCI\nstates and also the device's power state. The generic approach is to let PCI\ncore handle the work.\n\ne1000_suspend() calls __e1000_shutdown() to perform intermediate tasks.\n__e1000_shutdown() modifies the value of \"wake\" (device should be wakeup\nenabled or not), responsible for controlling the flow of legacy PM.\n\nSince, PCI core has no idea about the value of \"wake\", new code for generic\nPM may produce unexpected results. Thus, use \"device_set_wakeup_enable()\"\nto wakeup-enable the device accordingly.\n\nSigned-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>\n---\n drivers/net/ethernet/intel/e1000/e1000_main.c | 49 +++++--------------\n 1 file changed, 13 insertions(+), 36 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c\nindex 0d51cbc88028..011509709b3f 100644\n--- a/drivers/net/ethernet/intel/e1000/e1000_main.c\n+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c\n@@ -151,10 +151,8 @@ static int e1000_vlan_rx_kill_vid(struct net_device *netdev,\n \t\t\t\t  __be16 proto, u16 vid);\n static void e1000_restore_vlan(struct e1000_adapter *adapter);\n \n-#ifdef CONFIG_PM\n-static int e1000_suspend(struct pci_dev *pdev, pm_message_t state);\n-static int e1000_resume(struct pci_dev *pdev);\n-#endif\n+static int __maybe_unused e1000_suspend(struct device *dev);\n+static int __maybe_unused e1000_resume(struct device *dev);\n static void e1000_shutdown(struct pci_dev *pdev);\n \n #ifdef CONFIG_NET_POLL_CONTROLLER\n@@ -179,16 +177,16 @@ static const struct pci_error_handlers e1000_err_handler = {\n \t.resume = e1000_io_resume,\n };\n \n+static SIMPLE_DEV_PM_OPS(e1000_pm_ops, e1000_suspend, e1000_resume);\n+\n static struct pci_driver e1000_driver = {\n \t.name     = e1000_driver_name,\n \t.id_table = e1000_pci_tbl,\n \t.probe    = e1000_probe,\n \t.remove   = e1000_remove,\n-#ifdef CONFIG_PM\n-\t/* Power Management Hooks */\n-\t.suspend  = e1000_suspend,\n-\t.resume   = e1000_resume,\n-#endif\n+\t.driver = {\n+\t\t.pm = &e1000_pm_ops,\n+\t},\n \t.shutdown = e1000_shutdown,\n \t.err_handler = &e1000_err_handler\n };\n@@ -5048,9 +5046,6 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)\n \tstruct e1000_hw *hw = &adapter->hw;\n \tu32 ctrl, ctrl_ext, rctl, status;\n \tu32 wufc = adapter->wol;\n-#ifdef CONFIG_PM\n-\tint retval = 0;\n-#endif\n \n \tnetif_device_detach(netdev);\n \n@@ -5064,12 +5059,6 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)\n \t\te1000_down(adapter);\n \t}\n \n-#ifdef CONFIG_PM\n-\tretval = pci_save_state(pdev);\n-\tif (retval)\n-\t\treturn retval;\n-#endif\n-\n \tstatus = er32(STATUS);\n \tif (status & E1000_STATUS_LU)\n \t\twufc &= ~E1000_WUFC_LNKC;\n@@ -5130,37 +5119,26 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)\n \treturn 0;\n }\n \n-#ifdef CONFIG_PM\n-static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)\n+static int __maybe_unused e1000_suspend(struct device *dev)\n {\n \tint retval;\n+\tstruct pci_dev *pdev = to_pci_dev(dev);\n \tbool wake;\n \n \tretval = __e1000_shutdown(pdev, &wake);\n-\tif (retval)\n-\t\treturn retval;\n-\n-\tif (wake) {\n-\t\tpci_prepare_to_sleep(pdev);\n-\t} else {\n-\t\tpci_wake_from_d3(pdev, false);\n-\t\tpci_set_power_state(pdev, PCI_D3hot);\n-\t}\n+\tdevice_set_wakeup_enable(dev, wake);\n \n-\treturn 0;\n+\treturn retval;\n }\n \n-static int e1000_resume(struct pci_dev *pdev)\n+static int __maybe_unused e1000_resume(struct device *dev)\n {\n+\tstruct pci_dev *pdev = to_pci_dev(dev);\n \tstruct net_device *netdev = pci_get_drvdata(pdev);\n \tstruct e1000_adapter *adapter = netdev_priv(netdev);\n \tstruct e1000_hw *hw = &adapter->hw;\n \tu32 err;\n \n-\tpci_set_power_state(pdev, PCI_D0);\n-\tpci_restore_state(pdev);\n-\tpci_save_state(pdev);\n-\n \tif (adapter->need_ioport)\n \t\terr = pci_enable_device(pdev);\n \telse\n@@ -5197,7 +5175,6 @@ static int e1000_resume(struct pci_dev *pdev)\n \n \treturn 0;\n }\n-#endif\n \n static void e1000_shutdown(struct pci_dev *pdev)\n {\n",
    "prefixes": [
        "v2"
    ]
}