ChangeSet 1.1005.1.10, 2003/06/27 15:23:21-07:00, david@csse.uwa.edu.au [PATCH] USB: usb-ohci handling of one-shot interrupt transfers A long standing problem has existed with usb-ohci handling of one-shot interrupt transfers (they never worked). Attached is a fix which was originally proposed by P.C. Chan and subsequently modified and re-presented by Frode Isaksen. The Lego USB driver does not work with ohci without this fix and so I would really appreciate it being applied. drivers/usb/host/usb-ohci.c | 19 +++++++++++++------ 1 files changed, 13 insertions(+), 6 deletions(-) diff -Nru a/drivers/usb/host/usb-ohci.c b/drivers/usb/host/usb-ohci.c --- a/drivers/usb/host/usb-ohci.c Fri Jun 27 16:27:06 2003 +++ b/drivers/usb/host/usb-ohci.c Fri Jun 27 16:27:06 2003 @@ -490,13 +490,20 @@ usb_pipeout (urb->pipe) ? PCI_DMA_TODEVICE : PCI_DMA_FROMDEVICE); - urb->complete (urb); - /* implicitly requeued */ - urb->actual_length = 0; - urb->status = -EINPROGRESS; - td_submit_urb (urb); - break; + if (urb->interval) { + urb->complete (urb); + + /* implicitly requeued */ + urb->actual_length = 0; + urb->status = -EINPROGRESS; + td_submit_urb (urb); + } else { + urb_rm_priv(urb); + urb->complete (urb); + } + break; + case PIPE_ISOCHRONOUS: for (urbt = urb->next; urbt && (urbt != urb); urbt = urbt->next);