[patch 36/60] r8169: avoid thrashing PCI conf space above RTL_GIGA_MAC_VER_06

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Greg KH
Date: Monday, August 18, 2008 - 11:44 am

2.6.26-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Marcus Sundberg <marcus@ingate.com>

commit 77332894c21165404496c56763d7df6c15c4bb09 upstream

The magic write to register 0x82 will often cause PCI config space on
my 8168 (PCI ID 10ec:8168, revision 2. mounted in an LG P300 laptop)
to be filled with ones during driver load, and thus breaking NIC
operation until reboot. If it does not happen on first driver load it
can easily be reproduced by unloading and loading the driver a few
times.

The magic write was added long ago by this commit:

Author: François Romieu <romieu@fr.zoreil.com>
Date:   Sat Jan 10 06:00:46 2004 -0500

     [netdrvr r8169] Merge of changes done by Realtek to rtl8169_init_one():
     - phy capability settings allows lower or equal capability as suggested
       in Realtek's changes;
     - I/O voodoo;
     - no need to s/mdio_write/RTL8169_WRITE_GMII_REG/;
     - s/rtl8169_hw_PHY_config/rtl8169_hw_phy_config/;
     - rtl8169_hw_phy_config(): ad-hoc struct "phy_magic" to limit duplication
       of code (yep, the u16 -> int conversions should work as expected);
     - variable renames and whitepace changes ignored.

As the 8168 wasn't supported by that version this patch simply removes
the bogus write from mac versions <= RTL_GIGA_MAC_VER_06.

[The change above makes sense for the 8101/8102 too -- Ueimor]

Signed-off-by: Marcus Sundberg <marcus@ingate.com>
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Karsten Keil <kkeil@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/net/r8169.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -1438,8 +1438,10 @@ static void rtl8169_init_phy(struct net_
 
 	rtl_hw_phy_config(dev);
 
-	dprintk("Set MAC Reg C+CR Offset 0x82h = 0x01h\n");
-	RTL_W8(0x82, 0x01);
+	if (tp->mac_version <= RTL_GIGA_MAC_VER_06) {
+		dprintk("Set MAC Reg C+CR Offset 0x82h = 0x01h\n");
+		RTL_W8(0x82, 0x01);
+	}
 
 	pci_write_config_byte(tp->pci_dev, PCI_LATENCY_TIMER, 0x40);
 

-- 
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[patch 00/60] 2.6.26-stable review, Greg KH, (Mon Aug 18, 11:40 am)
[patch 01/60] mlock() fix return values, Greg KH, (Mon Aug 18, 11:41 am)
[patch 02/60] SCSI: ses: fix VPD inquiry overrun, Greg KH, (Mon Aug 18, 11:41 am)
[patch 06/60] vt8623fb: fix kernel oops, Greg KH, (Mon Aug 18, 11:41 am)
[patch 11/60] radeonfb: fix accel engine hangs, Greg KH, (Mon Aug 18, 11:42 am)
[patch 26/60] random32: seeding improvement, Greg KH, (Mon Aug 18, 11:43 am)
[patch 28/60] sparc64: FUTEX_OP_ANDN fix, Greg KH, (Mon Aug 18, 11:44 am)
[patch 36/60] r8169: avoid thrashing PCI conf space above ..., Greg KH, (Mon Aug 18, 11:44 am)
[patch 41/60] x86: amd opteron TOM2 mask val fix, Greg KH, (Mon Aug 18, 11:44 am)
[patch 44/60] radeon: misc corrections, Greg KH, (Mon Aug 18, 11:45 am)
[patch 45/60] cs5520: add enablebits checking, Greg KH, (Mon Aug 18, 11:45 am)
[patch 50/60] sparc64: Implement IRQ stacks., Greg KH, (Mon Aug 18, 11:45 am)
[patch 52/60] x86: fix spin_is_contended(), Greg KH, (Mon Aug 18, 11:45 am)