* [PATCH] rt2x00: Ignore set_state(STATE_SLEEP) failure
@ 2008-03-27 16:15 Ivo van Doorn
0 siblings, 0 replies; only message in thread
From: Ivo van Doorn @ 2008-03-27 16:15 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, rt2400-devel
Some hardware never seem to accept the "goto sleep" command, since the legacy
drivers don't have suspend and resume handlers the entire code for it was
basically a educated guess (based on the "enable radio" code).
This patch will only print a warning when the "goto sleep" command fails, and
just continues as usual. Perhaps that means the device will not reach a sleep
state and consumes more power then it should, but it is equally possible it
simply needs some seconds longer to sleep. Anyway, by making the command
non-fatal it will not block the rest of the suspend procedure.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
John, this is a (partial) solution to kernel bugreport:
[Bug 9428] panic in rt2x00 driver when resuming after hibernate
please push it to both 2.6.25 and 2.6.26 trees.
It should apply safely to the 2.6.25 with a minor fuzz warning only.
drivers/net/wireless/rt2x00/rt2x00dev.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 62b58a6..50ea7bd 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -1252,11 +1252,20 @@ int rt2x00lib_suspend(struct rt2x00_dev *rt2x00dev, pm_message_t state)
exit:
/*
- * Set device mode to sleep for power management.
+ * Set device mode to sleep for power management,
+ * on some hardware this call seems to consistently fail.
+ * From the specifications it is hard to tell why it fails,
+ * and if this is a "bad thing".
+ * Overall it is safe to just ignore the failure and
+ * continue suspending. The only downside is that the
+ * device will not be in optimal power save mode, but with
+ * the radio and the other components already disabled the
+ * device is as good as disabled.
*/
retval = rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_SLEEP);
if (retval)
- return retval;
+ WARNING(rt2x00dev, "Device failed to enter sleep state, "
+ "continue suspending.\n");
return 0;
}
--
1.5.4.4
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2008-03-27 16:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-27 16:15 [PATCH] rt2x00: Ignore set_state(STATE_SLEEP) failure Ivo van Doorn
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.