HomeFreeBSD

xhci: Do not drop and add bits in xhci

Description

xhci: Do not drop and add bits in xhci

Drop and Add bits reset the data toggle for high-speed devices in XHCI.
The toggle bit represents the sequence number in USB 2.0 transfers. However,
a device can only recognize that the toggle bit has been reset while in
the HALT state. As a result, the host and device toggle values may
become mismatched, causing xHCI to reject the packet. This issue was
observed while testing the EZ-USB FX2 device.

The transfer may then return to the original value after a
bi-directional TD because the toggle field is only one bit wide. This
explains the reson that we can only receive packets bi-transfer in some
case. Therefore, we do not reset the toggle bit here.

Reviewed by: adrian
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D57146

Details

Provenance
aokblastAuthored on May 21 2026, 12:49 PM
Reviewer
adrian
Differential Revision
D57146: xhci: Do not drop and add bits in xhci
Parents
rG0c85df006514: vop_read_pgcache_post(): the vnode is unlocked
Branches
Unknown
Tags
Unknown