lkml.org 
[lkml]   [2004]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectRe: [PATCH 2.6] via-rhine: WOL band-aid (patch against 2.6.9)
Date
On Tuesday 30 November 2004 23:40, Roger Luethi wrote:

> This version applies against -mm. I suggest to put it there for testing
> and into 2.6.11 if feedback is good.

And here is the "backport" to 2.6.9 for current users waiting for this patch.
It is working for me on an ECS Elitegroup KT-600A mainboard with VT8237 and a
Rhine-II network controller.

Sven
--
Sven Ladegast, Friedrich-Fröbel-Straße 11, 93310 Arnstadt / Germany
Phone: +49-175-5334308, PGP-key: 0x5856A5ED

--- via-rhine.c 2004-10-18 23:55:28.000000000 +0200
+++ via-rhine-patched.c 2004-12-01 01:02:18.000000000 +0100
@@ -664,7 +664,7 @@ static void __devinit rhine_reload_eepro

/* Turn off EEPROM-controlled wake-up (magic packet) */
if (rp->quirks & rqWOL)
- writeb(readb(ioaddr + ConfigA) & 0xFE, ioaddr + ConfigA);
+ writeb(readb(ioaddr + ConfigA) & 0xFC, ioaddr + ConfigA);

}

@@ -1917,8 +1917,14 @@ static void rhine_shutdown (struct devic
if (rp->quirks & rq6patterns)
writeb(0x04, ioaddr + 0xA7);

- if (rp->wolopts & WAKE_MAGIC)
+ if (rp->wolopts & WAKE_MAGIC) {
writeb(WOLmagic, ioaddr + WOLcrSet);
+ /*
+ * Turn EEPROM-controlled wake-up back on -- some hardware may
+ * not cooperate otherwise.
+ */
+ writeb(readb(ioaddr + ConfigA) | 0x03, ioaddr + ConfigA);
+ }

if (rp->wolopts & (WAKE_BCAST|WAKE_MCAST))
writeb(WOLbmcast, ioaddr + WOLcgSet);
@@ -1929,9 +1935,11 @@ static void rhine_shutdown (struct devic
if (rp->wolopts & WAKE_UCAST)
writeb(WOLucast, ioaddr + WOLcrSet);

- /* Enable legacy WOL (for old motherboards) */
- writeb(0x01, ioaddr + PwcfgSet);
- writeb(readb(ioaddr + StickyHW) | 0x04, ioaddr + StickyHW);
+ if (rp->wolopts) {
+ /* Enable legacy WOL (for old motherboards) */
+ writeb(0x01, ioaddr + PwcfgSet);
+ writeb(readb(ioaddr + StickyHW) | 0x04, ioaddr + StickyHW);
+ }

/* Hit power state D3 (sleep) */
writeb(readb(ioaddr + StickyHW) | 0x03, ioaddr + StickyHW);
\
 
 \ /
  Last update: 2005-03-22 14:08    [W:0.033 / U:7.464 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site