git: 3eda34934097 - main - libusb: implement libusb_fill_bulk_stream_transfer
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 21 Jul 2025 06:17:16 UTC
The branch main has been updated by aokblast:
URL: https://cgit.FreeBSD.org/src/commit/?id=3eda34934097f5cbf1e4a91d3b7acb58904be85e
commit 3eda34934097f5cbf1e4a91d3b7acb58904be85e
Author: ShengYi Hung <aokblast@FreeBSD.org>
AuthorDate: 2025-07-09 11:27:26 +0000
Commit: ShengYi Hung <aokblast@FreeBSD.org>
CommitDate: 2025-07-21 06:16:41 +0000
libusb: implement libusb_fill_bulk_stream_transfer
Bulk streams are essentially bulk transfers with a stream ID. All
requirements from both libusb20 and the kernel are already handled; we
just need to set the stream ID.
Approved by: markj (mentor), lwhsu(mentor)
Differential Revision: https://reviews.freebsd.org/D51226
---
lib/libusb/libusb.h | 1 +
lib/libusb/libusb10.c | 1 +
lib/libusb/libusb10_io.c | 13 +++++++++++++
3 files changed, 15 insertions(+)
diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h
index 57478c1787ee..1803ff637738 100644
--- a/lib/libusb/libusb.h
+++ b/lib/libusb/libusb.h
@@ -122,6 +122,7 @@ enum libusb_transfer_type {
LIBUSB_TRANSFER_TYPE_ISOCHRONOUS = 1,
LIBUSB_TRANSFER_TYPE_BULK = 2,
LIBUSB_TRANSFER_TYPE_INTERRUPT = 3,
+ LIBUSB_TRANSFER_TYPE_BULK_STREAM = 4,
};
enum libusb_standard_request {
diff --git a/lib/libusb/libusb10.c b/lib/libusb/libusb10.c
index 6bfc01eb8c4e..5c116b39ea17 100644
--- a/lib/libusb/libusb10.c
+++ b/lib/libusb/libusb10.c
@@ -1530,6 +1530,7 @@ found:
libusb20_tr_set_callback(pxfer0, libusb10_isoc_proxy);
break;
case LIBUSB_TRANSFER_TYPE_BULK:
+ case LIBUSB_TRANSFER_TYPE_BULK_STREAM:
case LIBUSB_TRANSFER_TYPE_INTERRUPT:
libusb20_tr_set_callback(pxfer0, libusb10_bulk_intr_proxy);
break;
diff --git a/lib/libusb/libusb10_io.c b/lib/libusb/libusb10_io.c
index ea365162df5a..c99586ff650d 100644
--- a/lib/libusb/libusb10_io.c
+++ b/lib/libusb/libusb10_io.c
@@ -780,6 +780,19 @@ libusb_fill_interrupt_transfer(struct libusb_transfer *transfer,
transfer->callback = callback;
}
+void
+libusb_fill_bulk_stream_transfer(struct libusb_transfer *transfer,
+ libusb_device_handle *dev_handle, unsigned char endpoint,
+ uint32_t stream_id, unsigned char *buffer, int length,
+ libusb_transfer_cb_fn callback, void *user_data, unsigned int timeout)
+{
+ libusb_fill_bulk_transfer(transfer, dev_handle, endpoint, buffer,
+ length, callback, user_data, timeout);
+ transfer->type = LIBUSB_TRANSFER_TYPE_BULK_STREAM;
+
+ libusb_transfer_set_stream_id(transfer, stream_id);
+}
+
void
libusb_fill_iso_transfer(struct libusb_transfer *transfer,
libusb_device_handle *devh, uint8_t endpoint, uint8_t *buf,