On 06/12/2009 03:54 PM, Ramya Desai wrote: > On 6/12/09, Jeff Garzik <jeff@xxxxxxxxxx> wrote: >> Ramya Desai wrote: >> >>> Dear Experts, >>> >>> I am writing my mass storage class driver for my custom USB device. >>> My device is capable of queuing the commands that are issued to it. >>> So, I wanted to send the second command from my driver even before the >>> completion of first command. >>> To do this I wanted to return the PENDING status to the SCSI layer >>> immediately after receiving the command. >>> >> Simply queue as many commands as possible to your hardware, and complete >> them when they are done. Use can_queue or scsi_adjust_queue_depth() to set >> queueing limits. >> >> Jeff > > I used can_queue to change the queue depth to 5, but I am not getting > the next command until I finish (Done) the first command. I wanted the > second command to come to my driver, even before first command > finishes. > > -RD If you are using the existing USB mass storage infrastructure then it will not work. This is because all commands are issued from a thread per host, which does a synchronous execution of one command at a time. In fact it does not even have a Q, but a global one cmnd pointer per host. And therefor sets can_queue to 1. Are you using the existing USB infrastructure? Boaz -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html