# 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.686   -> 1.687  
#	drivers/usb/core/message.c	1.5     -> 1.6    
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/07/22	david-b@pacbell.net	1.687
# [PATCH] usb_set_interface() doc
# 
# This patch updates the kerneldoc for usb_set_interface()
# to capture the point that it must not be called while
# any URBs are pending to endpoints in that interface.
# (Else state in the hcds, and devices, can get confused.)
# --------------------------------------------
#
diff -Nru a/drivers/usb/core/message.c b/drivers/usb/core/message.c
--- a/drivers/usb/core/message.c	Mon Jul 22 17:11:15 2002
+++ b/drivers/usb/core/message.c	Mon Jul 22 17:11:15 2002
@@ -436,17 +436,21 @@
  * Within any given configuration, each interface may have several
  * alternative settings.  These are often used to control levels of
  * bandwidth consumption.  For example, the default setting for a high
- * speed interrupt endpoint may not send more than about 4KBytes per
- * microframe, and isochronous endpoints may never be part of a an
+ * speed interrupt endpoint may not send more than 64 bytes per microframe,
+ * while interrupt transfers of up to 3KBytes per microframe are legal.
+ * Also, isochronous endpoints may never be part of an
  * interface's default setting.  To access such bandwidth, alternate
- * interface setting must be made current.
+ * interface settings must be made current.
  *
  * Note that in the Linux USB subsystem, bandwidth associated with
- * an endpoint in a given alternate setting is not reserved until an
+ * an endpoint in a given alternate setting is not reserved until an URB
  * is submitted that needs that bandwidth.  Some other operating systems
  * allocate bandwidth early, when a configuration is chosen.
  *
  * This call is synchronous, and may not be used in an interrupt context.
+ * Also, drivers must not change altsettings while urbs are scheduled for
+ * endpoints in that interface; all such urbs must first be completed
+ * (perhaps forced by unlinking).
  *
  * Returns zero on success, or else the status code returned by the
  * underlying usb_control_msg() call.
