Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/582/?format=api
{ "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" ] }