Here is the relation between packetNum/transferQueueSize to the datarate.
When you use BeginDataXfer/WaitforXfer/FinishDataXfer the transfer is called Asynchronuos transfer meaning you can queue up multiple transfers simultaneously. Specifically if you queue 10 transfers the Begin of all the 10 transfers is called and each transfer goes to wait state. Once the data requested in the first begin is received, corresponding wait is signalled. Once this is done the next transfer is begun which is the second wait state. While the second transfer is happening, the first transfer is in the Finish state. Once the data received in the first transfer is received by the application the buffers are returned back and it's next Begin gets called.
The other type of transfer is Synchronous transfer where one transfer enters Begin state, Waits for the data requested and then once the data is received/timeout occurs it enters Finish state. One after this Finish, Next begin happens(next transfer begins).
If you are putting the transferQueueSize as 1, then it would be same as Synchronous transfer and you would not be getting the datarate as would have been obtained in the Asynchronous transfer.
So, you can incerase the transferQueue size but need not decrease the packets per Xfer.
Hope the above explanation is clear.
One question regarding the case description is:
It is mentioned that the packet size is 1024 bytes and the transfer is of type BULK. Since in 2.0 the maxPacketSize is 512 bytes, how is it mentioned as 1024 bytes?
Thank you for answers.
For your question about packet size. Because our firmware developer found 1024bytes might make transfer speed faster. But I think we should refer to the standard and make the packet size 512bytes. However, whenever it's 512bytes or 1024bytes, the buffer often overflow in the speed of 35Mbytes/s.
So my question is how to improve the buffer overflow. And is there a recommended value for packetNums and transferQueue size if our packet size is 512bytes?