Re: Return of PENDING status to SCSI driver

Ramya Desai
2009-06-16T13:35:27Z

> This is bulshit. Get your act together babe. You are hacking and deriving from
> GPLed code. You are legally bind by that.
>
> But you are welcome to remove any lowlevel rocket science from your driver
> and just post the Linux relevant things. Infact why don't you start with a
> demo driver that just emulates in SW IO transfers close to what your driver
> will do. scsi_debug is a good place to look.
>
>
> > But Still I am confused with return status (to SCSI layer) for the
> > command while it is in progress, to get the next command. Is it some
> > thing like PENDING?
> >
>
>
> Look in scsi_debug enable some prints. It queues and completes cmnds
> asynchronously. Look in Alan's other mail I think you are hit with the
> usb queue_command posting the commands to a thread. This is unique to
> usb.
>
> > -RD
>
>
> Boaz
>

At this stage, I can not reveal the complete code without my client’s
permission. But the entire code will be made public (According to GPL)
once driver is completed.

But here I am pasting the template structure code that I am using in my driver.

struct scsi_host_template usb_stor_host_template = {
/* basic userland interface stuff */
.name = "usb-storage",
.proc_name = "usb-storage",
.proc_info = proc_info,
.info = host_info,

/* command interface -- queued only */
.queuecommand = queuecommand,

/* error and abort handlers */
.eh_abort_handler = command_abort,
.eh_device_reset_handler = device_reset,
.eh_bus_reset_handler = bus_reset,

/* queue commands only, only one command per LUN */
.can_queue = 5,
.cmd_per_lun = 5,

/* unknown initiator id */
.this_id = -1,

.slave_alloc = slave_alloc,
.slave_configure = slave_configure,

/* lots of sg segments can be handled */
.sg_tablesize = SG_ALL,

/* limit the total size of a transfer to 120 KB */
.max_sectors = 240,

/* merge commands... this seems to help performance, but
* periodically someone should test to see which setting is more
* optimal.
*/
.use_clustering = 1,

/* emulated HBA */
.emulated = 5,

/* we do our own delay after a device or bus reset */
.skip_settle_delay = 1,

/* sysfs device attributes */
.sdev_attrs = sysfs_device_attr_list,

/* module management */
.module = THIS_MODULE
};

Here I am giving some portion of the data structure us_data I am using

struct us_data {

.......

/* SCSI interfaces */
struct scsi_cmnd *srb[5]; /* current srb */
unsigned int tag[5]; /* current dCBWTag */

...continued.

}

If I call void (*done)(struct scsi_cmnd *) call back immediately after
receiving a command, will I get another command ?

Regards,
RD
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html