mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
xhci(4): Only drop BULK and INTERRUPT endpoints to reset data toggle.
Only drop BULK and INTERRUPT endpoints, to reset the data toggle,
because for other endpoint types this is not critical.
Tested by: ehaupt@
PR: 262882
Sponsored by: NVIDIA Networking
(cherry picked from commit e276d28150)
This commit is contained in:
1 parent
683c36ae04
commit
a1ec8baee5
1 file changed
+9
-2
@@ -3932,9 +3932,16 @@ xhci_configure_reset_endpoint(struct usb_xfer *xfer)
|
||||
|
||||
mask = (1U << epno);
|
||||
|
||||
if (epno != 1 && drop != 0) {
|
||||
/*
|
||||
* So-called control and isochronous transfer types have
|
||||
* predefined data toggles (USB 2.0) or sequence numbers (USB
|
||||
* 3.0) and does not need to be dropped.
|
||||
*/
|
||||
if (drop != 0 &&
|
||||
(edesc->bmAttributes & UE_XFERTYPE) != UE_CONTROL &&
|
||||
(edesc->bmAttributes & UE_XFERTYPE) != UE_ISOCHRONOUS) {
|
||||
/* drop endpoint context to reset data toggle value, if any. */
|
||||
xhci_configure_mask(udev, mask, 1);
|
||||
xhci_configure_mask(udev, mask, 1);
|
||||
err = xhci_cmd_configure_ep(sc, buf_inp.physaddr, 0, index);
|
||||
if (err != 0) {
|
||||
DPRINTF("Could not drop "
|
||||
|
||||
Reference in new issue
Block a user