Lines Matching refs:cmd
60 struct scsi_cmnd *cmd; member
157 pvscsi_find_context(const struct pvscsi_adapter *adapter, struct scsi_cmnd *cmd) in pvscsi_find_context() argument
163 if (ctx->cmd == cmd) in pvscsi_find_context()
170 pvscsi_acquire_context(struct pvscsi_adapter *adapter, struct scsi_cmnd *cmd) in pvscsi_acquire_context() argument
178 ctx->cmd = cmd; in pvscsi_acquire_context()
187 ctx->cmd = NULL; in pvscsi_release_context()
248 u32 cmd, const void *desc, size_t len) in pvscsi_write_cmd_desc() argument
254 pvscsi_reg_write(adapter, PVSCSI_REG_OFFSET_COMMAND, cmd); in pvscsi_write_cmd_desc()
263 struct PVSCSICmdDescAbortCmd cmd = { 0 }; in pvscsi_abort_cmd() local
265 cmd.target = ctx->cmd->device->id; in pvscsi_abort_cmd()
266 cmd.context = pvscsi_map_context(adapter, ctx); in pvscsi_abort_cmd()
268 pvscsi_write_cmd_desc(adapter, PVSCSI_CMD_ABORT_CMD, &cmd, sizeof(cmd)); in pvscsi_abort_cmd()
319 struct PVSCSICmdDescResetDevice cmd = { 0 }; in ll_device_reset() local
323 cmd.target = target; in ll_device_reset()
326 &cmd, sizeof(cmd)); in ll_device_reset()
350 struct pvscsi_ctx *ctx, struct scsi_cmnd *cmd, in pvscsi_map_buffers() argument
354 unsigned bufflen = scsi_bufflen(cmd); in pvscsi_map_buffers()
362 sg = scsi_sglist(cmd); in pvscsi_map_buffers()
363 count = scsi_sg_count(cmd); in pvscsi_map_buffers()
365 int segs = scsi_dma_map(cmd); in pvscsi_map_buffers()
368 scmd_printk(KERN_DEBUG, cmd, in pvscsi_map_buffers()
378 scmd_printk(KERN_ERR, cmd, in pvscsi_map_buffers()
380 scsi_dma_unmap(cmd); in pvscsi_map_buffers()
393 cmd->sc_data_direction); in pvscsi_map_buffers()
395 scmd_printk(KERN_DEBUG, cmd, in pvscsi_map_buffers()
410 static void pvscsi_patch_sense(struct scsi_cmnd *cmd) in pvscsi_patch_sense() argument
412 if (cmd->sense_buffer) in pvscsi_patch_sense()
413 cmd->sense_buffer[0] = 0; in pvscsi_patch_sense()
419 struct scsi_cmnd *cmd; in pvscsi_unmap_buffers() local
422 cmd = ctx->cmd; in pvscsi_unmap_buffers()
423 bufflen = scsi_bufflen(cmd); in pvscsi_unmap_buffers()
426 unsigned count = scsi_sg_count(cmd); in pvscsi_unmap_buffers()
429 scsi_dma_unmap(cmd); in pvscsi_unmap_buffers()
437 bufflen, cmd->sc_data_direction); in pvscsi_unmap_buffers()
439 if (cmd->sense_buffer) in pvscsi_unmap_buffers()
490 struct PVSCSICmdDescSetupRings cmd = { 0 }; in pvscsi_setup_all_rings() local
494 cmd.ringsStatePPN = adapter->ringStatePA >> PAGE_SHIFT; in pvscsi_setup_all_rings()
495 cmd.reqRingNumPages = adapter->req_pages; in pvscsi_setup_all_rings()
496 cmd.cmpRingNumPages = adapter->cmp_pages; in pvscsi_setup_all_rings()
500 cmd.reqRingPPNs[i] = base >> PAGE_SHIFT; in pvscsi_setup_all_rings()
506 cmd.cmpRingPPNs[i] = base >> PAGE_SHIFT; in pvscsi_setup_all_rings()
515 &cmd, sizeof(cmd)); in pvscsi_setup_all_rings()
549 struct scsi_cmnd *cmd; in pvscsi_complete_request() local
555 cmd = ctx->cmd; in pvscsi_complete_request()
559 pvscsi_patch_sense(cmd); in pvscsi_complete_request()
572 cmd->result = 0; in pvscsi_complete_request()
578 cmd->result = (DID_RESET << 16); in pvscsi_complete_request()
580 cmd->result = (DID_OK << 16) | sdstat; in pvscsi_complete_request()
582 cmd->sense_buffer) in pvscsi_complete_request()
583 cmd->result |= (DRIVER_SENSE << 24); in pvscsi_complete_request()
598 if (e->dataLen && (e->dataLen < scsi_bufflen(cmd))) in pvscsi_complete_request()
599 scsi_set_resid(cmd, scsi_bufflen(cmd) - e->dataLen); in pvscsi_complete_request()
600 cmd->result = (DID_OK << 16); in pvscsi_complete_request()
606 scsi_set_resid(cmd, scsi_bufflen(cmd) - e->dataLen); in pvscsi_complete_request()
607 cmd->result = (DID_ERROR << 16); in pvscsi_complete_request()
612 cmd->result = (DID_BAD_TARGET << 16); in pvscsi_complete_request()
618 cmd->result = (DRIVER_INVALID << 24); in pvscsi_complete_request()
629 cmd->result |= (DID_ERROR << 16); in pvscsi_complete_request()
635 cmd->result = (DID_RESET << 16); in pvscsi_complete_request()
639 cmd->result = (DID_BUS_BUSY << 16); in pvscsi_complete_request()
643 cmd->result = (DID_PARITY << 16); in pvscsi_complete_request()
647 cmd->result = (DID_ERROR << 16); in pvscsi_complete_request()
648 scmd_printk(KERN_DEBUG, cmd, in pvscsi_complete_request()
653 dev_dbg(&cmd->device->sdev_gendev, in pvscsi_complete_request()
655 cmd, cmd->cmnd[0], ctx, cmd->result, btstat, sdstat); in pvscsi_complete_request()
657 cmd->scsi_done(cmd); in pvscsi_complete_request()
699 struct pvscsi_ctx *ctx, struct scsi_cmnd *cmd) in pvscsi_queue_ring() argument
707 sdev = cmd->device; in pvscsi_queue_ring()
719 scmd_printk(KERN_ERR, cmd, "vmw_pvscsi: " in pvscsi_queue_ring()
732 if (cmd->sense_buffer) { in pvscsi_queue_ring()
734 cmd->sense_buffer, SCSI_SENSE_BUFFERSIZE, in pvscsi_queue_ring()
737 scmd_printk(KERN_DEBUG, cmd, in pvscsi_queue_ring()
748 e->cdbLen = cmd->cmd_len; in pvscsi_queue_ring()
750 memcpy(e->cdb, cmd->cmnd, e->cdbLen); in pvscsi_queue_ring()
754 if (cmd->sc_data_direction == DMA_FROM_DEVICE) in pvscsi_queue_ring()
756 else if (cmd->sc_data_direction == DMA_TO_DEVICE) in pvscsi_queue_ring()
758 else if (cmd->sc_data_direction == DMA_NONE) in pvscsi_queue_ring()
763 if (pvscsi_map_buffers(adapter, ctx, cmd, e) != 0) { in pvscsi_queue_ring()
764 if (cmd->sense_buffer) { in pvscsi_queue_ring()
782 static int pvscsi_queue_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)) in pvscsi_queue_lck() argument
784 struct Scsi_Host *host = cmd->device->host; in pvscsi_queue_lck()
792 ctx = pvscsi_acquire_context(adapter, cmd); in pvscsi_queue_lck()
793 if (!ctx || pvscsi_queue_ring(adapter, ctx, cmd) != 0) { in pvscsi_queue_lck()
800 cmd->scsi_done = done; in pvscsi_queue_lck()
801 op = cmd->cmnd[0]; in pvscsi_queue_lck()
803 dev_dbg(&cmd->device->sdev_gendev, in pvscsi_queue_lck()
804 "queued cmd %p, ctx %p, op=%x\n", cmd, ctx, op); in pvscsi_queue_lck()
815 static int pvscsi_abort(struct scsi_cmnd *cmd) in DEF_SCSI_QCMD()
817 struct pvscsi_adapter *adapter = shost_priv(cmd->device->host); in DEF_SCSI_QCMD()
824 scmd_printk(KERN_DEBUG, cmd, "task abort on host %u, %p\n", in DEF_SCSI_QCMD()
825 adapter->host->host_no, cmd); in DEF_SCSI_QCMD()
839 ctx = pvscsi_find_context(adapter, cmd); in DEF_SCSI_QCMD()
841 scmd_printk(KERN_DEBUG, cmd, "Failed to abort cmd %p\n", cmd); in DEF_SCSI_QCMD()
864 scmd_printk(KERN_DEBUG, cmd, in DEF_SCSI_QCMD()
866 cmd); in DEF_SCSI_QCMD()
873 cmd->result = (DID_ABORT << 16); in DEF_SCSI_QCMD()
874 cmd->scsi_done(cmd); in DEF_SCSI_QCMD()
893 struct scsi_cmnd *cmd = ctx->cmd; in pvscsi_reset_all() local
894 if (cmd) { in pvscsi_reset_all()
895 scmd_printk(KERN_ERR, cmd, in pvscsi_reset_all()
896 "Forced reset on cmd %p\n", cmd); in pvscsi_reset_all()
898 pvscsi_patch_sense(cmd); in pvscsi_reset_all()
900 cmd->result = (DID_RESET << 16); in pvscsi_reset_all()
901 cmd->scsi_done(cmd); in pvscsi_reset_all()
906 static int pvscsi_host_reset(struct scsi_cmnd *cmd) in pvscsi_host_reset() argument
908 struct Scsi_Host *host = cmd->device->host; in pvscsi_host_reset()
913 scmd_printk(KERN_INFO, cmd, "SCSI Host reset\n"); in pvscsi_host_reset()
960 static int pvscsi_bus_reset(struct scsi_cmnd *cmd) in pvscsi_bus_reset() argument
962 struct Scsi_Host *host = cmd->device->host; in pvscsi_bus_reset()
966 scmd_printk(KERN_INFO, cmd, "SCSI Bus reset\n"); in pvscsi_bus_reset()
985 static int pvscsi_device_reset(struct scsi_cmnd *cmd) in pvscsi_device_reset() argument
987 struct Scsi_Host *host = cmd->device->host; in pvscsi_device_reset()
991 scmd_printk(KERN_INFO, cmd, "SCSI device reset on scsi%u:%u\n", in pvscsi_device_reset()
992 host->host_no, cmd->device->id); in pvscsi_device_reset()
1002 ll_device_reset(adapter, cmd->device->id); in pvscsi_device_reset()
1308 struct PVSCSICmdDescConfigCmd cmd; in pvscsi_get_max_targets() local
1325 cmd.configPageAddress = ((u64)PVSCSI_CONFIG_CONTROLLER_ADDRESS) << 32; in pvscsi_get_max_targets()
1326 cmd.configPageNum = PVSCSI_CONFIG_PAGE_CONTROLLER; in pvscsi_get_max_targets()
1327 cmd.cmpAddr = configPagePA; in pvscsi_get_max_targets()
1328 cmd._pad = 0; in pvscsi_get_max_targets()
1340 pvscsi_write_cmd_desc(adapter, PVSCSI_CMD_CONFIG, &cmd, sizeof cmd); in pvscsi_get_max_targets()