Lines Matching refs:sc

68 	struct scsi_cmnd *sc;  member
101 struct scsi_cmnd *sc; in simscsi_interrupt() local
103 while ((sc = queue[rd].sc) != NULL) { in simscsi_interrupt()
105 queue[rd].sc = NULL; in simscsi_interrupt()
107 printk("simscsi_interrupt: done with %ld\n", sc->serial_number); in simscsi_interrupt()
108 (*sc->scsi_done)(sc); in simscsi_interrupt()
124 simscsi_sg_readwrite (struct scsi_cmnd *sc, int mode, unsigned long offset) in simscsi_sg_readwrite() argument
131 stat.fd = desc[sc->device->id]; in simscsi_sg_readwrite()
133 scsi_for_each_sg(sc, sl, scsi_sg_count(sc), i) { in simscsi_sg_readwrite()
139 scsi_sg_count(sc) - i, sl->length); in simscsi_sg_readwrite()
145 sc->result = DID_ERROR << 16; in simscsi_sg_readwrite()
150 sc->result = GOOD; in simscsi_sg_readwrite()
159 simscsi_readwrite6 (struct scsi_cmnd *sc, int mode) in simscsi_readwrite6() argument
163 offset = (((sc->cmnd[1] & 0x1f) << 16) | (sc->cmnd[2] << 8) | sc->cmnd[3])*512; in simscsi_readwrite6()
164 simscsi_sg_readwrite(sc, mode, offset); in simscsi_readwrite6()
193 simscsi_readwrite10 (struct scsi_cmnd *sc, int mode) in simscsi_readwrite10() argument
197 offset = (((unsigned long)sc->cmnd[2] << 24) in simscsi_readwrite10()
198 | ((unsigned long)sc->cmnd[3] << 16) in simscsi_readwrite10()
199 | ((unsigned long)sc->cmnd[4] << 8) in simscsi_readwrite10()
200 | ((unsigned long)sc->cmnd[5] << 0))*512UL; in simscsi_readwrite10()
201 simscsi_sg_readwrite(sc, mode, offset); in simscsi_readwrite10()
205 simscsi_queuecommand_lck (struct scsi_cmnd *sc, void (*done)(struct scsi_cmnd *)) in simscsi_queuecommand_lck() argument
207 unsigned int target_id = sc->device->id; in simscsi_queuecommand_lck()
217 target_id, sc->cmnd[0], sc->serial_number, sp, done); in simscsi_queuecommand_lck()
220 sc->result = DID_BAD_TARGET << 16; in simscsi_queuecommand_lck()
221 sc->scsi_done = done; in simscsi_queuecommand_lck()
222 if (target_id <= 15 && sc->device->lun == 0) { in simscsi_queuecommand_lck()
223 switch (sc->cmnd[0]) { in simscsi_queuecommand_lck()
225 if (scsi_bufflen(sc) < 35) { in simscsi_queuecommand_lck()
245 scsi_sg_copy_from_buffer(sc, buf, 36); in simscsi_queuecommand_lck()
246 sc->result = GOOD; in simscsi_queuecommand_lck()
250 sc->result = GOOD; in simscsi_queuecommand_lck()
256 simscsi_readwrite6(sc, SSC_READ); in simscsi_queuecommand_lck()
262 simscsi_readwrite10(sc, SSC_READ); in simscsi_queuecommand_lck()
268 simscsi_readwrite6(sc, SSC_WRITE); in simscsi_queuecommand_lck()
274 simscsi_readwrite10(sc, SSC_WRITE); in simscsi_queuecommand_lck()
278 if (desc[target_id] < 0 || scsi_bufflen(sc) < 8) { in simscsi_queuecommand_lck()
293 scsi_sg_copy_from_buffer(sc, buf, 8); in simscsi_queuecommand_lck()
294 sc->result = GOOD; in simscsi_queuecommand_lck()
300 scsi_sg_copy_from_buffer(sc, (char *)empty_zero_page, in simscsi_queuecommand_lck()
302 sc->result = GOOD; in simscsi_queuecommand_lck()
310 panic("simscsi: unknown SCSI command %u\n", sc->cmnd[0]); in simscsi_queuecommand_lck()
313 if (sc->result == DID_BAD_TARGET) { in simscsi_queuecommand_lck()
314 sc->result |= DRIVER_SENSE << 24; in simscsi_queuecommand_lck()
315 sc->sense_buffer[0] = 0x70; in simscsi_queuecommand_lck()
316 sc->sense_buffer[2] = 0x00; in simscsi_queuecommand_lck()
322 queue[wr].sc = sc; in simscsi_queuecommand_lck()
332 simscsi_host_reset (struct scsi_cmnd *sc) in DEF_SCSI_QCMD()