ChangeSet 1.1305.7.1, 2003/06/13 16:40:44-07:00, stern@rowland.harvard.edu [PATCH] USB: Keep root hub status timer running during suspend Not having heard any complaints about this patch, I'm submitting it. It fixes a problem with the root hub status URB implementation; the timer that controls the root hub polling was not getting reset during a PM suspend. drivers/usb/core/hcd.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff -Nru a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c --- a/drivers/usb/core/hcd.c Wed Jun 18 11:16:14 2003 +++ b/drivers/usb/core/hcd.c Wed Jun 18 11:16:14 2003 @@ -459,7 +459,8 @@ /* rh_timer protected by hcd_data_lock */ if (hcd->rh_timer.data || urb->status != -EINPROGRESS - || urb->transfer_buffer_length < len) { + || urb->transfer_buffer_length < len + || !HCD_IS_RUNNING (hcd->state)) { dev_dbg (hcd->controller, "not queuing rh status urb, stat %d\n", urb->status); @@ -489,11 +490,10 @@ local_irq_save (flags); spin_lock (&urb->lock); - /* do nothing if the hc is gone or the urb's been unlinked */ + /* do nothing if the urb's been unlinked */ if (!urb->dev || urb->status != -EINPROGRESS - || (hcd = urb->dev->bus->hcpriv) == 0 - || !HCD_IS_RUNNING (hcd->state)) { + || (hcd = urb->dev->bus->hcpriv) == 0) { spin_unlock (&urb->lock); local_irq_restore (flags); return;