From 2ad4cbe087eed22840015c708e8380b8584060d4 Mon Sep 17 00:00:00 2001 From: Ben Gamari Date: Wed, 3 Jul 2013 17:48:43 -0400 Subject: [PATCH] usb_queue: Fix calculation of transferred --- firmware/hackrf_usb/usb_queue.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/firmware/hackrf_usb/usb_queue.c b/firmware/hackrf_usb/usb_queue.c index 4dcd57c6..853ace75 100644 --- a/firmware/hackrf_usb/usb_queue.c +++ b/firmware/hackrf_usb/usb_queue.c @@ -159,7 +159,8 @@ void usb_transfer_schedule_ack( void usb_queue_transfer_complete(usb_endpoint_t* const endpoint) { usb_transfer_t* transfer = endpoint_pop_transfer(endpoint); - unsigned int transferred = transfer->maximum_length - transfer->td.total_bytes; + unsigned int total_bytes = (transfer->td.total_bytes & USB_TD_DTD_TOKEN_TOTAL_BYTES_MASK) >> USB_TD_DTD_TOKEN_TOTAL_BYTES_SHIFT; + unsigned int transferred = transfer->maximum_length - total_bytes; uint8_t status = transfer->td.total_bytes; if (status & USB_TD_DTD_TOKEN_STATUS_ACTIVE || status & USB_TD_DTD_TOKEN_STATUS_HALTED