It seems like the residual data you have in this scenario is a multiple of endpoint max pkt size (1024 for superspeed).
In such cases, if you setup XferData with len greater than the exact amount of data, it will not return.
This is as per usb protocol and you need to append the residual data in the Fx3 with a ZLP (zero length packet). The ZLP will cause any XferData() call to return without timeout error.
Thank you very much and I will try it.
i may have the similar issue above. Does "the exact amount of data" you referred in line 3 mean 1024 or burst_length*1024?