Lines Matching refs:cmd
42 struct virtio_scsi_cmd_req cmd; member
48 struct virtio_scsi_cmd_resp cmd; member
150 struct virtio_scsi_cmd *cmd = buf; in virtscsi_complete_cmd() local
151 struct scsi_cmnd *sc = cmd->sc; in virtscsi_complete_cmd()
152 struct virtio_scsi_cmd_resp *resp = &cmd->resp.cmd; in virtscsi_complete_cmd()
258 struct virtio_scsi_cmd *cmd = buf; in virtscsi_complete_free() local
260 if (cmd->comp) in virtscsi_complete_free()
261 complete_all(cmd->comp); in virtscsi_complete_free()
426 struct virtio_scsi_cmd *cmd, in virtscsi_add_cmd() argument
429 struct scsi_cmnd *sc = cmd->sc; in virtscsi_add_cmd()
444 sg_init_one(&req, &cmd->req, req_size); in virtscsi_add_cmd()
456 sg_init_one(&resp, &cmd->resp, resp_size); in virtscsi_add_cmd()
467 return virtqueue_add_sgs(vq, sgs, out_num, in_num, cmd, GFP_ATOMIC); in virtscsi_add_cmd()
471 struct virtio_scsi_cmd *cmd, in virtscsi_kick_cmd() argument
479 err = virtscsi_add_cmd(vq->vq, cmd, req_size, resp_size); in virtscsi_kick_cmd()
491 struct virtio_scsi_cmd_req *cmd, in virtio_scsi_init_hdr() argument
494 cmd->lun[0] = 1; in virtio_scsi_init_hdr()
495 cmd->lun[1] = sc->device->id; in virtio_scsi_init_hdr()
496 cmd->lun[2] = (sc->device->lun >> 8) | 0x40; in virtio_scsi_init_hdr()
497 cmd->lun[3] = sc->device->lun & 0xff; in virtio_scsi_init_hdr()
498 cmd->tag = cpu_to_virtio64(vdev, (unsigned long)sc); in virtio_scsi_init_hdr()
499 cmd->task_attr = VIRTIO_SCSI_S_SIMPLE; in virtio_scsi_init_hdr()
500 cmd->prio = 0; in virtio_scsi_init_hdr()
501 cmd->crn = 0; in virtio_scsi_init_hdr()
533 struct virtio_scsi_cmd *cmd = scsi_cmd_priv(sc); in virtscsi_queuecommand() local
544 memset(cmd, 0, sizeof(*cmd)); in virtscsi_queuecommand()
545 cmd->sc = sc; in virtscsi_queuecommand()
550 virtio_scsi_init_hdr_pi(vscsi->vdev, &cmd->req.cmd_pi, sc); in virtscsi_queuecommand()
551 memcpy(cmd->req.cmd_pi.cdb, sc->cmnd, sc->cmd_len); in virtscsi_queuecommand()
552 req_size = sizeof(cmd->req.cmd_pi); in virtscsi_queuecommand()
554 virtio_scsi_init_hdr(vscsi->vdev, &cmd->req.cmd, sc); in virtscsi_queuecommand()
555 memcpy(cmd->req.cmd.cdb, sc->cmnd, sc->cmd_len); in virtscsi_queuecommand()
556 req_size = sizeof(cmd->req.cmd); in virtscsi_queuecommand()
559 if (virtscsi_kick_cmd(req_vq, cmd, req_size, sizeof(cmd->resp.cmd)) != 0) in virtscsi_queuecommand()
637 static int virtscsi_tmf(struct virtio_scsi *vscsi, struct virtio_scsi_cmd *cmd) in virtscsi_tmf() argument
642 cmd->comp = ∁ in virtscsi_tmf()
643 if (virtscsi_kick_cmd(&vscsi->ctrl_vq, cmd, in virtscsi_tmf()
644 sizeof cmd->req.tmf, sizeof cmd->resp.tmf) < 0) in virtscsi_tmf()
648 if (cmd->resp.tmf.response == VIRTIO_SCSI_S_OK || in virtscsi_tmf()
649 cmd->resp.tmf.response == VIRTIO_SCSI_S_FUNCTION_SUCCEEDED) in virtscsi_tmf()
665 mempool_free(cmd, virtscsi_cmd_pool); in virtscsi_tmf()
672 struct virtio_scsi_cmd *cmd; in virtscsi_device_reset() local
675 cmd = mempool_alloc(virtscsi_cmd_pool, GFP_NOIO); in virtscsi_device_reset()
676 if (!cmd) in virtscsi_device_reset()
679 memset(cmd, 0, sizeof(*cmd)); in virtscsi_device_reset()
680 cmd->sc = sc; in virtscsi_device_reset()
681 cmd->req.tmf = (struct virtio_scsi_ctrl_tmf_req){ in virtscsi_device_reset()
690 return virtscsi_tmf(vscsi, cmd); in virtscsi_device_reset()
709 struct virtio_scsi_cmd *cmd; in virtscsi_abort() local
712 cmd = mempool_alloc(virtscsi_cmd_pool, GFP_NOIO); in virtscsi_abort()
713 if (!cmd) in virtscsi_abort()
716 memset(cmd, 0, sizeof(*cmd)); in virtscsi_abort()
717 cmd->sc = sc; in virtscsi_abort()
718 cmd->req.tmf = (struct virtio_scsi_ctrl_tmf_req){ in virtscsi_abort()
727 return virtscsi_tmf(vscsi, cmd); in virtscsi_abort()