Have you tried sending a zero length packet to tell the fx3 there is no more data?
If you're filling a dma channel that is 1024*(dma multiplier=2) bytes, the buffer won't be committed until either it is full or it gets a short packet. The problem is that when the first packet is 1024 bytes it doesn't appear to me to know that there is no more data coming so in that case I send a zlp which then causes the buffer to be committed to the firmware.
Anyhow, I ended up just sending a zlp at the end of all my USB out transmissions. Didn't seem to hurt anything and fixes the issue where the buffer isn't committed past the firmware.
Thank you for your reply.
I understand it to some extent. I'll try it tomorrow and update the result.
I tried the #2's method and succeeded. But there might be some quesions if I send ZLP by modifying the transfer_flags, it's likely to be related to the USB controller in my computer. so I finally send the ZLP by sending a packet of length zero;