<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"># 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   -&gt; 1.235  
#	drivers/usb/usb-ohci.c	1.20    -&gt; 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-&gt;actual_length = 0;
-  			urb-&gt;status = USB_ST_URB_PENDING;
-  			if (urb_priv-&gt;state != URB_DEL)
-  				td_submit_urb (urb);
+			urb-&gt;status = -EINPROGRESS;
+			td_submit_urb (urb);
   			break;
   			
 		case PIPE_ISOCHRONOUS:
@@ -790,6 +792,7 @@
 				/* usb_dec_dev_use done in dl_del_list() */
 				urb-&gt;status = -EINPROGRESS;
 				spin_unlock_irqrestore (&amp;usb_ed_lock, flags);
+				return -EINPROGRESS;
 			}
 		} else {
 			urb_rm_priv (urb);
</pre></body></html>