Hello,

I have developed a driver for an ADSL USB adapter, which is using Interrupt
OUT pipes. With the uhci and usb-uhci drivers this works fine, but with ohci
I am not able to kill the urb. With the uhci driver, in order to submit the
urb only once, you set the urb->interval to 0. This is not tested when the
urb completes with the ohci driver, and the urb is constantly re-submitted.
With this small patch, the urb->interval is tested, and if the urb->interval
is 0, the urb is unlinked.
Tested with 2.4.18 and 2.4.19 (pre). Patch is for 2.4.18.

Frode


--- usb-ohci.c.orig    Mon Jul  1 17:51:44 2002
+++ usb-ohci.c    Mon Jul  1 17:59:32 2002
@@ -482,13 +482,19 @@
                 usb_pipeout (urb->pipe)
                     ? PCI_DMA_TODEVICE
                     : PCI_DMA_FROMDEVICE);
-            urb->complete (urb);
 
-            /* implicitly requeued */
-              urb->actual_length = 0;
-              urb->status = USB_ST_URB_PENDING;
-              if (urb_priv->state != URB_DEL)
-                  td_submit_urb (urb);
+            if (urb->interval) {
+                urb->complete (urb);
+            
+                /* implicitly requeued */
+                urb->actual_length = 0;
+                urb->status = USB_ST_URB_PENDING;
+                if (urb_priv->state != URB_DEL)
+                    td_submit_urb (urb);
+            } else {
+                urb_rm_priv(urb);
+                urb->complete (urb);
+            }
               break;
               
         case PIPE_ISOCHRONOUS:



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to