You cannot achieve 12Mbps , reasons
1. 12Mbps is bit rate not the actual data transfer rate , actual data transfers along with overhead bits . like CRS stuffs
2. so called 12Mbps is shared with other devices..
3. USB transfers packet by packet , so keep the packet size as high as possible for every IN/OUT transaction , but remember this will introduce heavy latency ..
4. USB 1.0 /USB 2.0 full speed Single packet transfer time is 1ms ,USB Scheduler /OS side Windows/Linux will have 1ms scheduler , but you cannot possibly able to get 1000transfers /Sec ,I did some research on this , most probably you could get 600 to 800 transfer per sec.. again it depends on USB host , which is out of our hand ..
3."USB 2.0High speed generates" 1/8 ms ,practically somewhere between 5000 to 6000 packets per sec is possible ..
my advice is , while designing any USB based device ,consider these timings , hardware buffers .. or else software guys will cry ..