On Thu, May 03, 2001, Martin Diehl <[EMAIL PROTECTED]> wrote:
> turns out much interrupt work (like ping -f localhost) was a pretty
> reliable trigger for the problem I've seen (uhci failes do IOC after
> some queued bulk processing).

Does this patch fix it? I haven't had the chance to test it myself, but it
compiles atleast.

JE

--- linux-2.4.5-pre1.orig/drivers/usb/uhci.c    Wed May  2 12:25:47 2001
+++ linux-2.4.5-pre1/drivers/usb/uhci.c Wed May  2 15:59:52 2001
@@ -578,20 +578,20 @@
                /* next URB's TD's already, so we'll take over ownership */
                /* of this QH and use it instead. Don't forget to delete */
                /* the old QH first */
-               uhci_free_qh(uhci, nurbp->qh);
-
-               nurbp->qh = urbp->qh;
-               nurbp->qh->urbp = nurbp;
-               urbp->qh = NULL;
 
                /* If the last TD from the first (this) urb didn't */
                /*  complete, reset qh->element to the first TD in the */
                /*  next urb */
                pltd = list_entry(urbp->td_list.prev, struct uhci_td, list);
                status = uhci_status_bits(pltd->status);
-               if ((status & TD_CTRL_ACTIVE) || uhci_actual_length(pltd->status) < 
uhci_expected_length(pltd->info)) {
-                       struct uhci_td *ftd = list_entry(nurbp->td_list.next, struct 
uhci_td, list);
-                       nurbp->qh->element = ftd->dma_handle;
+               if ((status & TD_CTRL_ACTIVE) || uhci_actual_length(pltd->status) < 
+uhci_expected_length(pltd->info))
+                       uhci_insert_qh(uhci, uhci->skel_hs_control_qh, nurbp->qh);
+               else {
+                       uhci_free_qh(uhci, nurbp->qh);
+
+                       nurbp->qh = urbp->qh;
+                       nurbp->qh->urbp = nurbp;
+                       urbp->qh = NULL;
                }
 
                nurbp->queued = 0;

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to