#7303 BLOC 8.2.0 (: Libertas disconnects on resume with testing/master kernels.
Zarro Boogs per Child
bugtracker at laptop.org
Mon Jun 30 20:55:55 EDT 2008
#7303: Libertas disconnects on resume with testing/master kernels.
--------------------------+-------------------------------------------------
Reporter: cjb | Owner: jcardona
Type: defect | Status: closed
Priority: blocker | Milestone: 8.2.0 (was Update.2)
Component: wireless | Version: Update.1
Resolution: worksforme | Keywords: 8.2.0:?
Next_action: never set | Verified: 0
Blockedby: | Blocking: 7383
--------------------------+-------------------------------------------------
Changes (by andrey):
* status: assigned => closed
* resolution: => worksforme
Comment:
It looks like the problem is that we're not asking for USB persistence for
our device and in persistence mode our .resume hook wouldn't be called,
instead .post_reset or .reset_resume are used. First, confirm that
'persist' isn't set, for example:
{{{
cd /sys
find -name persist
cat ./devices/pci0000:00/0000:00:0f.5/usb2/2-1/power/persist
0
}}}
Looking at how persistence is done in USB mass storage, we basically need
to have our _resume() called (otherwise we get reset). The following
patch works for me:
{{{
--- a/drivers/net/wireless/libertas/if_usb.c
+++ b/drivers/net/wireless/libertas/if_usb.c
@@ -962,6 +962,8 @@ static struct usb_driver if_usb_driver = {
.id_table = if_usb_table,
.suspend = if_usb_suspend,
.resume = if_usb_resume,
+ .post_reset = if_usb_resume,
+ .reset_resume = if_usb_resume,
};
}}}
With that patch applied,
{{{
echo 1 > ./devices/pci0000:00/0000:00:0f.5/usb2/2-1/power/persist
echo mem > /sys/power/state
}}}
Press a key or otherwise cause the XO to resume and note that we don't
attempt to reload the firmware and our device didn't get reset.
--
Ticket URL: <http://dev.laptop.org/ticket/7303#comment:13>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system
More information about the Bugs
mailing list