• Home
  • Raw
  • Download

Lines Matching refs:scp

149                                                                Scsi_Cmnd *scp);
153 static void gdth_putq(gdth_ha_str *ha, Scsi_Cmnd *scp, u8 priority);
155 static int gdth_fill_raw_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp, u8 b);
156 static int gdth_special_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp);
164 static void gdth_copy_internal_data(gdth_ha_str *ha, Scsi_Cmnd *scp,
166 static int gdth_internal_cache_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp);
167 static int gdth_fill_cache_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp, u16 hdrive);
188 static int __gdth_queuecommand(gdth_ha_str *ha, struct scsi_cmnd *scp,
190 static void gdth_scsi_done(struct scsi_cmnd *scp);
429 static void gdth_scsi_done(struct scsi_cmnd *scp) in gdth_scsi_done() argument
431 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_scsi_done()
437 scp->host_scribble = NULL; in gdth_scsi_done()
440 complete((struct completion *)scp->request); in gdth_scsi_done()
442 scp->scsi_done(scp); in gdth_scsi_done()
449 Scsi_Cmnd *scp; in __gdth_execute() local
454 scp = kzalloc(sizeof(*scp), GFP_KERNEL); in __gdth_execute()
455 if (!scp) in __gdth_execute()
458 scp->sense_buffer = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL); in __gdth_execute()
459 if (!scp->sense_buffer) { in __gdth_execute()
460 kfree(scp); in __gdth_execute()
464 scp->device = sdev; in __gdth_execute()
468 scp->request = (struct request *)&wait; in __gdth_execute()
469 scp->cmd_len = 12; in __gdth_execute()
470 scp->cmnd = cmnd; in __gdth_execute()
475 TRACE(("__gdth_execute() cmd 0x%x\n", scp->cmnd[0])); in __gdth_execute()
476 __gdth_queuecommand(ha, scp, &cmndinfo); in __gdth_execute()
483 kfree(scp->sense_buffer); in __gdth_execute()
484 kfree(scp); in __gdth_execute()
1985 static void gdth_putq(gdth_ha_str *ha, Scsi_Cmnd *scp, u8 priority) in gdth_putq() argument
1987 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_putq()
1999 ha->req_first = scp; /* queue was empty */ in gdth_putq()
2000 scp->SCp.ptr = NULL; in gdth_putq()
2009 pscp->SCp.ptr = (char *)scp; in gdth_putq()
2010 scp->SCp.ptr = (char *)nscp; in gdth_putq()
2278 static void gdth_copy_internal_data(gdth_ha_str *ha, Scsi_Cmnd *scp, in gdth_copy_internal_data() argument
2281 u16 cpcount,i, max_sg = scsi_sg_count(scp); in gdth_copy_internal_data()
2286 cpcount = min_t(u16, count, scsi_bufflen(scp)); in gdth_copy_internal_data()
2290 scsi_for_each_sg(scp, sl, max_sg, i) { in gdth_copy_internal_data()
2294 cpnow, cpsum, cpcount, scsi_bufflen(scp))); in gdth_copy_internal_data()
2320 static int gdth_internal_cache_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp) in gdth_internal_cache_cmd() argument
2327 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_internal_cache_cmd()
2329 t = scp->device->id; in gdth_internal_cache_cmd()
2331 scp->cmnd[0],t)); in gdth_internal_cache_cmd()
2333 scp->result = DID_OK << 16; in gdth_internal_cache_cmd()
2334 scp->sense_buffer[0] = 0; in gdth_internal_cache_cmd()
2336 switch (scp->cmnd[0]) { in gdth_internal_cache_cmd()
2359 gdth_copy_internal_data(ha, scp, (char*)&inq, sizeof(gdth_inq_data)); in gdth_internal_cache_cmd()
2369 gdth_copy_internal_data(ha, scp, (char*)&sd, sizeof(gdth_sense_data)); in gdth_internal_cache_cmd()
2381 gdth_copy_internal_data(ha, scp, (char*)&mpd, sizeof(gdth_modep_data)); in gdth_internal_cache_cmd()
2391 gdth_copy_internal_data(ha, scp, (char*)&rdc, sizeof(gdth_rdcap_data)); in gdth_internal_cache_cmd()
2395 if ((scp->cmnd[1] & 0x1f) == SAI_READ_CAPACITY_16 && in gdth_internal_cache_cmd()
2402 gdth_copy_internal_data(ha, scp, (char*)&rdc16, in gdth_internal_cache_cmd()
2405 scp->result = DID_ABORT << 16; in gdth_internal_cache_cmd()
2410 TRACE2(("Internal cache cmd 0x%x unknown\n",scp->cmnd[0])); in gdth_internal_cache_cmd()
2422 static int gdth_fill_cache_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp, u16 hdrive) in gdth_fill_cache_cmd() argument
2425 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_fill_cache_cmd()
2432 scp->cmnd[0],scp->cmd_len,hdrive)); in gdth_fill_cache_cmd()
2443 cmdp->RequestBuffer = scp; in gdth_fill_cache_cmd()
2457 else if (scp->cmnd[0] == RESERVE) in gdth_fill_cache_cmd()
2459 else if (scp->cmnd[0] == RELEASE) in gdth_fill_cache_cmd()
2461 else if (scp->cmnd[0] == ALLOW_MEDIUM_REMOVAL) { in gdth_fill_cache_cmd()
2462 if (scp->cmnd[4] & 1) /* prevent ? */ in gdth_fill_cache_cmd()
2464 else if (scp->cmnd[3] & 1) /* removable drive ? */ in gdth_fill_cache_cmd()
2468 } else if (scp->cmnd[0] == WRITE_6 || scp->cmnd[0] == WRITE_10 || in gdth_fill_cache_cmd()
2469 scp->cmnd[0] == WRITE_12 || scp->cmnd[0] == WRITE_16 in gdth_fill_cache_cmd()
2494 if (scp->cmd_len == 16) { in gdth_fill_cache_cmd()
2495 memcpy(&no, &scp->cmnd[2], sizeof(u64)); in gdth_fill_cache_cmd()
2497 memcpy(&cnt, &scp->cmnd[10], sizeof(u32)); in gdth_fill_cache_cmd()
2499 } else if (scp->cmd_len == 10) { in gdth_fill_cache_cmd()
2500 memcpy(&no, &scp->cmnd[2], sizeof(u32)); in gdth_fill_cache_cmd()
2502 memcpy(&cnt, &scp->cmnd[7], sizeof(u16)); in gdth_fill_cache_cmd()
2505 memcpy(&no, &scp->cmnd[0], sizeof(u32)); in gdth_fill_cache_cmd()
2507 blockcnt= scp->cmnd[4]==0 ? 0x100 : scp->cmnd[4]; in gdth_fill_cache_cmd()
2517 if (scsi_bufflen(scp)) { in gdth_fill_cache_cmd()
2520 sgcnt = pci_map_sg(ha->pdev, scsi_sglist(scp), scsi_sg_count(scp), in gdth_fill_cache_cmd()
2527 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_cache_cmd()
2542 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_cache_cmd()
2597 static int gdth_fill_raw_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp, u8 b) in gdth_fill_raw_cmd() argument
2608 t = scp->device->id; in gdth_fill_raw_cmd()
2609 l = scp->device->lun; in gdth_fill_raw_cmd()
2612 scp->cmnd[0],b,t,l)); in gdth_fill_raw_cmd()
2620 cmdp->RequestBuffer = scp; in gdth_fill_raw_cmd()
2630 cmndinfo = gdth_cmnd_priv(scp); in gdth_fill_raw_cmd()
2650 page = virt_to_page(scp->sense_buffer); in gdth_fill_raw_cmd()
2651 offset = (unsigned long)scp->sense_buffer & ~PAGE_MASK; in gdth_fill_raw_cmd()
2662 cmdp->u.raw64.clen = scp->cmd_len; in gdth_fill_raw_cmd()
2667 cmdp->u.raw64.sdlen = scsi_bufflen(scp); in gdth_fill_raw_cmd()
2671 gdth_direction_tab[scp->cmnd[0]]==DOU ? GDTH_DATA_OUT:GDTH_DATA_IN; in gdth_fill_raw_cmd()
2672 memcpy(cmdp->u.raw64.cmd,scp->cmnd,16); in gdth_fill_raw_cmd()
2678 cmdp->u.raw.clen = scp->cmd_len; in gdth_fill_raw_cmd()
2684 cmdp->u.raw.sdlen = scsi_bufflen(scp); in gdth_fill_raw_cmd()
2688 gdth_direction_tab[scp->cmnd[0]]==DOU ? GDTH_DATA_OUT:GDTH_DATA_IN; in gdth_fill_raw_cmd()
2689 memcpy(cmdp->u.raw.cmd,scp->cmnd,12); in gdth_fill_raw_cmd()
2693 if (scsi_bufflen(scp)) { in gdth_fill_raw_cmd()
2695 sgcnt = pci_map_sg(ha->pdev, scsi_sglist(scp), scsi_sg_count(scp), in gdth_fill_raw_cmd()
2702 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_raw_cmd()
2717 scsi_for_each_sg(scp, sl, sgcnt, i) { in gdth_fill_raw_cmd()
2770 static int gdth_special_cmd(gdth_ha_str *ha, Scsi_Cmnd *scp) in gdth_special_cmd() argument
2773 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_special_cmd()
2783 cmdp->RequestBuffer = scp; in gdth_special_cmd()
2964 Scsi_Cmnd *scp; in __gdth_interrupt() local
3156 scp = ha->cmd_tab[IStatus-2].cmnd; in __gdth_interrupt()
3159 if (scp == UNUSED_CMND) { in __gdth_interrupt()
3169 if (scp == INTERNAL_CMND) { in __gdth_interrupt()
3177 rval = gdth_sync_event(ha,Service,IStatus,scp); in __gdth_interrupt()
3181 gdth_putq(ha, scp, gdth_cmnd_priv(scp)->priority); in __gdth_interrupt()
3183 gdth_scsi_done(scp); in __gdth_interrupt()
3223 Scsi_Cmnd *scp) in gdth_sync_event() argument
3228 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_sync_event()
3303 b = scp->device->channel; in gdth_sync_event()
3304 t = scp->device->id; in gdth_sync_event()
3316 if (scsi_bufflen(scp)) in gdth_sync_event()
3317 pci_unmap_sg(ha->pdev, scsi_sglist(scp), scsi_sg_count(scp), in gdth_sync_event()
3360 if (scp->cmnd[0] == RESERVE) { in gdth_sync_event()
3362 } else if (scp->cmnd[0] == RELEASE) { in gdth_sync_event()
3365 scp->result = DID_OK << 16; in gdth_sync_event()
3366 scp->sense_buffer[0] = 0; in gdth_sync_event()
3382 memset((char*)scp->sense_buffer,0,16); in gdth_sync_event()
3383 scp->sense_buffer[0] = 0x70; in gdth_sync_event()
3384 scp->sense_buffer[2] = NOT_READY; in gdth_sync_event()
3385 scp->result = (DID_OK << 16) | (CHECK_CONDITION << 1); in gdth_sync_event()
3393 memset((char*)scp->sense_buffer,0,16); in gdth_sync_event()
3395 scp->result = (DID_OK << 16) | (RESERVATION_CONFLICT << 1); in gdth_sync_event()
3397 scp->sense_buffer[0] = 0x70; in gdth_sync_event()
3398 scp->sense_buffer[2] = NOT_READY; in gdth_sync_event()
3399 scp->result = (DID_OK << 16) | (CHECK_CONDITION << 1); in gdth_sync_event()
3416 scp->result = DID_BAD_TARGET << 16; in gdth_sync_event()
3418 scp->result = (DID_OK << 16) | ha->info; in gdth_sync_event()
3884 static enum blk_eh_timer_return gdth_timed_out(struct scsi_cmnd *scp) in gdth_timed_out() argument
3886 gdth_ha_str *ha = shost_priv(scp->device->host); in gdth_timed_out()
3887 struct gdth_cmndinfo *cmndinfo = gdth_cmnd_priv(scp); in gdth_timed_out()
3892 TRACE(("%s() cmd 0x%x\n", scp->cmnd[0], __func__)); in gdth_timed_out()
3893 b = scp->device->channel; in gdth_timed_out()
3894 t = scp->device->id; in gdth_timed_out()
3917 static int gdth_eh_bus_reset(Scsi_Cmnd *scp) in gdth_eh_bus_reset() argument
3919 gdth_ha_str *ha = shost_priv(scp->device->host); in gdth_eh_bus_reset()
3927 b = scp->device->channel; in gdth_eh_bus_reset()
3998 static int gdth_queuecommand_lck(struct scsi_cmnd *scp, in gdth_queuecommand_lck() argument
4001 gdth_ha_str *ha = shost_priv(scp->device->host); in gdth_queuecommand_lck()
4004 TRACE(("gdth_queuecommand() cmd 0x%x\n", scp->cmnd[0])); in gdth_queuecommand_lck()
4009 scp->scsi_done = done; in gdth_queuecommand_lck()
4013 return __gdth_queuecommand(ha, scp, cmndinfo); in gdth_queuecommand_lck()
4018 static int __gdth_queuecommand(gdth_ha_str *ha, struct scsi_cmnd *scp, in DEF_SCSI_QCMD()
4021 scp->host_scribble = (unsigned char *)cmndinfo; in DEF_SCSI_QCMD()
4030 gdth_putq(ha, scp, cmndinfo->priority); in DEF_SCSI_QCMD()
4473 Scsi_Cmnd *scp; in gdth_ioctl() local
4594 scp = kzalloc(sizeof(*scp), GFP_KERNEL); in gdth_ioctl()
4595 if (!scp) in gdth_ioctl()
4597 scp->device = ha->sdev; in gdth_ioctl()
4598 scp->cmd_len = 12; in gdth_ioctl()
4599 scp->device->channel = res.number; in gdth_ioctl()
4600 rval = gdth_eh_bus_reset(scp); in gdth_ioctl()
4602 kfree(scp); in gdth_ioctl()