diff options
author | hselasky <hselasky@FreeBSD.org> | 2013-12-16 10:50:13 +0000 |
---|---|---|
committer | hselasky <hselasky@FreeBSD.org> | 2013-12-16 10:50:13 +0000 |
commit | 753c2d8f17960ecc4996efef8f4502290067be80 (patch) | |
tree | 6ab44ecc2e093542bb0ab597b7dd6aec9884f8e8 /sys/dev/usb/controller/xhci.c | |
parent | fb85ca5e57df35197bbc4a50b2802b07ff4e5dea (diff) | |
download | FreeBSD-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.c | 2 |
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); |