get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 582,
    "url": "http://patchwork.ozlabs.org/api/patches/582/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20080919015209.GA21268@havoc.gtf.org/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/projects/7/?format=api",
        "name": "Linux network development",
        "link_name": "netdev",
        "list_id": "netdev.vger.kernel.org",
        "list_email": "netdev@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20080919015209.GA21268@havoc.gtf.org>",
    "list_archive_url": null,
    "date": "2008-09-19T01:52:09",
    "name": "[git,patches] regression fixes for .27-rc",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "f8eba9d4991676fc1d6c69773d0ff5eb97db83bb",
    "submitter": {
        "id": 55,
        "url": "http://patchwork.ozlabs.org/api/people/55/?format=api",
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/20080919015209.GA21268@havoc.gtf.org/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/582/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/582/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<netdev-owner@vger.kernel.org>",
        "X-Original-To": "patchwork-incoming@ozlabs.org",
        "Delivered-To": "patchwork-incoming@ozlabs.org",
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.176.167])\n\tby ozlabs.org (Postfix) with ESMTP id B1FA5DDDE7\n\tfor <patchwork-incoming@ozlabs.org>;\n\tFri, 19 Sep 2008 11:52:29 +1000 (EST)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1755778AbYISBwM (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tThu, 18 Sep 2008 21:52:12 -0400",
            "(majordomo@vger.kernel.org) by vger.kernel.org id S1755691AbYISBwM\n\t(ORCPT <rfc822; netdev-outgoing>); Thu, 18 Sep 2008 21:52:12 -0400",
            "from havoc.gtf.org ([69.61.125.42]:54209 \"EHLO havoc.gtf.org\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S1755581AbYISBwL (ORCPT <rfc822;netdev@vger.kernel.org>);\n\tThu, 18 Sep 2008 21:52:11 -0400",
            "by havoc.gtf.org (Postfix, from userid 500)\n\tid B826D1F82B4; Thu, 18 Sep 2008 21:52:09 -0400 (EDT)"
        ],
        "Date": "Thu, 18 Sep 2008 21:52:09 -0400",
        "From": "Jeff Garzik <jeff@garzik.org>",
        "To": "David Miller <davem@davemloft.net>",
        "Cc": "netdev@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>",
        "Subject": "[git patches] regression fixes for .27-rc",
        "Message-ID": "<20080919015209.GA21268@havoc.gtf.org>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=us-ascii",
        "Content-Disposition": "inline",
        "User-Agent": "Mutt/1.5.18 (2008-05-17)",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "This is all the net driver-related regressions AFAICS.\n\nPlease pull from 'davem-fixes' branch of\nmaster.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git davem-fixes\n\nto receive the following updates:\n\n drivers/net/e100.c           |    4 +---\n drivers/net/e1000/e1000_hw.c |   23 +++++++++++++++++++++++\n drivers/net/forcedeth.c      |   16 +++++++++++++---\n 3 files changed, 37 insertions(+), 6 deletions(-)\n\nChristopher Li (1):\n      e1000: prevent corruption of EEPROM/NVM\n\nRafael J. Wysocki (1):\n      e100: Use pci_pme_active to clear PME_Status and disable PME#\n\nYinghai Lu (1):\n      forcedeth: call restore mac addr in nv_shutdown path",
    "diff": "diff --git a/drivers/net/e100.c b/drivers/net/e100.c\nindex 453115a..5cf78d6 100644\n--- a/drivers/net/e100.c\n+++ b/drivers/net/e100.c\n@@ -2738,9 +2738,7 @@ static int __devinit e100_probe(struct pci_dev *pdev,\n \t\tnic->flags |= wol_magic;\n \n \t/* ack any pending wake events, disable PME */\n-\terr = pci_enable_wake(pdev, 0, 0);\n-\tif (err)\n-\t\tDPRINTK(PROBE, ERR, \"Error clearing wake event\\n\");\n+\tpci_pme_active(pdev, false);\n \n \tstrcpy(netdev->name, \"eth%d\");\n \tif((err = register_netdev(netdev))) {\ndiff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c\nindex 9d6edf3..d04eef5 100644\n--- a/drivers/net/e1000/e1000_hw.c\n+++ b/drivers/net/e1000/e1000_hw.c\n@@ -144,6 +144,8 @@ static s32 e1000_host_if_read_cookie(struct e1000_hw *hw, u8 *buffer);\n static u8 e1000_calculate_mng_checksum(char *buffer, u32 length);\n static s32 e1000_configure_kmrn_for_10_100(struct e1000_hw *hw, u16 duplex);\n static s32 e1000_configure_kmrn_for_1000(struct e1000_hw *hw);\n+static s32 e1000_do_read_eeprom(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);\n+static s32 e1000_do_write_eeprom(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);\n \n /* IGP cable length table */\n static const\n@@ -168,6 +170,8 @@ u16 e1000_igp_2_cable_length_table[IGP02E1000_AGC_LENGTH_TABLE_SIZE] =\n       83, 89, 95, 100, 105, 109, 113, 116, 119, 122, 124,\n       104, 109, 114, 118, 121, 124};\n \n+static DEFINE_SPINLOCK(e1000_eeprom_lock);\n+\n /******************************************************************************\n  * Set the phy type member in the hw struct.\n  *\n@@ -4904,6 +4908,15 @@ static s32 e1000_spi_eeprom_ready(struct e1000_hw *hw)\n  *****************************************************************************/\n s32 e1000_read_eeprom(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)\n {\n+    s32 ret;\n+    spin_lock(&e1000_eeprom_lock);\n+    ret = e1000_do_read_eeprom(hw, offset, words, data);\n+    spin_unlock(&e1000_eeprom_lock);\n+    return ret;\n+}\n+\n+static s32 e1000_do_read_eeprom(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)\n+{\n     struct e1000_eeprom_info *eeprom = &hw->eeprom;\n     u32 i = 0;\n \n@@ -5236,6 +5249,16 @@ s32 e1000_update_eeprom_checksum(struct e1000_hw *hw)\n  *****************************************************************************/\n s32 e1000_write_eeprom(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)\n {\n+    s32 ret;\n+    spin_lock(&e1000_eeprom_lock);\n+    ret = e1000_do_write_eeprom(hw, offset, words, data);\n+    spin_unlock(&e1000_eeprom_lock);\n+    return ret;\n+}\n+\n+\n+static s32 e1000_do_write_eeprom(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)\n+{\n     struct e1000_eeprom_info *eeprom = &hw->eeprom;\n     s32 status = 0;\n \ndiff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c\nindex 0b6ecef..eeb55ed 100644\n--- a/drivers/net/forcedeth.c\n+++ b/drivers/net/forcedeth.c\n@@ -5643,6 +5643,7 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i\n \t\tdev->dev_addr[4] = (np->orig_mac[0] >>  8) & 0xff;\n \t\tdev->dev_addr[5] = (np->orig_mac[0] >>  0) & 0xff;\n \t\twritel(txreg|NVREG_TRANSMITPOLL_MAC_ADDR_REV, base + NvRegTransmitPoll);\n+\t\tprintk(KERN_DEBUG \"nv_probe: set workaround bit for reversed mac addr\\n\");\n \t}\n \tmemcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);\n \n@@ -5890,14 +5891,12 @@ static void nv_restore_phy(struct net_device *dev)\n \t}\n }\n \n-static void __devexit nv_remove(struct pci_dev *pci_dev)\n+static void nv_restore_mac_addr(struct pci_dev *pci_dev)\n {\n \tstruct net_device *dev = pci_get_drvdata(pci_dev);\n \tstruct fe_priv *np = netdev_priv(dev);\n \tu8 __iomem *base = get_hwbase(dev);\n \n-\tunregister_netdev(dev);\n-\n \t/* special op: write back the misordered MAC address - otherwise\n \t * the next nv_probe would see a wrong address.\n \t */\n@@ -5905,6 +5904,15 @@ static void __devexit nv_remove(struct pci_dev *pci_dev)\n \twritel(np->orig_mac[1], base + NvRegMacAddrB);\n \twritel(readl(base + NvRegTransmitPoll) & ~NVREG_TRANSMITPOLL_MAC_ADDR_REV,\n \t       base + NvRegTransmitPoll);\n+}\n+\n+static void __devexit nv_remove(struct pci_dev *pci_dev)\n+{\n+\tstruct net_device *dev = pci_get_drvdata(pci_dev);\n+\n+\tunregister_netdev(dev);\n+\n+\tnv_restore_mac_addr(pci_dev);\n \n \t/* restore any phy related changes */\n \tnv_restore_phy(dev);\n@@ -5975,6 +5983,8 @@ static void nv_shutdown(struct pci_dev *pdev)\n \tif (netif_running(dev))\n \t\tnv_close(dev);\n \n+\tnv_restore_mac_addr(pdev);\n+\n \tpci_disable_device(pdev);\n \tif (system_state == SYSTEM_POWER_OFF) {\n \t\tif (pci_enable_wake(pdev, PCI_D3cold, np->wolenabled))\n",
    "prefixes": [
        "git",
        "patches"
    ]
}