On Thu, Mar 10, 2016 at 3:46 PM, Steve Rae <s...@broadcom.com> wrote: > ... updated the subject line, was: > Re: [U-Boot][PATCH v3 1/3] fastboot: OUT transaction length must be aligned > to wMaxPacketSize > >
>>> -static unsigned int rx_bytes_expected(void) >>> +static unsigned int rx_bytes_expected(unsigned int maxpacket) >>> { >>> int rx_remain = download_size - download_bytes; >>> + int rem = 0; >>> if (rx_remain < 0) >>> return 0; >>> if (rx_remain > EP_BUFFER_SIZE) >>> return EP_BUFFER_SIZE; >>> + if (rx_remain < maxpacket) { >>> + rx_remain = maxpacket; >>> + } else if (rx_remain % maxpacket != 0) { >>> + rem = rx_remain % maxpacket; >>> + rx_remain = rx_remain + (maxpacket - rem); >>> + } > > > Is anyone else having problems with this code??? > I need to remove these six (newly added) lines in order to get my boards to > work -- otherwise, they just "hang" druing the download phase of "fastboot > flash".... > > Thanks in advance, Steve > MORE INFO: I added some logs to see what is happening: diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c index f87aae7..824430f 100644 --- a/drivers/usb/gadget/f_fastboot.c +++ b/drivers/usb/gadget/f_fastboot.c @@ -427,12 +427,17 @@ static unsigned int rx_bytes_expected(unsigned int maxpacket) return 0; if (rx_remain > EP_BUFFER_SIZE) return EP_BUFFER_SIZE; +#if 1 if (rx_remain < maxpacket) { + printf("\nVALIDATE: %s: %d (%d) %d\n", __func__, rx_remain, maxpacket, maxpacket); rx_remain = maxpacket; } else if (rx_remain % maxpacket != 0) { rem = rx_remain % maxpacket; + printf("\nVALIDATE: %s: %d (%d) %d %d\n", __func__, rx_remain, maxpacket, rem, rx_remain + (maxpacket - rem)); rx_remain = rx_remain + (maxpacket - rem); } +#endif + printf("\nVALIDATE: using %d\n", rx_remain); return rx_remain; } RESULTS: In the case that fails, (#if 1), it reports: VALIDATE: rx_bytes_expected: 812 (512) 300 1024 VALIDATE: using 1024 In the case that works (#if 0), it reports: VALIDATE: using 812 To me, it looks like there is only 812 bytes more to be downloaded, but this code modifies that value to expect 1024 bytes; and I guess it hangs after the 812 have been received (while waiting for the rest of the 1024).... Please advise! _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot