From 6f0468df7ad910ba6951f33d26920ed3590f49a2 Mon Sep 17 00:00:00 2001 From: Hans Petter Selasky Date: Mon, 16 Dec 2013 10:50:13 +0000 Subject: [PATCH] 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 @ --- sys/dev/usb/controller/xhci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/dev/usb/controller/xhci.c b/sys/dev/usb/controller/xhci.c index c56e6f05ae7c..7ce437621837 100644 --- a/sys/dev/usb/controller/xhci.c +++ b/sys/dev/usb/controller/xhci.c @@ -1942,6 +1942,8 @@ xhci_setup_generic_chain_sub(struct xhci_std_temp *temp) /* 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);