Lines Matching full:io

98 efct_fc_tmf_rejected_cb(struct efct_io *io,  in efct_fc_tmf_rejected_cb()  argument
102 efct_scsi_io_free(io); in efct_fc_tmf_rejected_cb()
107 efct_dispatch_unsol_tmf(struct efct_io *io, u8 tm_flags, u32 lun) in efct_dispatch_unsol_tmf() argument
120 io->exp_xfer_len = 0; in efct_dispatch_unsol_tmf()
124 io->tmf_cmd = tmflist[i].cmd; in efct_dispatch_unsol_tmf()
125 efct_scsi_recv_tmf(io, lun, tmflist[i].cmd, NULL, 0); in efct_dispatch_unsol_tmf()
131 efc_log_err(io->node->efct, "TMF x%x rejected\n", tm_flags); in efct_dispatch_unsol_tmf()
132 efct_scsi_send_tmf_resp(io, EFCT_SCSI_TMF_FUNCTION_REJECTED, in efct_dispatch_unsol_tmf()
159 efct_populate_io_fcp_cmd(struct efct_io *io, struct fcp_cmnd *cmnd, in efct_populate_io_fcp_cmd() argument
162 io->init_task_tag = be16_to_cpu(fchdr->fh_ox_id); in efct_populate_io_fcp_cmd()
163 /* note, tgt_task_tag, hw_tag set when HW io is allocated */ in efct_populate_io_fcp_cmd()
164 io->exp_xfer_len = be32_to_cpu(cmnd->fc_dl); in efct_populate_io_fcp_cmd()
165 io->transferred = 0; in efct_populate_io_fcp_cmd()
170 * in that IO. Thus we need to save the incoming CS_CTL here. in efct_populate_io_fcp_cmd()
173 io->cs_ctl = fchdr->fh_cs_ctl; in efct_populate_io_fcp_cmd()
175 io->cs_ctl = 0; in efct_populate_io_fcp_cmd()
177 io->seq_init = sit; in efct_populate_io_fcp_cmd()
344 struct efct_io *io = NULL; in efct_dispatch_fcp_cmd() local
362 io = efct_scsi_io_alloc(node); in efct_dispatch_fcp_cmd()
363 if (!io) { in efct_dispatch_fcp_cmd()
374 io->hw_priv = seq->hw_priv; in efct_dispatch_fcp_cmd()
376 io->app_id = 0; in efct_dispatch_fcp_cmd()
379 efct_populate_io_fcp_cmd(io, cmnd, fchdr, true); in efct_dispatch_fcp_cmd()
382 efct_dispatch_unsol_tmf(io, cmnd->fc_tm_flags, lun); in efct_dispatch_fcp_cmd()
394 efct_scsi_recv_cmd(io, lun, cmnd->fc_cdb, in efct_dispatch_fcp_cmd()
402 efct_process_abts(struct efct_io *io, struct fc_frame_header *hdr) in efct_process_abts() argument
404 struct efct_node *node = io->node; in efct_process_abts()
405 struct efct *efct = io->efct; in efct_process_abts()
410 /* Find IO and attempt to take a reference on it */ in efct_process_abts()
414 /* Got a reference on the IO. Hold it until backend in efct_process_abts()
423 * TMF IO object in efct_process_abts()
425 io->display_name = "abts"; in efct_process_abts()
426 io->init_task_tag = ox_id; in efct_process_abts()
432 * regardless of the IO context's rx_id in efct_process_abts()
434 io->abort_rx_id = rx_id; in efct_process_abts()
437 io->tmf_cmd = EFCT_SCSI_TMF_ABORT_TASK; in efct_process_abts()
438 efct_scsi_recv_tmf(io, abortio->tgt_io.lun, in efct_process_abts()
443 * reference on the IO if needed; in efct_process_abts()
449 * Either IO was not found or it has been in efct_process_abts()
453 efc_log_info(node->efct, "Abort: ox_id [%04x], IO not found\n", in efct_process_abts()
457 efct_bls_send_rjt(io, hdr); in efct_process_abts()
467 struct efct_io *io = NULL; in efct_node_recv_abts_frame() local
470 io = efct_scsi_io_alloc(node); in efct_node_recv_abts_frame()
471 if (io) { in efct_node_recv_abts_frame()
472 io->hw_priv = seq->hw_priv; in efct_node_recv_abts_frame()
474 io->seq_init = 1; in efct_node_recv_abts_frame()
477 io->efct = efct; in efct_node_recv_abts_frame()
478 io->node = node; in efct_node_recv_abts_frame()
479 io->cmd_tgt = true; in efct_node_recv_abts_frame()
481 efct_process_abts(io, seq->header->dma.virt); in efct_node_recv_abts_frame()
484 "SCSI IO allocation failed for ABTS received "); in efct_node_recv_abts_frame()