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