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
