Patch "usb: xhci: fix config fail of FS hub behind a HS hub with MTT" has been added to the 4.1-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
usb: xhci: fix config fail of FS hub behind a HS hub with MTT
to the 4.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
usb-xhci-fix-config-fail-of-fs-hub-behind-a-hs-hub-with-mtt.patch
and it can be found in the queue-4.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
096b110a3dd3c868e4610937c80d2e3f3357c1a9Mon Sep 17 00:00:00 2001
From: Chunfeng Yun <[email protected]>
Date: Fri, 4 Dec 2015 15:53:43 +0200
Subject: usb: xhci: fix config fail of FS hub behind a HS hub with MTT
From: Chunfeng Yun <[email protected]>
commit 096b110a3dd3c868e4610937c80d2e3f3357c1a9 upstream.
if a full speed hub connects to a high speed hub which supports MTT, the MTT field of its slot context will be set to 1 when xHCI driver setups an xHCI virtual device in xhci_setup_addressable_virt_dev(); once usb core fetch its hub descriptor, and need to update the xHC's internal data structures for the device, the HUB field of its slot context will be set to 1 too, meanwhile MTT is also set before, this will cause configure endpoint command fail, so in the case, we should clear MTT to 0 for full speed hub according to section 6.2.2
--- drivers/usb/host/xhci.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/usb/host/xhci.c +8 -0
@@ -4794,8 +4794,16 @@ int xhci_update_hub_device(struct usb_hc ctrl_ctx->add_flags |=cpu_to_le32 (SLOT_FLAG ); slot_ctx =xhci_get_slot_ctx (xhci, config_cmd->in_ctx); slot_ctx->dev_info |=cpu_to_le32 (DEV_HUB ); +/* +* refer to section 6.2.2: MTT should be 0 for full speed hub, +* but it may be already set to 1 when setup an xHCI virtual +* device, so clear it anyway. +*/ if (tt->multi) slot_ctx->dev_info |=cpu_to_le32 (DEV_MTT ); +else if (hdev->speed ==USB_SPEED_FULL ) + slot_ctx->dev_info &=cpu_to_le32 (~DEV_MTT ); +if (xhci->hci_version >0x95 ) { xhci_dbg(xhci, "xHCI version %x needs hub " "TT think time and number of ports\n",
Patches currently in stable-queue which might be from [email protected] are
queue-4.1/usb-xhci-fix-config-fail-of-fs-hub-behind-a-hs-hub-with-mtt.patch