It is guaranteed that interrupt packets will be delivered in order. In fact, ALL USB packets defined through USB 2.0 (volume, iso-storage, interruption, management, including split-transaction / etc) are delivered in order.
Wired packets do not have sequence numbers (outside DATA0 / DATA1, which is used to disambiguate lost packets), so each packet is re-checked on the wire until it is delivered.
I did not work on USB 3.0, so it’s possible to create something new that’s not okay, but even if it is, existing ones will continue to be in order.
source
share