Lines Matching defs:io

170 #define PRIV_CCB(io)	((io)->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptrs[0])
171 #define PRIV_INFO(io) ((io)->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptrs[1])
193 static void ctlfe_datamove(union ctl_io *io);
194 static void ctlfe_done(union ctl_io *io);
667 ctlfedata(struct ctlfe_lun_softc *softc, union ctl_io *io,
678 cmd_info = PRIV_INFO(io);
685 if ((io->io_hdr.flags & CTL_FLAG_DATA_MASK) == CTL_FLAG_DATA_IN)
694 if (io->scsiio.kern_sg_entries == 0) { /* No S/G list. */
697 off += io->scsiio.ext_data_filled;
698 io->scsiio.ext_data_filled = 0;
700 *data_ptr = io->scsiio.kern_data_ptr + off;
701 if (io->scsiio.kern_data_len - off <= bus_softc->maxio) {
702 *dxfer_len = io->scsiio.kern_data_len - off;
710 if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR)
715 ctl_sglist = (struct ctl_sg_entry *)io->scsiio.kern_data_ptr;
718 while (io->scsiio.ext_data_filled >= ctl_sglist[idx].len - off) {
719 io->scsiio.ext_data_filled -= ctl_sglist[idx].len - off;
723 off += io->scsiio.ext_data_filled;
724 io->scsiio.ext_data_filled = 0;
728 for (i = 0; i < io->scsiio.kern_sg_entries - idx; i++) {
744 idx + i < (io->scsiio.kern_sg_entries - 1)) {
754 if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR)
773 union ctl_io *io;
787 io = (union ctl_io *)ccb_h->io_ptr;
792 cmd_info = PRIV_INFO(io);
797 if (io->io_hdr.flags & CTL_FLAG_DMA_QUEUED) {
801 ctlfedata(softc, io, &flags, &data_ptr, &dxfer_len,
807 if ((io->io_hdr.flags & CTL_FLAG_ABORT) &&
808 (io->io_hdr.flags & CTL_FLAG_ABORT_STATUS) == 0) {
809 io->io_hdr.flags &= ~CTL_FLAG_STATUS_QUEUED;
832 if ((io->io_hdr.flags & CTL_FLAG_STATUS_QUEUED) &&
834 ((io->io_hdr.flags & CTL_FLAG_DMA_QUEUED) == 0 ||
835 io->io_hdr.status == CTL_SUCCESS)) {
837 scsi_status = io->scsiio.scsi_status;
838 csio->sense_len = io->scsiio.sense_len;
841 atio->tag_id, io->io_hdr.status);
844 csio->sense_data = io->scsiio.sense_data;
879 printf("%s: tag %04x io status %#x\n", __func__,
880 atio->tag_id, io->io_hdr.status);
896 if (io->io_hdr.flags & CTL_FLAG_DMA_QUEUED)
897 io->io_hdr.flags |= CTL_FLAG_DMA_INPROG;
898 io->io_hdr.flags &= ~(CTL_FLAG_DMA_QUEUED | CTL_FLAG_STATUS_QUEUED);
933 union ctl_io *io;
937 io = ccb->ccb_h.io_ptr;
942 cmd_info = PRIV_INFO(io);
953 ctl_free_io(io);
1086 union ctl_io *io = NULL;
1131 io = done_ccb->ccb_h.io_ptr;
1132 cmd_info = PRIV_INFO(io);
1133 ctl_zero_io(io);
1136 PRIV_CCB(io) = done_ccb;
1137 PRIV_INFO(io) = cmd_info;
1138 done_ccb->ccb_h.io_ptr = io;
1144 io->io_hdr.io_type = CTL_IO_SCSI;
1145 io->io_hdr.nexus.initid = atio->init_id;
1146 io->io_hdr.nexus.targ_port = bus_softc->port.targ_port;
1148 io->io_hdr.nexus.targ_lun = ctl_decode_lun(
1151 io->io_hdr.nexus.targ_lun = atio->ccb_h.target_lun;
1153 io->scsiio.priority = atio->priority;
1154 io->scsiio.tag_num = atio->tag_id;
1157 io->scsiio.tag_type = CTL_TAG_UNTAGGED;
1160 io->scsiio.tag_type = CTL_TAG_SIMPLE;
1163 io->scsiio.tag_type = CTL_TAG_HEAD_OF_QUEUE;
1166 io->scsiio.tag_type = CTL_TAG_ORDERED;
1169 io->scsiio.tag_type = CTL_TAG_ACA;
1172 io->scsiio.tag_type = CTL_TAG_UNTAGGED;
1177 if (atio->cdb_len > sizeof(io->scsiio.cdb)) {
1179 __func__, atio->cdb_len, sizeof(io->scsiio.cdb));
1181 io->scsiio.cdb_len = min(atio->cdb_len, sizeof(io->scsiio.cdb));
1182 bcopy(atio_cdb_ptr(atio), io->scsiio.cdb, io->scsiio.cdb_len);
1186 io->io_hdr.nexus.initid,
1187 io->io_hdr.nexus.targ_port,
1188 io->io_hdr.nexus.targ_lun,
1189 io->scsiio.tag_num, io->scsiio.cdb[0]);
1192 ctl_queue(io);
1200 io = (union ctl_io *)atio->ccb_h.io_ptr;
1228 if (srr && (io->io_hdr.flags & CTL_FLAG_DMA_INPROG) &&
1229 srr_off >= io->scsiio.kern_rel_offset &&
1230 srr_off < io->scsiio.kern_rel_offset +
1231 io->scsiio.kern_data_len) {
1232 io->scsiio.kern_data_resid =
1233 io->scsiio.kern_rel_offset +
1234 io->scsiio.kern_data_len - srr_off;
1235 io->scsiio.ext_data_filled = srr_off;
1236 io->scsiio.io_hdr.status = CTL_STATUS_NONE;
1237 io->io_hdr.flags |= CTL_FLAG_DMA_QUEUED;
1251 if (srr && (io->io_hdr.flags & CTL_FLAG_DMA_INPROG) == 0) {
1264 io->io_hdr.flags |= CTL_FLAG_STATUS_SENT;
1271 if ((io->io_hdr.flags & CTL_FLAG_DMA_INPROG) == 0) {
1279 (io = ctl_alloc_io_nowait(bus_softc->port.ctl_pool_ref)) != NULL) {
1280 PRIV_INFO(io) = PRIV_INFO(
1283 atio->ccb_h.io_ptr = io;
1303 cmd_info = PRIV_INFO(io);
1305 io->io_hdr.flags &= ~CTL_FLAG_DMA_INPROG;
1316 io->scsiio.kern_data_resid -=
1318 io->io_hdr.port_status = 0;
1332 io->io_hdr.port_status = 0xbad1;
1333 ctl_set_data_phase_error(&io->scsiio);
1345 io->io_hdr.port_status == 0 && csio->resid == 0) {
1354 ctlfedata(softc, io, &flags, &data_ptr,
1363 printf("%s: tag %04x io status %#x\n",
1365 io->io_hdr.status);
1384 io->io_hdr.flags |= CTL_FLAG_DMA_INPROG;
1396 ctl_datamove_done(io, false);
1403 union ctl_io *io;
1409 io = done_ccb->ccb_h.io_ptr;
1410 ctl_zero_io(io);
1414 io->io_hdr.io_type = CTL_IO_TASK;
1415 PRIV_CCB(io) = done_ccb;
1416 inot->ccb_h.io_ptr = io;
1417 io->io_hdr.nexus.initid = inot->initiator_id;
1418 io->io_hdr.nexus.targ_port = bus_softc->port.targ_port;
1420 io->io_hdr.nexus.targ_lun = ctl_decode_lun(
1423 io->io_hdr.nexus.targ_lun = inot->ccb_h.target_lun;
1426 io->taskio.tag_num = inot->seq_id;
1431 io->taskio.task_action = CTL_TASK_BUS_RESET;
1434 io->taskio.task_action = CTL_TASK_TARGET_RESET;
1439 io->taskio.task_action =
1443 io->taskio.task_action = CTL_TASK_TARGET_RESET;
1446 io->taskio.task_action = CTL_TASK_ABORT_TASK;
1449 io->taskio.task_action = CTL_TASK_LUN_RESET;
1452 io->taskio.task_action =
1456 io->taskio.task_action = CTL_TASK_CLEAR_ACA;
1459 io->taskio.task_action = CTL_TASK_QUERY_TASK;
1462 io->taskio.task_action =
1466 io->taskio.task_action =
1494 ctl_queue(io);
1868 union ctl_io *io = hdr->io_ptr;
1881 ctl_io_error_print(io, NULL);
1886 if (io->io_hdr.flags & CTL_FLAG_DMA_QUEUED) {
1889 io->scsiio.kern_total_len,
1890 io->scsiio.kern_data_len,
1891 io->scsiio.kern_data_resid);
1905 ctlfe_datamove(union ctl_io *io)
1911 CTL_IO_ASSERT(io, SCSI);
1913 io->scsiio.ext_data_filled = 0;
1914 ccb = PRIV_CCB(io);
1918 io->io_hdr.flags |= CTL_FLAG_DMA_QUEUED;
1919 if ((io->io_hdr.status & CTL_STATUS_MASK) != CTL_STATUS_NONE)
1920 io->io_hdr.flags |= CTL_FLAG_STATUS_QUEUED;
1928 ctlfe_done(union ctl_io *io)
1934 ccb = PRIV_CCB(io);
1939 if (io->io_hdr.io_type == CTL_IO_TASK) {
1946 switch (io->taskio.task_status) {
1967 ccb->cna2.arg |= scsi_3btoul(io->taskio.task_resp) << 8;
1969 } else if (io->io_hdr.flags & CTL_FLAG_STATUS_SENT) {
1973 io->io_hdr.flags |= CTL_FLAG_STATUS_QUEUED;