Lines Matching refs:cmd
60 struct scsi_cmnd *cmd; member
160 pvscsi_find_context(const struct pvscsi_adapter *adapter, struct scsi_cmnd *cmd) in pvscsi_find_context() argument
166 if (ctx->cmd == cmd) in pvscsi_find_context()
173 pvscsi_acquire_context(struct pvscsi_adapter *adapter, struct scsi_cmnd *cmd) in pvscsi_acquire_context() argument
181 ctx->cmd = cmd; in pvscsi_acquire_context()
190 ctx->cmd = NULL; in pvscsi_release_context()
251 u32 cmd, const void *desc, size_t len) in pvscsi_write_cmd_desc() argument
257 pvscsi_reg_write(adapter, PVSCSI_REG_OFFSET_COMMAND, cmd); in pvscsi_write_cmd_desc()
266 struct PVSCSICmdDescAbortCmd cmd = { 0 }; in pvscsi_abort_cmd() local
268 cmd.target = ctx->cmd->device->id; in pvscsi_abort_cmd()
269 cmd.context = pvscsi_map_context(adapter, ctx); in pvscsi_abort_cmd()
271 pvscsi_write_cmd_desc(adapter, PVSCSI_CMD_ABORT_CMD, &cmd, sizeof(cmd)); in pvscsi_abort_cmd()
322 struct PVSCSICmdDescResetDevice cmd = { 0 }; in ll_device_reset() local
326 cmd.target = target; in ll_device_reset()
329 &cmd, sizeof(cmd)); in ll_device_reset()
353 struct pvscsi_ctx *ctx, struct scsi_cmnd *cmd, in pvscsi_map_buffers() argument
357 unsigned bufflen = scsi_bufflen(cmd); in pvscsi_map_buffers()
365 sg = scsi_sglist(cmd); in pvscsi_map_buffers()
366 count = scsi_sg_count(cmd); in pvscsi_map_buffers()
368 int segs = scsi_dma_map(cmd); in pvscsi_map_buffers()
384 cmd->sc_data_direction); in pvscsi_map_buffers()
392 struct scsi_cmnd *cmd; in pvscsi_unmap_buffers() local
395 cmd = ctx->cmd; in pvscsi_unmap_buffers()
396 bufflen = scsi_bufflen(cmd); in pvscsi_unmap_buffers()
399 unsigned count = scsi_sg_count(cmd); in pvscsi_unmap_buffers()
402 scsi_dma_unmap(cmd); in pvscsi_unmap_buffers()
410 cmd->sc_data_direction); in pvscsi_unmap_buffers()
412 if (cmd->sense_buffer) in pvscsi_unmap_buffers()
463 struct PVSCSICmdDescSetupRings cmd = { 0 }; in pvscsi_setup_all_rings() local
467 cmd.ringsStatePPN = adapter->ringStatePA >> PAGE_SHIFT; in pvscsi_setup_all_rings()
468 cmd.reqRingNumPages = adapter->req_pages; in pvscsi_setup_all_rings()
469 cmd.cmpRingNumPages = adapter->cmp_pages; in pvscsi_setup_all_rings()
473 cmd.reqRingPPNs[i] = base >> PAGE_SHIFT; in pvscsi_setup_all_rings()
479 cmd.cmpRingPPNs[i] = base >> PAGE_SHIFT; in pvscsi_setup_all_rings()
488 &cmd, sizeof(cmd)); in pvscsi_setup_all_rings()
522 struct scsi_cmnd *cmd; in pvscsi_complete_request() local
528 cmd = ctx->cmd; in pvscsi_complete_request()
543 cmd->result = 0; in pvscsi_complete_request()
548 cmd->result = (DID_OK << 16) | sdstat; in pvscsi_complete_request()
549 if (sdstat == SAM_STAT_CHECK_CONDITION && cmd->sense_buffer) in pvscsi_complete_request()
550 cmd->result |= (DRIVER_SENSE << 24); in pvscsi_complete_request()
557 cmd->result = (DID_OK << 16); in pvscsi_complete_request()
563 scsi_set_resid(cmd, scsi_bufflen(cmd) - e->dataLen); in pvscsi_complete_request()
564 cmd->result = (DID_ERROR << 16); in pvscsi_complete_request()
569 cmd->result = (DID_BAD_TARGET << 16); in pvscsi_complete_request()
575 cmd->result = (DRIVER_INVALID << 24); in pvscsi_complete_request()
586 cmd->result |= (DID_ERROR << 16); in pvscsi_complete_request()
592 cmd->result = (DID_RESET << 16); in pvscsi_complete_request()
596 cmd->result = (DID_ABORT << 16); in pvscsi_complete_request()
600 cmd->result = (DID_PARITY << 16); in pvscsi_complete_request()
604 cmd->result = (DID_ERROR << 16); in pvscsi_complete_request()
605 scmd_printk(KERN_DEBUG, cmd, in pvscsi_complete_request()
610 dev_dbg(&cmd->device->sdev_gendev, in pvscsi_complete_request()
612 cmd, cmd->cmnd[0], ctx, cmd->result, btstat, sdstat); in pvscsi_complete_request()
614 cmd->scsi_done(cmd); in pvscsi_complete_request()
656 struct pvscsi_ctx *ctx, struct scsi_cmnd *cmd) in pvscsi_queue_ring() argument
664 sdev = cmd->device; in pvscsi_queue_ring()
676 scmd_printk(KERN_ERR, cmd, "vmw_pvscsi: " in pvscsi_queue_ring()
689 if (cmd->sense_buffer) { in pvscsi_queue_ring()
690 ctx->sensePA = pci_map_single(adapter->dev, cmd->sense_buffer, in pvscsi_queue_ring()
699 e->cdbLen = cmd->cmd_len; in pvscsi_queue_ring()
701 memcpy(e->cdb, cmd->cmnd, e->cdbLen); in pvscsi_queue_ring()
705 if (cmd->sc_data_direction == DMA_FROM_DEVICE) in pvscsi_queue_ring()
707 else if (cmd->sc_data_direction == DMA_TO_DEVICE) in pvscsi_queue_ring()
709 else if (cmd->sc_data_direction == DMA_NONE) in pvscsi_queue_ring()
714 pvscsi_map_buffers(adapter, ctx, cmd, e); in pvscsi_queue_ring()
725 static int pvscsi_queue_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)) in pvscsi_queue_lck() argument
727 struct Scsi_Host *host = cmd->device->host; in pvscsi_queue_lck()
734 ctx = pvscsi_acquire_context(adapter, cmd); in pvscsi_queue_lck()
735 if (!ctx || pvscsi_queue_ring(adapter, ctx, cmd) != 0) { in pvscsi_queue_lck()
742 cmd->scsi_done = done; in pvscsi_queue_lck()
744 dev_dbg(&cmd->device->sdev_gendev, in pvscsi_queue_lck()
745 "queued cmd %p, ctx %p, op=%x\n", cmd, ctx, cmd->cmnd[0]); in pvscsi_queue_lck()
749 pvscsi_kick_io(adapter, cmd->cmnd[0]); in pvscsi_queue_lck()
756 static int pvscsi_abort(struct scsi_cmnd *cmd) in DEF_SCSI_QCMD()
758 struct pvscsi_adapter *adapter = shost_priv(cmd->device->host); in DEF_SCSI_QCMD()
764 scmd_printk(KERN_DEBUG, cmd, "task abort on host %u, %p\n", in DEF_SCSI_QCMD()
765 adapter->host->host_no, cmd); in DEF_SCSI_QCMD()
779 ctx = pvscsi_find_context(adapter, cmd); in DEF_SCSI_QCMD()
781 scmd_printk(KERN_DEBUG, cmd, "Failed to abort cmd %p\n", cmd); in DEF_SCSI_QCMD()
804 scmd_printk(KERN_DEBUG, cmd, in DEF_SCSI_QCMD()
806 cmd); in DEF_SCSI_QCMD()
813 cmd->result = (DID_ABORT << 16); in DEF_SCSI_QCMD()
814 cmd->scsi_done(cmd); in DEF_SCSI_QCMD()
833 struct scsi_cmnd *cmd = ctx->cmd; in pvscsi_reset_all() local
834 if (cmd) { in pvscsi_reset_all()
835 scmd_printk(KERN_ERR, cmd, in pvscsi_reset_all()
836 "Forced reset on cmd %p\n", cmd); in pvscsi_reset_all()
839 cmd->result = (DID_RESET << 16); in pvscsi_reset_all()
840 cmd->scsi_done(cmd); in pvscsi_reset_all()
845 static int pvscsi_host_reset(struct scsi_cmnd *cmd) in pvscsi_host_reset() argument
847 struct Scsi_Host *host = cmd->device->host; in pvscsi_host_reset()
852 scmd_printk(KERN_INFO, cmd, "SCSI Host reset\n"); in pvscsi_host_reset()
899 static int pvscsi_bus_reset(struct scsi_cmnd *cmd) in pvscsi_bus_reset() argument
901 struct Scsi_Host *host = cmd->device->host; in pvscsi_bus_reset()
905 scmd_printk(KERN_INFO, cmd, "SCSI Bus reset\n"); in pvscsi_bus_reset()
924 static int pvscsi_device_reset(struct scsi_cmnd *cmd) in pvscsi_device_reset() argument
926 struct Scsi_Host *host = cmd->device->host; in pvscsi_device_reset()
930 scmd_printk(KERN_INFO, cmd, "SCSI device reset on scsi%u:%u\n", in pvscsi_device_reset()
931 host->host_no, cmd->device->id); in pvscsi_device_reset()
941 ll_device_reset(adapter, cmd->device->id); in pvscsi_device_reset()
1278 struct PVSCSICmdDescConfigCmd cmd; in pvscsi_get_max_targets() local
1295 cmd.configPageAddress = ((u64)PVSCSI_CONFIG_CONTROLLER_ADDRESS) << 32; in pvscsi_get_max_targets()
1296 cmd.configPageNum = PVSCSI_CONFIG_PAGE_CONTROLLER; in pvscsi_get_max_targets()
1297 cmd.cmpAddr = configPagePA; in pvscsi_get_max_targets()
1298 cmd._pad = 0; in pvscsi_get_max_targets()
1310 pvscsi_write_cmd_desc(adapter, PVSCSI_CMD_CONFIG, &cmd, sizeof cmd); in pvscsi_get_max_targets()