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;
