On Friday, September 19, 2014 at 05:27:05 AM, Bo Shen wrote: > Hi Marek, [...] > >> Transfer I mean here is a usb request, which trying to transfer > >> EP_BUFFER_SIZE at one time. > >> In my test case, sometime it transfer less than EP_BUFFER_SIZE in a usb > >> request. So, it cause dot won't print the dot, and seems stuck. However, > >> it will finish transfer after some time. > > > > I see now. This code is really weird. > > > > What would happen if the following condition is met in the code for k>0 ? > > (download_bytes == download_size) AND (download_bytes = k * > > BYTES_PER_DOT) > > I am not fully understand what you plan to present here. > > > I think the original code would happily print a dot after printing this > > output: printf("\ndownloading of %d bytes finished\n", download_bytes); > > > > Do you agree ? If yes, then I believe this code should go into the else > > branch only. > > Yes, I agree. This may happen, if the (download_bytes % BTYES_PER_DOT) > equals to 0. > > > Also, you can probably avoid the counting variable if you do something > > like: > > > > if (download_bytes / CONST != (download_bytes + transfer_size) / CONST) { > > > > print(dot); > > if (download_bytes / (74 * CONST) != ((download_bytes + transfer_size) / > > > > (74 * CONST)) > > > > print(\n); > > > > } > > > > Surely, the code can be simplified . You would also need to be careful > > about this assignment at the top of the function : download_bytes += > > transfer_size; > > > > What do you think ? > > I think this piece of code is better, which won't introduce new variable. > > If no other comments, I will modify the code like this and send the v2 > patch.
Well OK then. Thanks! _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot