On Tue, Aug 18, 2009 at 1:34 PM, Boaz Harrosh<bharrosh@xxxxxxxxxxx> wrote: Dear Boaz, Thanks for the information. > drivers/scsi/osd/osd_initiator.c I did not find this file in my 2.6.28 sources. > On the scsi-driver side you do: > > if (scsi_bidi_cmnd(cmnd)) { > in_sgl = scsi_in(cmnd)->table.sgl; > in_nents = scsi_in(cmnd)->table.nents; > in_bytes = scsi_in(cmnd)->length; > > /* Same thing for out */ > out_sgl = scsi_out(cmnd)->table.sgl; > ... > } Do I need to modify the SCSI driver files to handle the bi-directional comamnds or Is this already supported? > What type of scsi-device are you using? I am working for USB Attached SCSI (UAS) device which supports bi-directional commands. I'm modifying USB Mass storage driver according to UAS requirements. Whenever there is command to process, SCSI layer sends scsi_cmnd structure pointer to UAS class driver (my driver - modified mass storage driver). But I did not find two data pointers and two data length variables (one IN and one OUT) in this structure to handle bi-directional data. I found only one struct scsi_data_buffer pointer in scsi_cmnd structure. So, how do SCSI layer sends IN and OUT buffer pointers and their lengths to my class driver? > what bidi commands? I did not understand this. Could you please elaborate it? Are there any bidi commands like READ_10 or WRITE_10 which are specific to any device? Thanks and Regards, Madhavi M. -- 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