Hi,

Here's a patch against 2.5.3-pre2 that adds the uhci USB driver that
fixes two data toggle bugs that were causing reduced performance with
this driver.  This patch was done by Johannes Erdfelt.

thanks,

greg k-h



diff -Nru a/drivers/usb/uhci.c b/drivers/usb/uhci.c
--- a/drivers/usb/uhci.c        Mon Jan 21 10:48:39 2002
+++ b/drivers/usb/uhci.c        Mon Jan 21 10:48:39 2002
@@ -520,7 +520,8 @@
 
        lltd = list_entry(lurbp->td_list.prev, struct uhci_td, list);
 
-       uhci_fixup_toggle(urb, uhci_toggle(lltd->info) ^ 1);
+       usb_settoggle(urb->dev, usb_pipeendpoint(urb->pipe), usb_pipeout(urb->pipe),
+               uhci_fixup_toggle(urb, uhci_toggle(lltd->info) ^ 1));
 
        /* All qh's in the queue need to link to the next queue */
        urbp->qh->link = eurbp->qh->link;
@@ -556,6 +557,7 @@
 
        /* Fix up the toggle for the next URB's */
        if (!urbp->queued)
+               /* We set the toggle when we unlink */
                toggle = usb_gettoggle(urb->dev, usb_pipeendpoint(urb->pipe), 
usb_pipeout(urb->pipe));
        else {
                /* If we're in the middle of the queue, grab the toggle */
@@ -1683,8 +1685,8 @@
 
                /* Control and Isochronous ignore the toggle, so this */
                /* is safe for all types */
-               if (!(td->status & TD_CTRL_ACTIVE) &&
-                   (uhci_actual_length(td->status) < uhci_expected_length(td->info) ||
+               if ((!(td->status & TD_CTRL_ACTIVE) &&
+                   (uhci_actual_length(td->status) < uhci_expected_length(td->info)) 
+||
                    tmp == head)) {
                        usb_settoggle(urb->dev, uhci_endpoint(td->info),
                                uhci_packetout(td->info),


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

Reply via email to