Lines Matching defs:io

171 #define PRIV_CCB(io)	((io)->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptrs[0])
172 #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);
656 ctlfedata(struct ctlfe_lun_softc *softc, union ctl_io *io,
667 cmd_info = PRIV_INFO(io);
674 if ((io->io_hdr.flags & CTL_FLAG_DATA_MASK) == CTL_FLAG_DATA_IN)
683 if (io->scsiio.kern_sg_entries == 0) { /* No S/G list. */
686 off += io->scsiio.ext_data_filled;
687 io->scsiio.ext_data_filled = 0;
689 *data_ptr = io->scsiio.kern_data_ptr + off;
690 if (io->scsiio.kern_data_len - off <= bus_softc->maxio) {
691 *dxfer_len = io->scsiio.kern_data_len - off;
699 if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR)
704 ctl_sglist = (struct ctl_sg_entry *)io->scsiio.kern_data_ptr;
707 while (io->scsiio.ext_data_filled >= ctl_sglist[idx].len - off) {
708 io->scsiio.ext_data_filled -= ctl_sglist[idx].len - off;
712 off += io->scsiio.ext_data_filled;
713 io->scsiio.ext_data_filled = 0;
717 for (i = 0; i < io->scsiio.kern_sg_entries - idx; i++) {
733 idx + i < (io->scsiio.kern_sg_entries - 1)) {
743 if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR)
762 union ctl_io *io;
776 io = (union ctl_io *)ccb_h->io_ptr;
781 cmd_info = PRIV_INFO(io);
786 if (io->io_hdr.flags & CTL_FLAG_DMA_QUEUED) {
790 ctlfedata(softc, io, &flags, &data_ptr, &dxfer_len,
796 if ((io->io_hdr.flags & CTL_FLAG_ABORT) &&
797 (io->io_hdr.flags & CTL_FLAG_ABORT_STATUS) == 0) {
798 io->io_hdr.flags &= ~CTL_FLAG_STATUS_QUEUED;
821 if ((io->io_hdr.flags & CTL_FLAG_STATUS_QUEUED) &&
823 ((io->io_hdr.flags & CTL_FLAG_DMA_QUEUED) == 0 ||
824 io->io_hdr.status == CTL_SUCCESS)) {
826 scsi_status = io->scsiio.scsi_status;
827 csio->sense_len = io->scsiio.sense_len;
830 atio->tag_id, io->io_hdr.status);
833 csio->sense_data = io->scsiio.sense_data;
868 printf("%s: tag %04x io status %#x\n", __func__,
869 atio->tag_id, io->io_hdr.status);
885 if (io->io_hdr.flags & CTL_FLAG_DMA_QUEUED)
886 io->io_hdr.flags |= CTL_FLAG_DMA_INPROG;
887 io->io_hdr.flags &= ~(CTL_FLAG_DMA_QUEUED | CTL_FLAG_STATUS_QUEUED);
922 union ctl_io *io;
926 io = ccb->ccb_h.io_ptr;
931 cmd_info = PRIV_INFO(io);
942 ctl_free_io(io);
1077 union ctl_io *io = NULL;
1123 io = done_ccb->ccb_h.io_ptr;
1124 cmd_info = PRIV_INFO(io);
1125 ctl_zero_io(io);
1128 PRIV_CCB(io) = done_ccb;
1129 PRIV_INFO(io) = cmd_info;
1130 done_ccb->ccb_h.io_ptr = io;
1136 io->io_hdr.io_type = CTL_IO_SCSI;
1137 io->io_hdr.nexus.initid = atio->init_id;
1138 io->io_hdr.nexus.targ_port = bus_softc->port.targ_port;
1140 io->io_hdr.nexus.targ_lun = ctl_decode_lun(
1143 io->io_hdr.nexus.targ_lun = atio->ccb_h.target_lun;
1145 io->scsiio.tag_num = atio->tag_id;
1148 io->scsiio.tag_type = CTL_TAG_UNTAGGED;
1151 io->scsiio.tag_type = CTL_TAG_SIMPLE;
1154 io->scsiio.tag_type = CTL_TAG_HEAD_OF_QUEUE;
1157 io->scsiio.tag_type = CTL_TAG_ORDERED;
1160 io->scsiio.tag_type = CTL_TAG_ACA;
1163 io->scsiio.tag_type = CTL_TAG_UNTAGGED;
1168 if (atio->cdb_len > sizeof(io->scsiio.cdb)) {
1170 __func__, atio->cdb_len, sizeof(io->scsiio.cdb));
1172 io->scsiio.cdb_len = min(atio->cdb_len, sizeof(io->scsiio.cdb));
1173 bcopy(atio_cdb_ptr(atio), io->scsiio.cdb, io->scsiio.cdb_len);
1177 io->io_hdr.nexus.initid,
1178 io->io_hdr.nexus.targ_port,
1179 io->io_hdr.nexus.targ_lun,
1180 io->scsiio.tag_num, io->scsiio.cdb[0]);
1183 ctl_queue(io);
1191 io = (union ctl_io *)atio->ccb_h.io_ptr;
1219 if (srr && (io->io_hdr.flags & CTL_FLAG_DMA_INPROG) &&
1220 srr_off >= io->scsiio.kern_rel_offset &&
1221 srr_off < io->scsiio.kern_rel_offset +
1222 io->scsiio.kern_data_len) {
1223 io->scsiio.kern_data_resid =
1224 io->scsiio.kern_rel_offset +
1225 io->scsiio.kern_data_len - srr_off;
1226 io->scsiio.ext_data_filled = srr_off;
1227 io->scsiio.io_hdr.status = CTL_STATUS_NONE;
1228 io->io_hdr.flags |= CTL_FLAG_DMA_QUEUED;
1242 if (srr && (io->io_hdr.flags & CTL_FLAG_DMA_INPROG) == 0) {
1255 io->io_hdr.flags |= CTL_FLAG_STATUS_SENT;
1262 if ((io->io_hdr.flags & CTL_FLAG_DMA_INPROG) == 0) {
1270 (io = ctl_alloc_io_nowait(bus_softc->port.ctl_pool_ref)) != NULL) {
1271 PRIV_INFO(io) = PRIV_INFO(
1274 atio->ccb_h.io_ptr = io;
1294 cmd_info = PRIV_INFO(io);
1296 io->io_hdr.flags &= ~CTL_FLAG_DMA_INPROG;
1307 io->scsiio.kern_data_resid -=
1309 io->io_hdr.port_status = 0;
1323 io->io_hdr.port_status = 0xbad1;
1324 ctl_set_data_phase_error(&io->scsiio);
1336 io->io_hdr.port_status == 0 && csio->resid == 0) {
1345 ctlfedata(softc, io, &flags, &data_ptr,
1354 printf("%s: tag %04x io status %#x\n",
1356 io->io_hdr.status);
1375 io->io_hdr.flags |= CTL_FLAG_DMA_INPROG;
1388 io->scsiio.be_move_done(io);
1395 union ctl_io *io;
1401 io = done_ccb->ccb_h.io_ptr;
1402 ctl_zero_io(io);
1406 io->io_hdr.io_type = CTL_IO_TASK;
1407 PRIV_CCB(io) = done_ccb;
1408 inot->ccb_h.io_ptr = io;
1409 io->io_hdr.nexus.initid = inot->initiator_id;
1410 io->io_hdr.nexus.targ_port = bus_softc->port.targ_port;
1412 io->io_hdr.nexus.targ_lun = ctl_decode_lun(
1415 io->io_hdr.nexus.targ_lun = inot->ccb_h.target_lun;
1418 io->taskio.tag_num = inot->seq_id;
1423 io->taskio.task_action = CTL_TASK_BUS_RESET;
1426 io->taskio.task_action = CTL_TASK_TARGET_RESET;
1431 io->taskio.task_action =
1435 io->taskio.task_action = CTL_TASK_TARGET_RESET;
1438 io->taskio.task_action = CTL_TASK_ABORT_TASK;
1441 io->taskio.task_action = CTL_TASK_LUN_RESET;
1444 io->taskio.task_action =
1448 io->taskio.task_action = CTL_TASK_CLEAR_ACA;
1451 io->taskio.task_action = CTL_TASK_QUERY_TASK;
1454 io->taskio.task_action =
1458 io->taskio.task_action =
1485 ctl_queue(io);
1857 union ctl_io *io = hdr->io_ptr;
1870 ctl_io_error_print(io, NULL);
1875 if (io->io_hdr.flags & CTL_FLAG_DMA_QUEUED) {
1878 io->scsiio.kern_total_len,
1879 io->scsiio.kern_data_len,
1880 io->scsiio.kern_data_resid);
1894 ctlfe_datamove(union ctl_io *io)
1900 KASSERT(io->io_hdr.io_type == CTL_IO_SCSI,
1901 ("Unexpected io_type (%d) in ctlfe_datamove", io->io_hdr.io_type));
1903 io->scsiio.ext_data_filled = 0;
1904 ccb = PRIV_CCB(io);
1908 io->io_hdr.flags |= CTL_FLAG_DMA_QUEUED;
1909 if ((io->io_hdr.status & CTL_STATUS_MASK) != CTL_STATUS_NONE)
1910 io->io_hdr.flags |= CTL_FLAG_STATUS_QUEUED;
1918 ctlfe_done(union ctl_io *io)
1924 ccb = PRIV_CCB(io);
1929 if (io->io_hdr.io_type == CTL_IO_TASK) {
1936 switch (io->taskio.task_status) {
1957 ccb->cna2.arg |= scsi_3btoul(io->taskio.task_resp) << 8;
1959 } else if (io->io_hdr.flags & CTL_FLAG_STATUS_SENT) {
1963 io->io_hdr.flags |= CTL_FLAG_STATUS_QUEUED;