Lines Matching refs:cmd

45 		struct virtio_scsi_cmd_req       cmd;  member
51 struct virtio_scsi_cmd_resp cmd; member
111 struct virtio_scsi_cmd *cmd = buf; in virtscsi_complete_cmd() local
112 struct scsi_cmnd *sc = cmd->sc; in virtscsi_complete_cmd()
113 struct virtio_scsi_cmd_resp *resp = &cmd->resp.cmd; in virtscsi_complete_cmd()
213 struct virtio_scsi_cmd *cmd = buf; in virtscsi_complete_free() local
215 if (cmd->comp) in virtscsi_complete_free()
216 complete(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()
492 struct virtio_scsi_cmd *cmd, in virtscsi_add_cmd() argument
501 err = __virtscsi_add_cmd(vq->vq, cmd, req_size, resp_size); in virtscsi_add_cmd()
513 struct virtio_scsi_cmd_req *cmd, in virtio_scsi_init_hdr() argument
516 cmd->lun[0] = 1; in virtio_scsi_init_hdr()
517 cmd->lun[1] = sc->device->id; in virtio_scsi_init_hdr()
518 cmd->lun[2] = (sc->device->lun >> 8) | 0x40; in virtio_scsi_init_hdr()
519 cmd->lun[3] = sc->device->lun & 0xff; in virtio_scsi_init_hdr()
520 cmd->tag = cpu_to_virtio64(vdev, (unsigned long)sc); in virtio_scsi_init_hdr()
521 cmd->task_attr = VIRTIO_SCSI_S_SIMPLE; in virtio_scsi_init_hdr()
522 cmd->prio = 0; in virtio_scsi_init_hdr()
523 cmd->crn = 0; in virtio_scsi_init_hdr()
566 struct virtio_scsi_cmd *cmd = scsi_cmd_priv(sc); in virtscsi_queuecommand() local
580 cmd->sc = sc; in virtscsi_queuecommand()
586 virtio_scsi_init_hdr_pi(vscsi->vdev, &cmd->req.cmd_pi, sc); in virtscsi_queuecommand()
587 memcpy(cmd->req.cmd_pi.cdb, sc->cmnd, sc->cmd_len); in virtscsi_queuecommand()
588 req_size = sizeof(cmd->req.cmd_pi); in virtscsi_queuecommand()
592 virtio_scsi_init_hdr(vscsi->vdev, &cmd->req.cmd, sc); in virtscsi_queuecommand()
593 memcpy(cmd->req.cmd.cdb, sc->cmnd, sc->cmd_len); in virtscsi_queuecommand()
594 req_size = sizeof(cmd->req.cmd); in virtscsi_queuecommand()
598 ret = virtscsi_add_cmd(req_vq, cmd, req_size, sizeof(cmd->resp.cmd), kick); in virtscsi_queuecommand()
600 cmd->resp.cmd.response = VIRTIO_SCSI_S_BAD_TARGET; in virtscsi_queuecommand()
602 virtscsi_complete_cmd(vscsi, cmd); in virtscsi_queuecommand()
610 static int virtscsi_tmf(struct virtio_scsi *vscsi, struct virtio_scsi_cmd *cmd) in virtscsi_tmf() argument
615 cmd->comp = ∁ in virtscsi_tmf()
616 if (virtscsi_add_cmd(&vscsi->ctrl_vq, cmd, in virtscsi_tmf()
617 sizeof cmd->req.tmf, sizeof cmd->resp.tmf, true) < 0) in virtscsi_tmf()
621 if (cmd->resp.tmf.response == VIRTIO_SCSI_S_OK || in virtscsi_tmf()
622 cmd->resp.tmf.response == VIRTIO_SCSI_S_FUNCTION_SUCCEEDED) in virtscsi_tmf()
637 mempool_free(cmd, virtscsi_cmd_pool); in virtscsi_tmf()
644 struct virtio_scsi_cmd *cmd; in virtscsi_device_reset() local
647 cmd = mempool_alloc(virtscsi_cmd_pool, GFP_NOIO); in virtscsi_device_reset()
648 if (!cmd) in virtscsi_device_reset()
651 memset(cmd, 0, sizeof(*cmd)); in virtscsi_device_reset()
652 cmd->req.tmf = (struct virtio_scsi_ctrl_tmf_req){ in virtscsi_device_reset()
661 return virtscsi_tmf(vscsi, cmd); in virtscsi_device_reset()
702 struct virtio_scsi_cmd *cmd; in virtscsi_abort() local
705 cmd = mempool_alloc(virtscsi_cmd_pool, GFP_NOIO); in virtscsi_abort()
706 if (!cmd) in virtscsi_abort()
709 memset(cmd, 0, sizeof(*cmd)); in virtscsi_abort()
710 cmd->req.tmf = (struct virtio_scsi_ctrl_tmf_req){ in virtscsi_abort()
719 return virtscsi_tmf(vscsi, cmd); in virtscsi_abort()