summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/controller/xhci.c
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2013-12-16 10:50:13 +0000
committerhselasky <hselasky@FreeBSD.org>2013-12-16 10:50:13 +0000
commit753c2d8f17960ecc4996efef8f4502290067be80 (patch)
tree6ab44ecc2e093542bb0ab597b7dd6aec9884f8e8 /sys/dev/usb/controller/xhci.c
parentfb85ca5e57df35197bbc4a50b2802b07ff4e5dea (diff)
downloadFreeBSD-src-753c2d8f17960ecc4996efef8f4502290067be80.zip
FreeBSD-src-753c2d8f17960ecc4996efef8f4502290067be80.tar.gz
Fix regression issue after r259248:
Some Intel XHCI controlles timeout processing so-called "TRBs" when the final LINK TRB of a so-called "TD" has the CHAIN-BIT set. MFC after: 1 week Tested by: glebius @
Diffstat (limited to 'sys/dev/usb/controller/xhci.c')
-rw-r--r--sys/dev/usb/controller/xhci.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/dev/usb/controller/xhci.c b/sys/dev/usb/controller/xhci.c
index c56e6f0..7ce4376 100644
--- a/sys/dev/usb/controller/xhci.c
+++ b/sys/dev/usb/controller/xhci.c
@@ -1942,6 +1942,8 @@ restart:
/* remove chain bit because this is the last data TRB in the chain */
td->td_trb[td->ntrb - 1].dwTrb2 &= ~htole32(XHCI_TRB_2_TDSZ_SET(15));
td->td_trb[td->ntrb - 1].dwTrb3 &= ~htole32(XHCI_TRB_3_CHAIN_BIT);
+ /* remove CHAIN-BIT from last LINK TRB */
+ td->td_trb[td->ntrb].dwTrb3 &= ~htole32(XHCI_TRB_3_CHAIN_BIT);
usb_pc_cpu_flush(td->page_cache);
OpenPOWER on IntegriCloud