linux/drivers/usb/core
Elric Fu a45aa3b305 USB: Set hub depth after USB3 hub reset
The superspeed device attached to a USB 3.0 hub(such as VIA's)
doesn't respond the address device command after resume. The
root cause is the superspeed hub will miss the Hub Depth value
that is used as an offset into the route string to locate the
bits it uses to determine the downstream port number after
reset, and all packets can't be routed to the device attached
to the superspeed hub.

Hub driver sends a Set Hub Depth request to the superspeed hub
except for USB 3.0 root hub when the hub is initialized and
doesn't send the request again after reset due to the resume
process. So moving the code that sends the Set Hub Depth request
to the superspeed hub from hub_configure() to hub_activate()
is to cover those situations include initialization and reset.

The patch should be backported to kernels as old as 2.6.39.

Signed-off-by: Elric Fu <elricfu1@gmail.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Cc: stable@vger.kernel.org
2012-02-21 15:45:25 -08:00
..
Kconfig kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
Makefile usb: makefile cleanup 2010-10-22 10:22:07 -07:00
buffer.c USB: Core: Fix minor coding style issues 2011-01-22 19:35:39 -08:00
config.c usbcore: get BOS descriptor set 2011-09-26 15:51:08 -07:00
devices.c USB: use usb_endpoint_maxp() instead of le16_to_cpu() 2011-08-23 09:47:40 -07:00
devio.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
driver.c USB: remove dead code from suspend/resume path 2012-01-03 16:49:28 -08:00
endpoint.c USB: use usb_endpoint_maxp() instead of le16_to_cpu() 2011-08-23 09:47:40 -07:00
file.c switch device_get_devnode() and ->devnode() to umode_t * 2012-01-03 22:54:55 -05:00
generic.c USB: accept RNDIS configs if there's no alternative 2010-08-10 14:35:43 -07:00
hcd-pci.c USB: Don't fail USB3 probe on missing legacy PCI IRQ. 2012-02-14 10:48:05 -08:00
hcd.c USB: Don't fail USB3 probe on missing legacy PCI IRQ. 2012-02-14 10:48:05 -08:00
hub.c USB: Set hub depth after USB3 hub reset 2012-02-21 15:45:25 -08:00
inode.c vfs: switch ->show_options() to struct dentry * 2012-01-06 23:19:54 -05:00
message.c USB: message: cleanup min_t() cast in usb_sg_init() 2011-09-29 13:13:07 -07:00
notify.c usb: Add export.h for EXPORT_SYMBOL/THIS_MODULE where needed 2011-10-31 19:31:25 -04:00
otg_whitelist.h USB: fix codingstyle issues in drivers/usb/core/*.h 2008-02-01 14:35:07 -08:00
quirks.c USB: add quirk for another camera 2012-01-03 16:48:56 -08:00
sysfs.c switch ->is_visible() to returning umode_t 2012-01-03 22:54:55 -05:00
urb.c USB: use usb_endpoint_maxp() instead of le16_to_cpu() 2011-08-23 09:47:40 -07:00
usb.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
usb.h USB: move usb_translate_errors to linux/usb.h 2011-11-15 10:47:40 -08:00