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