X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=src%2Fhardware%2Fkingst-la2016%2Fprotocol.c;h=ecb21e3faa7af4c34eabccc3a6f85edf576f6a62;hp=22d944110c92c48ba375099aba08e9b221489583;hb=e847645b7be832c1d62d1ad2312e3a3d4de467ce;hpb=b29f7be9c0b7d90469dee26daf0f3179cd67c065 diff --git a/src/hardware/kingst-la2016/protocol.c b/src/hardware/kingst-la2016/protocol.c index 22d94411..ecb21e3f 100644 --- a/src/hardware/kingst-la2016/protocol.c +++ b/src/hardware/kingst-la2016/protocol.c @@ -723,9 +723,11 @@ SR_PRIV int la2016_start_retrieval(const struct sr_dev_inst *sdi, libusb_transfe } to_read = devc->n_bytes_to_read; - if (to_read > LA2016_BULK_MAX) - to_read = LA2016_BULK_MAX; - + /* choose a buffer size for all of the usb transfers */ + if (to_read >= LA2016_USB_BUFSZ) + to_read = LA2016_USB_BUFSZ; /* multiple transfers */ + else /* one transfer, make buffer size some multiple of LA2016_EP6_PKTSZ */ + to_read = (to_read + (LA2016_EP6_PKTSZ-1)) & ~(LA2016_EP6_PKTSZ-1); buffer = g_try_malloc(to_read); if (!buffer) { sr_err("Failed to allocate %d bytes for bulk transfer", to_read);