X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fkingst-la2016%2Fapi.c;h=1b1b425a0204169440429807430067f4ac58064a;hb=e847645b7be832c1d62d1ad2312e3a3d4de467ce;hp=9ab2e564f944435750e44afdd5ef344a5bb0f512;hpb=b29f7be9c0b7d90469dee26daf0f3179cd67c065;p=libsigrok.git diff --git a/src/hardware/kingst-la2016/api.c b/src/hardware/kingst-la2016/api.c index 9ab2e564..1b1b425a 100644 --- a/src/hardware/kingst-la2016/api.c +++ b/src/hardware/kingst-la2016/api.c @@ -641,8 +641,11 @@ static void LIBUSB_CALL receive_transfer(struct libusb_transfer *transfer) devc->n_bytes_to_read -= transfer->actual_length; if (devc->n_bytes_to_read) { uint32_t to_read = devc->n_bytes_to_read; - if (to_read > LA2016_BULK_MAX) - to_read = LA2016_BULK_MAX; + /* determine read size for the next usb transfer */ + if (to_read >= LA2016_USB_BUFSZ) + to_read = LA2016_USB_BUFSZ; + else /* last transfer, make read size some multiple of LA2016_EP6_PKTSZ */ + to_read = (to_read + (LA2016_EP6_PKTSZ-1)) & ~(LA2016_EP6_PKTSZ-1); libusb_fill_bulk_transfer( transfer, usb->devhdl, 0x86, transfer->buffer, to_read,