Skip to content

USBLL: Do not reassemble across STALL handshake

When device responds with STALL, the host will clear the halt using ClearFeature(ENDPOINT_HALT) request. The request always results in data toggle being reinitialized to DATA0. Because USBLL dissector does not track all control transfers, it is unaware of the expected data toggle change and thus would treat next DATA0 packet as retransmission if the last data packet before STALL was DATA0.

USB transfer never spans across STALL, i.e. data packet after STALL cannot be retransmission nor continuation of any earlier transfer.

Avoid continuing reassembly after a STALL by clearing active transfer information from endpoint info on every STALL handshake.

Merge request reports

Loading