xhci: Don't let the USB core disable SuperSpeed ports.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Tue, 16 Nov 2010 23:58:52 +0000 (15:58 -0800)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Sat, 20 Nov 2010 00:23:31 +0000 (16:23 -0800)
commit6dd0a3a7e0793dbeae1b951f091025d8cf896cb4
tree3598fdb54900c51e4f28a2cf33ad479cc5ce5407
parentda6699ce4a889c3795624ccdcfe7181cc89f18e8
xhci: Don't let the USB core disable SuperSpeed ports.

Disabling SuperSpeed ports is a Very Bad Thing (TM).  It disables
SuperSpeed terminations, which means that devices will never connect at
SuperSpeed on that port.  For USB 2.0/1.1 ports, disabling the port meant
that the USB core could always get a connect status change later.  That's
not true with USB 3.0 ports.

Do not let the USB core disable SuperSpeed ports.  We can't rely on the
device speed in the port status registers, since that isn't valid until
there's a USB device connected to the port.  Instead, we use the port
speed array that's created from the Extended Capabilities registers.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Tested-by: Don Zickus <dzickus@redhat.com>
Cc: stable@kernel.org
drivers/usb/host/xhci-hub.c