Since u say that its because of internal latency in the hardware. eg. 50kb is transferred in one go and then it takes time to send back a received confirmation before the PC sends the next 50 kb, the speed gets capped proportionately to the Buffer size and the internal latency.

Maybe playing with the amount of data sent from the PC client in each frame will increase the thoroughput ?