Lines Matching refs:scp

149                                                                struct scsi_cmnd *scp);
153 static void gdth_putq(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 priority);
155 static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 b);
156 static int gdth_special_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp);
164 static void gdth_copy_internal_data(gdth_ha_str *ha, struct scsi_cmnd *scp,
166 static int gdth_internal_cache_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp);
167 static int gdth_fill_cache_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp,
189 static int __gdth_queuecommand(gdth_ha_str *ha, struct scsi_cmnd *scp,
191 static void gdth_scsi_done(struct scsi_cmnd *scp);
430 static void gdth_scsi_done(struct scsi_cmnd *scp) in gdth_scsi_done() argument
432 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_scsi_done()
438 scp->host_scribble = NULL; in gdth_scsi_done()
441 complete((struct completion *)scp->request); in gdth_scsi_done()
443 scp->scsi_done(scp); in gdth_scsi_done()
450 struct scsi_cmnd *scp; in __gdth_execute() local
455 scp = kzalloc(sizeof(*scp), GFP_KERNEL); in __gdth_execute()
456 if (!scp) in __gdth_execute()
459 scp->sense_buffer = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL); in __gdth_execute()
460 if (!scp->sense_buffer) { in __gdth_execute()
461 kfree(scp); in __gdth_execute()
465 scp->device = sdev; in __gdth_execute()
469 scp->request = (struct request *)&wait; in __gdth_execute()
470 scp->cmd_len = 12; in __gdth_execute()
471 scp->cmnd = cmnd; in __gdth_execute()
476 TRACE(("__gdth_execute() cmd 0x%x\n", scp->cmnd[0])); in __gdth_execute()
477 __gdth_queuecommand(ha, scp, &cmndinfo); in __gdth_execute()
484 kfree(scp->sense_buffer); in __gdth_execute()
485 kfree(scp); in __gdth_execute()
1986 static void gdth_putq(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 priority) in gdth_putq() argument
1988 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_putq()
2000 ha->req_first = scp; /* queue was empty */ in gdth_putq()
2001 scp->SCp.ptr = NULL; in gdth_putq()
2010 pscp->SCp.ptr = (char *)scp; in gdth_putq()
2011 scp->SCp.ptr = (char *)nscp; in gdth_putq()
2279 static void gdth_copy_internal_data(gdth_ha_str *ha, struct scsi_cmnd *scp, in gdth_copy_internal_data() argument
2282 u16 cpcount,i, max_sg = scsi_sg_count(scp); in gdth_copy_internal_data()
2287 cpcount = min_t(u16, count, scsi_bufflen(scp)); in gdth_copy_internal_data()
2291 scsi_for_each_sg(scp, sl, max_sg, i) { in gdth_copy_internal_data()
2295 cpnow, cpsum, cpcount, scsi_bufflen(scp))); in gdth_copy_internal_data()
2321 static int gdth_internal_cache_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp) in gdth_internal_cache_cmd() argument
2328 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_internal_cache_cmd()
2330 t = scp->device->id; in gdth_internal_cache_cmd()
2332 scp->cmnd[0],t)); in gdth_internal_cache_cmd()
2334 scp->result = DID_OK << 16; in gdth_internal_cache_cmd()
2335 scp->sense_buffer[0] = 0; in gdth_internal_cache_cmd()
2337 switch (scp->cmnd[0]) { in gdth_internal_cache_cmd()
2360 gdth_copy_internal_data(ha, scp, (char*)&inq, sizeof(gdth_inq_data)); in gdth_internal_cache_cmd()
2370 gdth_copy_internal_data(ha, scp, (char*)&sd, sizeof(gdth_sense_data)); in gdth_internal_cache_cmd()
2382 gdth_copy_internal_data(ha, scp, (char*)&mpd, sizeof(gdth_modep_data)); in gdth_internal_cache_cmd()
2392 gdth_copy_internal_data(ha, scp, (char*)&rdc, sizeof(gdth_rdcap_data)); in gdth_internal_cache_cmd()
2396 if ((scp->cmnd[1] & 0x1f) == SAI_READ_CAPACITY_16 && in gdth_internal_cache_cmd()
2403 gdth_copy_internal_data(ha, scp, (char*)&rdc16, in gdth_internal_cache_cmd()
2406 scp->result = DID_ABORT << 16; in gdth_internal_cache_cmd()
2411 TRACE2(("Internal cache cmd 0x%x unknown\n",scp->cmnd[0])); in gdth_internal_cache_cmd()
2423 static int gdth_fill_cache_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, in gdth_fill_cache_cmd() argument
2427 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_fill_cache_cmd()
2434 scp->cmnd[0],scp->cmd_len,hdrive)); in gdth_fill_cache_cmd()
2445 cmdp->RequestBuffer = scp; in gdth_fill_cache_cmd()
2459 else if (scp->cmnd[0] == RESERVE) in gdth_fill_cache_cmd()
2461 else if (scp->cmnd[0] == RELEASE) in gdth_fill_cache_cmd()
2463 else if (scp->cmnd[0] == ALLOW_MEDIUM_REMOVAL) { in gdth_fill_cache_cmd()
2464 if (scp->cmnd[4] & 1) /* prevent ? */ in gdth_fill_cache_cmd()
2466 else if (scp->cmnd[3] & 1) /* removable drive ? */ in gdth_fill_cache_cmd()
2470 } else if (scp->cmnd[0] == WRITE_6 || scp->cmnd[0] == WRITE_10 || in gdth_fill_cache_cmd()
2471 scp->cmnd[0] == WRITE_12 || scp->cmnd[0] == WRITE_16 in gdth_fill_cache_cmd()
2496 if (scp->cmd_len == 16) { in gdth_fill_cache_cmd()
2497 memcpy(&no, &scp->cmnd[2], sizeof(u64)); in gdth_fill_cache_cmd()
2499 memcpy(&cnt, &scp->cmnd[10], sizeof(u32)); in gdth_fill_cache_cmd()
2501 } else if (scp->cmd_len == 10) { in gdth_fill_cache_cmd()
2502 memcpy(&no, &scp->cmnd[2], sizeof(u32)); in gdth_fill_cache_cmd()
2504 memcpy(&cnt, &scp->cmnd[7], sizeof(u16)); in gdth_fill_cache_cmd()
2507 memcpy(&no, &scp->cmnd[0], sizeof(u32)); in gdth_fill_cache_cmd()
2509 blockcnt= scp->cmnd[4]==0 ? 0x100 : scp->cmnd[4]; in gdth_fill_cache_cmd()
2519 if (scsi_bufflen(scp)) { in gdth_fill_cache_cmd()
2522 sgcnt = pci_map_sg(ha->pdev, scsi_sglist(scp), scsi_sg_count(scp), in gdth_fill_cache_cmd()
2529 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_cache_cmd()
2544 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_cache_cmd()
2599 static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 b) in gdth_fill_raw_cmd() argument
2610 t = scp->device->id; in gdth_fill_raw_cmd()
2611 l = scp->device->lun; in gdth_fill_raw_cmd()
2614 scp->cmnd[0],b,t,l)); in gdth_fill_raw_cmd()
2622 cmdp->RequestBuffer = scp; in gdth_fill_raw_cmd()
2632 cmndinfo = gdth_cmnd_priv(scp); in gdth_fill_raw_cmd()
2652 page = virt_to_page(scp->sense_buffer); in gdth_fill_raw_cmd()
2653 offset = (unsigned long)scp->sense_buffer & ~PAGE_MASK; in gdth_fill_raw_cmd()
2664 cmdp->u.raw64.clen = scp->cmd_len; in gdth_fill_raw_cmd()
2669 cmdp->u.raw64.sdlen = scsi_bufflen(scp); in gdth_fill_raw_cmd()
2673 gdth_direction_tab[scp->cmnd[0]]==DOU ? GDTH_DATA_OUT:GDTH_DATA_IN; in gdth_fill_raw_cmd()
2674 memcpy(cmdp->u.raw64.cmd,scp->cmnd,16); in gdth_fill_raw_cmd()
2680 cmdp->u.raw.clen = scp->cmd_len; in gdth_fill_raw_cmd()
2686 cmdp->u.raw.sdlen = scsi_bufflen(scp); in gdth_fill_raw_cmd()
2690 gdth_direction_tab[scp->cmnd[0]]==DOU ? GDTH_DATA_OUT:GDTH_DATA_IN; in gdth_fill_raw_cmd()
2691 memcpy(cmdp->u.raw.cmd,scp->cmnd,12); in gdth_fill_raw_cmd()
2695 if (scsi_bufflen(scp)) { in gdth_fill_raw_cmd()
2697 sgcnt = pci_map_sg(ha->pdev, scsi_sglist(scp), scsi_sg_count(scp), in gdth_fill_raw_cmd()
2704 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_raw_cmd()
2719 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_raw_cmd()
2772 static int gdth_special_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp) in gdth_special_cmd() argument
2775 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_special_cmd()
2785 cmdp->RequestBuffer = scp; in gdth_special_cmd()
2963 struct scsi_cmnd *scp; in __gdth_interrupt() local
3155 scp = ha->cmd_tab[IStatus-2].cmnd; in __gdth_interrupt()
3158 if (scp == UNUSED_CMND) { in __gdth_interrupt()
3168 if (scp == INTERNAL_CMND) { in __gdth_interrupt()
3176 rval = gdth_sync_event(ha,Service,IStatus,scp); in __gdth_interrupt()
3180 gdth_putq(ha, scp, gdth_cmnd_priv(scp)->priority); in __gdth_interrupt()
3182 gdth_scsi_done(scp); in __gdth_interrupt()
3222 struct scsi_cmnd *scp) in gdth_sync_event() argument
3227 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_sync_event()
3302 b = scp->device->channel; in gdth_sync_event()
3303 t = scp->device->id; in gdth_sync_event()
3315 if (scsi_bufflen(scp)) in gdth_sync_event()
3316 pci_unmap_sg(ha->pdev, scsi_sglist(scp), scsi_sg_count(scp), in gdth_sync_event()
3359 if (scp->cmnd[0] == RESERVE) { in gdth_sync_event()
3361 } else if (scp->cmnd[0] == RELEASE) { in gdth_sync_event()
3364 scp->result = DID_OK << 16; in gdth_sync_event()
3365 scp->sense_buffer[0] = 0; in gdth_sync_event()
3381 memset((char*)scp->sense_buffer,0,16); in gdth_sync_event()
3382 scp->sense_buffer[0] = 0x70; in gdth_sync_event()
3383 scp->sense_buffer[2] = NOT_READY; in gdth_sync_event()
3384 scp->result = (DID_OK << 16) | (CHECK_CONDITION << 1); in gdth_sync_event()
3392 memset((char*)scp->sense_buffer,0,16); in gdth_sync_event()
3394 scp->result = (DID_OK << 16) | (RESERVATION_CONFLICT << 1); in gdth_sync_event()
3396 scp->sense_buffer[0] = 0x70; in gdth_sync_event()
3397 scp->sense_buffer[2] = NOT_READY; in gdth_sync_event()
3398 scp->result = (DID_OK << 16) | (CHECK_CONDITION << 1); in gdth_sync_event()
3415 scp->result = DID_BAD_TARGET << 16; in gdth_sync_event()
3417 scp->result = (DID_OK << 16) | ha->info; in gdth_sync_event()
3882 static enum blk_eh_timer_return gdth_timed_out(struct scsi_cmnd *scp) in gdth_timed_out() argument
3884 gdth_ha_str *ha = shost_priv(scp->device->host); in gdth_timed_out()
3885 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_timed_out()
3890 TRACE(("%s() cmd 0x%x\n", scp->cmnd[0], __func__)); in gdth_timed_out()
3891 b = scp->device->channel; in gdth_timed_out()
3892 t = scp->device->id; in gdth_timed_out()
3915 static int gdth_eh_bus_reset(struct scsi_cmnd *scp) in gdth_eh_bus_reset() argument
3917 gdth_ha_str *ha = shost_priv(scp->device->host); in gdth_eh_bus_reset()
3925 b = scp->device->channel; in gdth_eh_bus_reset()
3996 static int gdth_queuecommand_lck(struct scsi_cmnd *scp, in gdth_queuecommand_lck() argument
3999 gdth_ha_str *ha = shost_priv(scp->device->host); in gdth_queuecommand_lck()
4002 TRACE(("gdth_queuecommand() cmd 0x%x\n", scp->cmnd[0])); in gdth_queuecommand_lck()
4007 scp->scsi_done = done; in gdth_queuecommand_lck()
4011 return __gdth_queuecommand(ha, scp, cmndinfo); in gdth_queuecommand_lck()
4016 static int __gdth_queuecommand(gdth_ha_str *ha, struct scsi_cmnd *scp, in DEF_SCSI_QCMD()
4019 scp->host_scribble = (unsigned char *)cmndinfo; in DEF_SCSI_QCMD()
4028 gdth_putq(ha, scp, cmndinfo->priority); in DEF_SCSI_QCMD()
4471 struct scsi_cmnd *scp; in gdth_ioctl() local
4592 scp = kzalloc(sizeof(*scp), GFP_KERNEL); in gdth_ioctl()
4593 if (!scp) in gdth_ioctl()
4595 scp->device = ha->sdev; in gdth_ioctl()
4596 scp->cmd_len = 12; in gdth_ioctl()
4597 scp->device->channel = res.number; in gdth_ioctl()
4598 rval = gdth_eh_bus_reset(scp); in gdth_ioctl()
4600 kfree(scp); in gdth_ioctl()