# 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.