David Brownell wrote:

But, rather than just logging a KERN_CRIT error, the better fix would
be to just do what ehci-hcd.c::unlink_async() does and stick that QH
at the end of the reclaim queue, in QH_STATE_UNLINK_WAIT.  In fact,
can you try just calling unlink_async() there, to see if that behaves?
Instead of start_unlink_async().  If that works, I'd like to see if
this could still get into 2.6.11 ...



Did you mean something like this?

--- linux-2.6.11-rc3.orig/drivers/usb/host/ehci-q.c 2005-02-05 10:41:57.000000000 +0100
+++ linux-2.6.11-rc3/drivers/usb/host/ehci-q.c 2005-02-09 20:31:40.000000000 +0100
@@ -267,6 +267,7 @@
}


static void start_unlink_async (struct ehci_hcd *ehci, struct ehci_qh *qh);
+static void unlink_async (struct ehci_hcd *ehci, struct ehci_qh *qh);

static void intr_deschedule (struct ehci_hcd *ehci, struct ehci_qh *qh);
static int qh_schedule (struct ehci_hcd *ehci, struct ehci_qh *qh);
@@ -430,7 +431,7 @@
                               intr_deschedule (ehci, qh);
                               (void) qh_schedule (ehci, qh);
                       } else
-                               start_unlink_async (ehci, qh);
+                               unlink_async (ehci, qh);
                       break;
               /* otherwise, unlink already started */
               }

or should the if still be there? This seems correct.

/Brian


------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ [email protected] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to