Page MenuHomeFreeBSD

libusb: implement zlp flag in libusb transfer
AcceptedPublic

Authored by aokblast on Aug 6 2025, 12:58 PM.
Tags
Referenced Files
Unknown Object (File)
Sat, May 30, 12:58 PM
Unknown Object (File)
Sat, May 30, 3:39 AM
Unknown Object (File)
Sat, May 30, 3:26 AM
Unknown Object (File)
Sat, May 30, 2:50 AM
Unknown Object (File)
Fri, May 29, 6:29 PM
Unknown Object (File)
Wed, May 27, 8:39 PM
Unknown Object (File)
May 18 2026, 9:07 AM
Unknown Object (File)
May 18 2026, 9:03 AM
Subscribers

Details

Reviewers
adrian
Group Reviewers
USB
Summary

The USB protocol defines a Zero-Length Packet (ZLP) to signal the end of
a transfer when the data size is an exact multiple of the Maximum Packet
Size (MPS). Without a ZLP in such cases, the device may not be able to
determine that the transfer has completed.

This flag is added to libusb to allow the user send a ZLP in the end
of libusb_xfer.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 66339
Build 63222: arc lint + arc unit

Event Timeline

Send packet only the multiple of packet

defer zlp check until we can find the xfer

lwhsu added inline comments.
lib/libusb/libusb10.c
1628

should we use libusb20_tr_get_max_packet_length() or libusb20_tr_get_max_total_length()?

This implemented is problematic since the correct way is to append a zero size TRB in TD instead of creating new TD. However, I think I am unable to make it work before 15.0 release. Therefore, I will modify it to at least we won't break any ABI for 15 if we want to merge later.

adrian added a reviewer: USB.
adrian added a project: USB.
This revision is now accepted and ready to land.Thu, Jun 18, 5:11 AM