Skip to content

USBLL: Reassemble transactions into transfers

Tomasz Moń requested to merge desowin/wireshark:usbll into master

Create pseudo URB and pass the reassembled data to USB URB dissector. Reassembly for control transfers is not problematic as the transfer length is known. For bulk transfers assume the transfer can span across multiple transactions, however for periodic (interrupt and isochronous) assume the transfer never spans across multiple transactions.

Rely on USB dissector to provide endpoint maximum packet size. Actual interface/configuration handling in USB dissector needs to be reworked as the code assumes that there is only one configuration and alternate interface configurations have matching endpoints.

While the reassembly bulk transfers and never reassemble periodic transfers result in pretty good dissection, the USB class dissectors need a mechanism to provide transfer size hints to USBLL dissector. Such hint is not needed for software USB capture as software sniffers essentially capture URBs and every transfer is associated with one URB. The problem can be seen for example in Mass Storage Class where it is common for data transfers length to be multiple of endpoint maximum packet size. Because USBLL dissector doesn't know expected transfer size, it combines together data and status transport.

Related to #15908 (closed)

Edited by Tomasz Moń

Merge request reports