Am Mittwoch, 18. Januar 2006 00:21 schrieb Johannes Berg:
> The attached patch implements suspend/resume for the hci_usb bluetooth
> driver by simply killing all outstanding urbs on suspend, and re-issuing
> them on resume.
>
> This allows me to actually use the internal bluetooth "dongle" in my
> powerbook after suspend-to-ram without taking down all userland programs
> (sdpd, ...) and the hci device and reloading the module.
>
> Signed-Off-By: Johannes Berg <[EMAIL PROTECTED]>
>
> --- linux-2.6.15.1.orig/drivers/bluetooth/hci_usb.c 2006-01-18
> 00:08:54.840000000 +0100
> +++ linux-2.6.15.1/drivers/bluetooth/hci_usb.c 2006-01-18
> 00:06:35.080000000 +0100
> @@ -1043,11 +1043,55 @@
> hci_free_dev(hdev);
> }
>
> +static int hci_usb_suspend(struct usb_interface *intf, pm_message_t message)
> +{
> + struct hci_usb *husb = usb_get_intfdata(intf);
> + int i;
> + unsigned long flags;
> + if (!husb || intf == husb->isoc_iface)
> + return 0;
> +
> + for (i = 0; i < 4; i++) {
> + struct _urb_queue *q = &husb->pending_q[i];
> + struct _urb *_urb;
> + spin_lock_irqsave(&q->lock, flags);
> + list_for_each_entry(_urb, &q->head, list)
> + usb_kill_urb(&_urb->urb);
> + spin_unlock_irqrestore(&q->lock, flags);
> + }
> + return 0;
This patch is wrong. usb_kill_urb() will sleep. You must not use it under
a spinlock.
Regards
Oliver
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel