On Fri, Mar 22, 2002 at 03:59:32PM -0800, Greg KH wrote:
> [EMAIL PROTECTED], 2002-03-22 15:19:09-08:00, [EMAIL PROTECTED]
>   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).
> 
>  drivers/usb/usb-ohci.c |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)


# 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      [EMAIL PROTECTED]     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);

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to