public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Roger Luethi <rl@hellgate.ch>
To: linux-kernel@vger.kernel.org
Cc: Jeff Garzik <jgarzik@pobox.com>, Andrew Morton <akpm@osdl.org>,
	Pavel Ruzicka <pavouk@pavouk.org>
Subject: [PATCH 2.6] via-rhine: WOL band-aid
Date: Tue, 30 Nov 2004 23:40:14 +0100	[thread overview]
Message-ID: <20041130224014.GD29947@k3.hellgate.ch> (raw)

After I disabled legacy WOL (i.e. controlled by EEPROM rather than
driver) in 2.6.9, several people reported regressions. Legacy WOL had
worked for them, but now it didn't anymore. The Right Way (TM) to fix
this will get the driver to set up working WOL for all hardware, but a
simpler solution will have to do for the time being: If a user requests
magic packet WOL, the driver re-enables legacy WOL. Yeah, I know it's
cheating.

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

Thanks to Pavel Ruzicka for testing.

Roger

Signed-off-by: Roger Luethi <rl@hellgate.ch>

--- 2.6-mm/drivers/net/via-rhine.c.orig	2004-11-30 23:28:46.663676720 +0100
+++ 2.6-mm/drivers/net/via-rhine.c	2004-11-30 23:32:00.928144032 +0100
@@ -654,7 +654,7 @@ static void __devinit rhine_reload_eepro
 
 	/* Turn off EEPROM-controlled wake-up (magic packet) */
 	if (rp->quirks & rqWOL)
-		iowrite8(ioread8(ioaddr + ConfigA) & 0xFE, ioaddr + ConfigA);
+		iowrite8(ioread8(ioaddr + ConfigA) & 0xFC, ioaddr + ConfigA);
 
 }
 
@@ -1905,8 +1905,14 @@ static void rhine_shutdown (struct devic
 	if (rp->quirks & rq6patterns)
 		iowrite8(0x04, ioaddr + 0xA7);
 
-	if (rp->wolopts & WAKE_MAGIC)
+	if (rp->wolopts & WAKE_MAGIC) {
 		iowrite8(WOLmagic, ioaddr + WOLcrSet);
+		/*
+		 * Turn EEPROM-controlled wake-up back on -- some hardware may
+		 * not cooperate otherwise.
+		 */
+		iowrite8(ioread8(ioaddr + ConfigA) | 0x03, ioaddr + ConfigA);
+	}
 
 	if (rp->wolopts & (WAKE_BCAST|WAKE_MCAST))
 		iowrite8(WOLbmcast, ioaddr + WOLcgSet);
@@ -1917,9 +1923,11 @@ static void rhine_shutdown (struct devic
 	if (rp->wolopts & WAKE_UCAST)
 		iowrite8(WOLucast, ioaddr + WOLcrSet);
 
-	/* Enable legacy WOL (for old motherboards) */
-	iowrite8(0x01, ioaddr + PwcfgSet);
-	iowrite8(ioread8(ioaddr + StickyHW) | 0x04, ioaddr + StickyHW);
+	if (rp->wolopts) {
+		/* Enable legacy WOL (for old motherboards) */
+		iowrite8(0x01, ioaddr + PwcfgSet);
+		iowrite8(ioread8(ioaddr + StickyHW) | 0x04, ioaddr + StickyHW);
+	}
 
 	/* Hit power state D3 (sleep) */
 	iowrite8(ioread8(ioaddr + StickyHW) | 0x03, ioaddr + StickyHW);

             reply	other threads:[~2004-11-30 22:45 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-30 22:40 Roger Luethi [this message]
2004-11-30 23:17 ` [PATCH 2.6] via-rhine: WOL band-aid Jeff Garzik
2004-11-30 23:45   ` Roger Luethi
2004-12-02 22:40     ` Jeff Garzik
2004-12-01  0:46 ` [PATCH 2.6] via-rhine: WOL band-aid (patch against 2.6.9) Sven Ladegast

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20041130224014.GD29947@k3.hellgate.ch \
    --to=rl@hellgate.ch \
    --cc=akpm@osdl.org \
    --cc=jgarzik@pobox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavouk@pavouk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox