Lines Matching refs:scp
122 struct scsi_cmnd *scp);
126 static void gdth_putq(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 priority);
128 static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 b);
129 static int gdth_special_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp);
137 static void gdth_copy_internal_data(gdth_ha_str *ha, struct scsi_cmnd *scp,
139 static int gdth_internal_cache_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp);
140 static int gdth_fill_cache_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp,
162 static int __gdth_queuecommand(gdth_ha_str *ha, struct scsi_cmnd *scp,
164 static void gdth_scsi_done(struct scsi_cmnd *scp);
316 static void gdth_scsi_done(struct scsi_cmnd *scp) in gdth_scsi_done() argument
318 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_scsi_done()
324 scp->host_scribble = NULL; in gdth_scsi_done()
327 complete((struct completion *)scp->request); in gdth_scsi_done()
329 scp->scsi_done(scp); in gdth_scsi_done()
336 struct scsi_cmnd *scp; in __gdth_execute() local
341 scp = kzalloc(sizeof(*scp), GFP_KERNEL); in __gdth_execute()
342 if (!scp) in __gdth_execute()
345 scp->sense_buffer = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL); in __gdth_execute()
346 if (!scp->sense_buffer) { in __gdth_execute()
347 kfree(scp); in __gdth_execute()
351 scp->device = sdev; in __gdth_execute()
355 scp->request = (struct request *)&wait; in __gdth_execute()
356 scp->cmd_len = 12; in __gdth_execute()
357 scp->cmnd = cmnd; in __gdth_execute()
362 TRACE(("__gdth_execute() cmd 0x%x\n", scp->cmnd[0])); in __gdth_execute()
363 __gdth_queuecommand(ha, scp, &cmndinfo); in __gdth_execute()
370 kfree(scp->sense_buffer); in __gdth_execute()
371 kfree(scp); in __gdth_execute()
1536 static void gdth_putq(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 priority) in gdth_putq() argument
1538 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_putq()
1550 ha->req_first = scp; /* queue was empty */ in gdth_putq()
1551 scp->SCp.ptr = NULL; in gdth_putq()
1560 pscp->SCp.ptr = (char *)scp; in gdth_putq()
1561 scp->SCp.ptr = (char *)nscp; in gdth_putq()
1829 static void gdth_copy_internal_data(gdth_ha_str *ha, struct scsi_cmnd *scp, in gdth_copy_internal_data() argument
1832 u16 cpcount,i, max_sg = scsi_sg_count(scp); in gdth_copy_internal_data()
1837 cpcount = min_t(u16, count, scsi_bufflen(scp)); in gdth_copy_internal_data()
1841 scsi_for_each_sg(scp, sl, max_sg, i) { in gdth_copy_internal_data()
1845 cpnow, cpsum, cpcount, scsi_bufflen(scp))); in gdth_copy_internal_data()
1871 static int gdth_internal_cache_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp) in gdth_internal_cache_cmd() argument
1878 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_internal_cache_cmd()
1880 t = scp->device->id; in gdth_internal_cache_cmd()
1882 scp->cmnd[0],t)); in gdth_internal_cache_cmd()
1884 scp->result = DID_OK << 16; in gdth_internal_cache_cmd()
1885 scp->sense_buffer[0] = 0; in gdth_internal_cache_cmd()
1887 switch (scp->cmnd[0]) { in gdth_internal_cache_cmd()
1910 gdth_copy_internal_data(ha, scp, (char*)&inq, sizeof(gdth_inq_data)); in gdth_internal_cache_cmd()
1920 gdth_copy_internal_data(ha, scp, (char*)&sd, sizeof(gdth_sense_data)); in gdth_internal_cache_cmd()
1932 gdth_copy_internal_data(ha, scp, (char*)&mpd, sizeof(gdth_modep_data)); in gdth_internal_cache_cmd()
1942 gdth_copy_internal_data(ha, scp, (char*)&rdc, sizeof(gdth_rdcap_data)); in gdth_internal_cache_cmd()
1946 if ((scp->cmnd[1] & 0x1f) == SAI_READ_CAPACITY_16 && in gdth_internal_cache_cmd()
1953 gdth_copy_internal_data(ha, scp, (char*)&rdc16, in gdth_internal_cache_cmd()
1956 scp->result = DID_ABORT << 16; in gdth_internal_cache_cmd()
1961 TRACE2(("Internal cache cmd 0x%x unknown\n",scp->cmnd[0])); in gdth_internal_cache_cmd()
1973 static int gdth_fill_cache_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, in gdth_fill_cache_cmd() argument
1977 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_fill_cache_cmd()
1984 scp->cmnd[0],scp->cmd_len,hdrive)); in gdth_fill_cache_cmd()
1992 cmdp->RequestBuffer = scp; in gdth_fill_cache_cmd()
2006 else if (scp->cmnd[0] == RESERVE) in gdth_fill_cache_cmd()
2008 else if (scp->cmnd[0] == RELEASE) in gdth_fill_cache_cmd()
2010 else if (scp->cmnd[0] == ALLOW_MEDIUM_REMOVAL) { in gdth_fill_cache_cmd()
2011 if (scp->cmnd[4] & 1) /* prevent ? */ in gdth_fill_cache_cmd()
2013 else if (scp->cmnd[3] & 1) /* removable drive ? */ in gdth_fill_cache_cmd()
2017 } else if (scp->cmnd[0] == WRITE_6 || scp->cmnd[0] == WRITE_10 || in gdth_fill_cache_cmd()
2018 scp->cmnd[0] == WRITE_12 || scp->cmnd[0] == WRITE_16 in gdth_fill_cache_cmd()
2043 if (scp->cmd_len == 16) { in gdth_fill_cache_cmd()
2044 memcpy(&no, &scp->cmnd[2], sizeof(u64)); in gdth_fill_cache_cmd()
2046 memcpy(&cnt, &scp->cmnd[10], sizeof(u32)); in gdth_fill_cache_cmd()
2048 } else if (scp->cmd_len == 10) { in gdth_fill_cache_cmd()
2049 memcpy(&no, &scp->cmnd[2], sizeof(u32)); in gdth_fill_cache_cmd()
2051 memcpy(&cnt, &scp->cmnd[7], sizeof(u16)); in gdth_fill_cache_cmd()
2054 memcpy(&no, &scp->cmnd[0], sizeof(u32)); in gdth_fill_cache_cmd()
2056 blockcnt= scp->cmnd[4]==0 ? 0x100 : scp->cmnd[4]; in gdth_fill_cache_cmd()
2066 if (scsi_bufflen(scp)) { in gdth_fill_cache_cmd()
2069 sgcnt = dma_map_sg(&ha->pdev->dev, scsi_sglist(scp), in gdth_fill_cache_cmd()
2070 scsi_sg_count(scp), cmndinfo->dma_dir); in gdth_fill_cache_cmd()
2076 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_cache_cmd()
2085 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_cache_cmd()
2137 static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 b) in gdth_fill_raw_cmd() argument
2146 t = scp->device->id; in gdth_fill_raw_cmd()
2147 l = scp->device->lun; in gdth_fill_raw_cmd()
2150 scp->cmnd[0],b,t,l)); in gdth_fill_raw_cmd()
2155 cmdp->RequestBuffer = scp; in gdth_fill_raw_cmd()
2165 cmndinfo = gdth_cmnd_priv(scp); in gdth_fill_raw_cmd()
2185 sense_paddr = dma_map_single(&ha->pdev->dev, scp->sense_buffer, 16, in gdth_fill_raw_cmd()
2195 cmdp->u.raw64.clen = scp->cmd_len; in gdth_fill_raw_cmd()
2200 cmdp->u.raw64.sdlen = scsi_bufflen(scp); in gdth_fill_raw_cmd()
2204 gdth_direction_tab[scp->cmnd[0]]==DOU ? GDTH_DATA_OUT:GDTH_DATA_IN; in gdth_fill_raw_cmd()
2205 memcpy(cmdp->u.raw64.cmd,scp->cmnd,16); in gdth_fill_raw_cmd()
2211 cmdp->u.raw.clen = scp->cmd_len; in gdth_fill_raw_cmd()
2217 cmdp->u.raw.sdlen = scsi_bufflen(scp); in gdth_fill_raw_cmd()
2221 gdth_direction_tab[scp->cmnd[0]]==DOU ? GDTH_DATA_OUT:GDTH_DATA_IN; in gdth_fill_raw_cmd()
2222 memcpy(cmdp->u.raw.cmd,scp->cmnd,12); in gdth_fill_raw_cmd()
2226 if (scsi_bufflen(scp)) { in gdth_fill_raw_cmd()
2228 sgcnt = dma_map_sg(&ha->pdev->dev, scsi_sglist(scp), in gdth_fill_raw_cmd()
2229 scsi_sg_count(scp), cmndinfo->dma_dir); in gdth_fill_raw_cmd()
2235 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_raw_cmd()
2244 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_raw_cmd()
2294 static int gdth_special_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp) in gdth_special_cmd() argument
2297 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_special_cmd()
2304 cmdp->RequestBuffer = scp; in gdth_special_cmd()
2481 struct scsi_cmnd *scp; in __gdth_interrupt() local
2601 scp = ha->cmd_tab[IStatus-2].cmnd; in __gdth_interrupt()
2604 if (scp == UNUSED_CMND) { in __gdth_interrupt()
2614 if (scp == INTERNAL_CMND) { in __gdth_interrupt()
2622 rval = gdth_sync_event(ha,Service,IStatus,scp); in __gdth_interrupt()
2626 gdth_putq(ha, scp, gdth_cmnd_priv(scp)->priority); in __gdth_interrupt()
2628 gdth_scsi_done(scp); in __gdth_interrupt()
2643 struct scsi_cmnd *scp) in gdth_sync_event() argument
2648 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_sync_event()
2723 b = scp->device->channel; in gdth_sync_event()
2724 t = scp->device->id; in gdth_sync_event()
2736 if (scsi_bufflen(scp)) in gdth_sync_event()
2737 dma_unmap_sg(&ha->pdev->dev, scsi_sglist(scp), scsi_sg_count(scp), in gdth_sync_event()
2780 if (scp->cmnd[0] == RESERVE) { in gdth_sync_event()
2782 } else if (scp->cmnd[0] == RELEASE) { in gdth_sync_event()
2785 scp->result = DID_OK << 16; in gdth_sync_event()
2786 scp->sense_buffer[0] = 0; in gdth_sync_event()
2802 memset((char*)scp->sense_buffer,0,16); in gdth_sync_event()
2803 scp->sense_buffer[0] = 0x70; in gdth_sync_event()
2804 scp->sense_buffer[2] = NOT_READY; in gdth_sync_event()
2805 scp->result = (DID_OK << 16) | (CHECK_CONDITION << 1); in gdth_sync_event()
2813 memset((char*)scp->sense_buffer,0,16); in gdth_sync_event()
2815 scp->result = (DID_OK << 16) | (RESERVATION_CONFLICT << 1); in gdth_sync_event()
2817 scp->sense_buffer[0] = 0x70; in gdth_sync_event()
2818 scp->sense_buffer[2] = NOT_READY; in gdth_sync_event()
2819 scp->result = (DID_OK << 16) | (CHECK_CONDITION << 1); in gdth_sync_event()
2836 scp->result = DID_BAD_TARGET << 16; in gdth_sync_event()
2838 scp->result = (DID_OK << 16) | ha->info; in gdth_sync_event()
3197 static enum blk_eh_timer_return gdth_timed_out(struct scsi_cmnd *scp) in gdth_timed_out() argument
3199 gdth_ha_str *ha = shost_priv(scp->device->host); in gdth_timed_out()
3200 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_timed_out()
3205 TRACE(("%s() cmd 0x%x\n", scp->cmnd[0], __func__)); in gdth_timed_out()
3206 b = scp->device->channel; in gdth_timed_out()
3207 t = scp->device->id; in gdth_timed_out()
3230 static int gdth_eh_bus_reset(struct scsi_cmnd *scp) in gdth_eh_bus_reset() argument
3232 gdth_ha_str *ha = shost_priv(scp->device->host); in gdth_eh_bus_reset()
3240 b = scp->device->channel; in gdth_eh_bus_reset()
3311 static int gdth_queuecommand_lck(struct scsi_cmnd *scp, in gdth_queuecommand_lck() argument
3314 gdth_ha_str *ha = shost_priv(scp->device->host); in gdth_queuecommand_lck()
3317 TRACE(("gdth_queuecommand() cmd 0x%x\n", scp->cmnd[0])); in gdth_queuecommand_lck()
3322 scp->scsi_done = done; in gdth_queuecommand_lck()
3326 return __gdth_queuecommand(ha, scp, cmndinfo); in gdth_queuecommand_lck()
3331 static int __gdth_queuecommand(gdth_ha_str *ha, struct scsi_cmnd *scp, in DEF_SCSI_QCMD()
3334 scp->host_scribble = (unsigned char *)cmndinfo; in DEF_SCSI_QCMD()
3343 gdth_putq(ha, scp, cmndinfo->priority); in DEF_SCSI_QCMD()
3803 struct scsi_cmnd *scp; in gdth_ioctl() local
3919 scp = kzalloc(sizeof(*scp), GFP_KERNEL); in gdth_ioctl()
3920 if (!scp) in gdth_ioctl()
3922 scp->device = ha->sdev; in gdth_ioctl()
3923 scp->cmd_len = 12; in gdth_ioctl()
3924 scp->device->channel = res.number; in gdth_ioctl()
3925 rval = gdth_eh_bus_reset(scp); in gdth_ioctl()
3927 kfree(scp); in gdth_ioctl()