# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.234 -> 1.235 # drivers/usb/usb-ohci.c 1.20 -> 1.21 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 02/03/22 david-b@pacbell.net 1.235 # USB ohci and unlink-in-completion # # This fixes the problem Stuart reported, where interrupt urbs # couldn't be unlinked from their completion handlers, and it # also makes OHCI return the correct status code for async # unlink requests (-EINPROGRESS not zero). # -------------------------------------------- # diff -Nru a/drivers/usb/usb-ohci.c b/drivers/usb/usb-ohci.c --- a/drivers/usb/usb-ohci.c Fri Mar 22 15:48:19 2002 +++ b/drivers/usb/usb-ohci.c Fri Mar 22 15:48:19 2002 @@ -11,6 +11,9 @@ * * * History: + * + * 2002/01/20 async unlink fixes: return -EINPROGRESS (per spec) and + * make interrupt unlink-in-completion work (db) * * 2001/09/19 USB_ZERO_PACKET support (Jean Tourrilhes) * 2001/07/17 power management and pmac cleanup (Benjamin Herrenschmidt) @@ -486,9 +489,8 @@ /* implicitly requeued */ urb->actual_length = 0; - urb->status = USB_ST_URB_PENDING; - if (urb_priv->state != URB_DEL) - td_submit_urb (urb); + urb->status = -EINPROGRESS; + td_submit_urb (urb); break; case PIPE_ISOCHRONOUS: @@ -790,6 +792,7 @@ /* usb_dec_dev_use done in dl_del_list() */ urb->status = -EINPROGRESS; spin_unlock_irqrestore (&usb_ed_lock, flags); + return -EINPROGRESS; } } else { urb_rm_priv (urb);