Lines Matching refs:sc
107 struct scsi_cmnd *sc) in fnic_io_lock_hash() argument
109 u32 hash = sc->request->tag & (FNIC_IO_LOCKS - 1); in fnic_io_lock_hash()
126 struct scsi_cmnd *sc) in fnic_release_ioreq_buf() argument
132 scsi_dma_unmap(sc); in fnic_release_ioreq_buf()
320 struct scsi_cmnd *sc, in fnic_queue_wq_copy_desc() argument
324 struct fc_rport *rport = starget_to_rport(scsi_target(sc->device)); in fnic_queue_wq_copy_desc()
338 for_each_sg(scsi_sglist(sc), sg, sg_count, i) { in fnic_queue_wq_copy_desc()
359 sc->sense_buffer, in fnic_queue_wq_copy_desc()
372 int_to_scsilun(sc->device->lun, &fc_lun); in fnic_queue_wq_copy_desc()
389 if (sc->sc_data_direction == DMA_FROM_DEVICE) in fnic_queue_wq_copy_desc()
391 else if (sc->sc_data_direction == DMA_TO_DEVICE) in fnic_queue_wq_copy_desc()
399 fnic_queue_wq_copy_desc_icmnd_16(wq, sc->request->tag, in fnic_queue_wq_copy_desc()
408 sc->cmnd, sc->cmd_len, in fnic_queue_wq_copy_desc()
409 scsi_bufflen(sc), in fnic_queue_wq_copy_desc()
429 static int fnic_queuecommand_lck(struct scsi_cmnd *sc, void (*done)(struct scsi_cmnd *)) in fnic_queuecommand_lck() argument
431 struct fc_lport *lp = shost_priv(sc->device->host); in fnic_queuecommand_lck()
449 rport = starget_to_rport(scsi_target(sc->device)); in fnic_queuecommand_lck()
453 sc->result = ret; in fnic_queuecommand_lck()
454 done(sc); in fnic_queuecommand_lck()
463 sc->result = DID_NO_CONNECT; in fnic_queuecommand_lck()
464 done(sc); in fnic_queuecommand_lck()
479 CMD_STATE(sc) = FNIC_IOREQ_NOT_INITED; in fnic_queuecommand_lck()
480 CMD_FLAGS(sc) = FNIC_NO_FLAGS; in fnic_queuecommand_lck()
492 sg_count = scsi_dma_map(sc); in fnic_queuecommand_lck()
494 FNIC_TRACE(fnic_queuecommand, sc->device->host->host_no, in fnic_queuecommand_lck()
495 sc->request->tag, sc, 0, sc->cmnd[0], in fnic_queuecommand_lck()
496 sg_count, CMD_STATE(sc)); in fnic_queuecommand_lck()
514 scsi_dma_unmap(sc); in fnic_queuecommand_lck()
534 io_lock = fnic_io_lock_hash(fnic, sc); in fnic_queuecommand_lck()
541 CMD_STATE(sc) = FNIC_IOREQ_CMD_PENDING; in fnic_queuecommand_lck()
542 CMD_SP(sc) = (char *)io_req; in fnic_queuecommand_lck()
543 CMD_FLAGS(sc) |= FNIC_IO_INITIALIZED; in fnic_queuecommand_lck()
544 sc->scsi_done = done; in fnic_queuecommand_lck()
548 ret = fnic_queue_wq_copy_desc(fnic, wq, io_req, sc, sg_count); in fnic_queuecommand_lck()
554 FNIC_TRACE(fnic_queuecommand, sc->device->host->host_no, in fnic_queuecommand_lck()
555 sc->request->tag, sc, 0, 0, 0, in fnic_queuecommand_lck()
556 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); in fnic_queuecommand_lck()
557 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_queuecommand_lck()
558 CMD_SP(sc) = NULL; in fnic_queuecommand_lck()
559 CMD_STATE(sc) = FNIC_IOREQ_CMD_COMPLETE; in fnic_queuecommand_lck()
562 fnic_release_ioreq_buf(fnic, io_req, sc); in fnic_queuecommand_lck()
578 CMD_FLAGS(sc) |= FNIC_IO_ISSUED; in fnic_queuecommand_lck()
581 cmd_trace = ((u64)sc->cmnd[0] << 56 | (u64)sc->cmnd[7] << 40 | in fnic_queuecommand_lck()
582 (u64)sc->cmnd[8] << 32 | (u64)sc->cmnd[2] << 24 | in fnic_queuecommand_lck()
583 (u64)sc->cmnd[3] << 16 | (u64)sc->cmnd[4] << 8 | in fnic_queuecommand_lck()
584 sc->cmnd[5]); in fnic_queuecommand_lck()
586 FNIC_TRACE(fnic_queuecommand, sc->device->host->host_no, in fnic_queuecommand_lck()
587 sc->request->tag, sc, io_req, in fnic_queuecommand_lck()
589 (((u64)CMD_FLAGS(sc) >> 32) | CMD_STATE(sc))); in fnic_queuecommand_lck()
810 struct scsi_cmnd *sc; in fnic_fcpio_icmnd_cmpl_handler() local
829 sc = scsi_host_find_tag(fnic->lport->host, id); in fnic_fcpio_icmnd_cmpl_handler()
830 WARN_ON_ONCE(!sc); in fnic_fcpio_icmnd_cmpl_handler()
831 if (!sc) { in fnic_fcpio_icmnd_cmpl_handler()
848 io_lock = fnic_io_lock_hash(fnic, sc); in fnic_fcpio_icmnd_cmpl_handler()
850 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_fcpio_icmnd_cmpl_handler()
854 CMD_FLAGS(sc) |= FNIC_IO_REQ_NULL; in fnic_fcpio_icmnd_cmpl_handler()
859 fnic_fcpio_status_to_str(hdr_status), id, sc); in fnic_fcpio_icmnd_cmpl_handler()
871 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { in fnic_fcpio_icmnd_cmpl_handler()
873 CMD_FLAGS(sc) |= FNIC_IO_ABTS_PENDING; in fnic_fcpio_icmnd_cmpl_handler()
876 CMD_FLAGS(sc) |= FNIC_IO_DONE; in fnic_fcpio_icmnd_cmpl_handler()
880 fnic_fcpio_status_to_str(hdr_status), sc, in fnic_fcpio_icmnd_cmpl_handler()
885 CMD_FLAGS(sc) |= FNIC_IO_ABORTED; in fnic_fcpio_icmnd_cmpl_handler()
892 id, sc); in fnic_fcpio_icmnd_cmpl_handler()
899 CMD_STATE(sc) = FNIC_IOREQ_CMD_COMPLETE; in fnic_fcpio_icmnd_cmpl_handler()
905 sc->result = (DID_OK << 16) | icmnd_cmpl->scsi_status; in fnic_fcpio_icmnd_cmpl_handler()
906 xfer_len = scsi_bufflen(sc); in fnic_fcpio_icmnd_cmpl_handler()
907 scsi_set_resid(sc, icmnd_cmpl->residual); in fnic_fcpio_icmnd_cmpl_handler()
918 sc->result = (DID_TIME_OUT << 16) | icmnd_cmpl->scsi_status; in fnic_fcpio_icmnd_cmpl_handler()
923 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; in fnic_fcpio_icmnd_cmpl_handler()
928 scsi_set_resid(sc, icmnd_cmpl->residual); in fnic_fcpio_icmnd_cmpl_handler()
929 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; in fnic_fcpio_icmnd_cmpl_handler()
934 sc->result = (DID_REQUEUE << 16) | icmnd_cmpl->scsi_status; in fnic_fcpio_icmnd_cmpl_handler()
939 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; in fnic_fcpio_icmnd_cmpl_handler()
944 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; in fnic_fcpio_icmnd_cmpl_handler()
949 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; in fnic_fcpio_icmnd_cmpl_handler()
954 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; in fnic_fcpio_icmnd_cmpl_handler()
963 sc->result = (DID_ERROR << 16) | icmnd_cmpl->scsi_status; in fnic_fcpio_icmnd_cmpl_handler()
973 CMD_SP(sc) = NULL; in fnic_fcpio_icmnd_cmpl_handler()
974 CMD_FLAGS(sc) |= FNIC_IO_DONE; in fnic_fcpio_icmnd_cmpl_handler()
978 fnic_release_ioreq_buf(fnic, io_req, sc); in fnic_fcpio_icmnd_cmpl_handler()
984 (u64)icmnd_cmpl->flags << 40 | (u64)sc->cmnd[0] << 32 | in fnic_fcpio_icmnd_cmpl_handler()
985 (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | in fnic_fcpio_icmnd_cmpl_handler()
986 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]; in fnic_fcpio_icmnd_cmpl_handler()
989 sc->device->host->host_no, id, sc, in fnic_fcpio_icmnd_cmpl_handler()
994 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); in fnic_fcpio_icmnd_cmpl_handler()
996 if (sc->sc_data_direction == DMA_FROM_DEVICE) { in fnic_fcpio_icmnd_cmpl_handler()
999 } else if (sc->sc_data_direction == DMA_TO_DEVICE) { in fnic_fcpio_icmnd_cmpl_handler()
1012 if (sc->scsi_done) in fnic_fcpio_icmnd_cmpl_handler()
1013 sc->scsi_done(sc); in fnic_fcpio_icmnd_cmpl_handler()
1026 struct scsi_cmnd *sc; in fnic_fcpio_itmf_cmpl_handler() local
1046 sc = scsi_host_find_tag(fnic->lport->host, id & FNIC_TAG_MASK); in fnic_fcpio_itmf_cmpl_handler()
1047 WARN_ON_ONCE(!sc); in fnic_fcpio_itmf_cmpl_handler()
1048 if (!sc) { in fnic_fcpio_itmf_cmpl_handler()
1055 io_lock = fnic_io_lock_hash(fnic, sc); in fnic_fcpio_itmf_cmpl_handler()
1057 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_fcpio_itmf_cmpl_handler()
1062 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_REQ_NULL; in fnic_fcpio_itmf_cmpl_handler()
1066 fnic_fcpio_status_to_str(hdr_status), id, sc); in fnic_fcpio_itmf_cmpl_handler()
1077 CMD_STATE(sc) = FNIC_IOREQ_ABTS_COMPLETE; in fnic_fcpio_itmf_cmpl_handler()
1078 CMD_ABTS_STATUS(sc) = hdr_status; in fnic_fcpio_itmf_cmpl_handler()
1079 CMD_FLAGS(sc) |= FNIC_DEV_RST_DONE; in fnic_fcpio_itmf_cmpl_handler()
1089 if (CMD_FLAGS(sc) & FNIC_IO_ABTS_ISSUED) in fnic_fcpio_itmf_cmpl_handler()
1096 if (CMD_FLAGS(sc) & FNIC_IO_ABTS_ISSUED) in fnic_fcpio_itmf_cmpl_handler()
1103 if (CMD_FLAGS(sc) & FNIC_IO_ABTS_ISSUED) in fnic_fcpio_itmf_cmpl_handler()
1110 if (CMD_STATE(sc) != FNIC_IOREQ_ABTS_PENDING) { in fnic_fcpio_itmf_cmpl_handler()
1115 CMD_ABTS_STATUS(sc) = hdr_status; in fnic_fcpio_itmf_cmpl_handler()
1116 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_DONE; in fnic_fcpio_itmf_cmpl_handler()
1124 if (!(CMD_FLAGS(sc) & (FNIC_IO_ABORTED | FNIC_IO_DONE))) in fnic_fcpio_itmf_cmpl_handler()
1143 CMD_SP(sc) = NULL; in fnic_fcpio_itmf_cmpl_handler()
1144 sc->result = (DID_ERROR << 16); in fnic_fcpio_itmf_cmpl_handler()
1148 fnic_release_ioreq_buf(fnic, io_req, sc); in fnic_fcpio_itmf_cmpl_handler()
1150 if (sc->scsi_done) { in fnic_fcpio_itmf_cmpl_handler()
1152 sc->device->host->host_no, id, in fnic_fcpio_itmf_cmpl_handler()
1153 sc, in fnic_fcpio_itmf_cmpl_handler()
1157 (u64)sc->cmnd[0] << 32 | in fnic_fcpio_itmf_cmpl_handler()
1158 (u64)sc->cmnd[2] << 24 | in fnic_fcpio_itmf_cmpl_handler()
1159 (u64)sc->cmnd[3] << 16 | in fnic_fcpio_itmf_cmpl_handler()
1160 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), in fnic_fcpio_itmf_cmpl_handler()
1161 (((u64)CMD_FLAGS(sc) << 32) | in fnic_fcpio_itmf_cmpl_handler()
1162 CMD_STATE(sc))); in fnic_fcpio_itmf_cmpl_handler()
1163 sc->scsi_done(sc); in fnic_fcpio_itmf_cmpl_handler()
1169 CMD_LR_STATUS(sc) = hdr_status; in fnic_fcpio_itmf_cmpl_handler()
1170 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { in fnic_fcpio_itmf_cmpl_handler()
1172 CMD_FLAGS(sc) |= FNIC_DEV_RST_ABTS_PENDING; in fnic_fcpio_itmf_cmpl_handler()
1174 sc->device->host->host_no, id, sc, in fnic_fcpio_itmf_cmpl_handler()
1177 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); in fnic_fcpio_itmf_cmpl_handler()
1185 if (CMD_FLAGS(sc) & FNIC_DEV_RST_TIMED_OUT) { in fnic_fcpio_itmf_cmpl_handler()
1189 sc->device->host->host_no, id, sc, in fnic_fcpio_itmf_cmpl_handler()
1192 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); in fnic_fcpio_itmf_cmpl_handler()
1200 CMD_STATE(sc) = FNIC_IOREQ_CMD_COMPLETE; in fnic_fcpio_itmf_cmpl_handler()
1201 CMD_FLAGS(sc) |= FNIC_DEV_RST_DONE; in fnic_fcpio_itmf_cmpl_handler()
1213 fnic_ioreq_state_to_str(CMD_STATE(sc)), id); in fnic_fcpio_itmf_cmpl_handler()
1298 struct scsi_cmnd *sc; in fnic_cleanup_io() local
1309 sc = scsi_host_find_tag(fnic->lport->host, i); in fnic_cleanup_io()
1310 if (!sc) { in fnic_cleanup_io()
1315 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_cleanup_io()
1316 if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && in fnic_cleanup_io()
1317 !(CMD_FLAGS(sc) & FNIC_DEV_RST_DONE)) { in fnic_cleanup_io()
1322 CMD_FLAGS(sc) |= FNIC_DEV_RST_DONE; in fnic_cleanup_io()
1329 } else if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { in fnic_cleanup_io()
1338 CMD_SP(sc) = NULL; in fnic_cleanup_io()
1347 fnic_release_ioreq_buf(fnic, io_req, sc); in fnic_cleanup_io()
1351 sc->result = DID_TRANSPORT_DISRUPTED << 16; in fnic_cleanup_io()
1362 if (sc->scsi_done) { in fnic_cleanup_io()
1364 sc->device->host->host_no, i, sc, in fnic_cleanup_io()
1366 0, ((u64)sc->cmnd[0] << 32 | in fnic_cleanup_io()
1367 (u64)sc->cmnd[2] << 24 | in fnic_cleanup_io()
1368 (u64)sc->cmnd[3] << 16 | in fnic_cleanup_io()
1369 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), in fnic_cleanup_io()
1370 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); in fnic_cleanup_io()
1372 sc->scsi_done(sc); in fnic_cleanup_io()
1383 struct scsi_cmnd *sc; in fnic_wq_copy_cleanup_handler() local
1395 sc = scsi_host_find_tag(fnic->lport->host, id); in fnic_wq_copy_cleanup_handler()
1396 if (!sc) in fnic_wq_copy_cleanup_handler()
1399 io_lock = fnic_io_lock_hash(fnic, sc); in fnic_wq_copy_cleanup_handler()
1403 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_wq_copy_cleanup_handler()
1412 CMD_SP(sc) = NULL; in fnic_wq_copy_cleanup_handler()
1417 fnic_release_ioreq_buf(fnic, io_req, sc); in fnic_wq_copy_cleanup_handler()
1421 sc->result = DID_NO_CONNECT << 16; in fnic_wq_copy_cleanup_handler()
1425 if (sc->scsi_done) { in fnic_wq_copy_cleanup_handler()
1427 sc->device->host->host_no, id, sc, in fnic_wq_copy_cleanup_handler()
1429 0, ((u64)sc->cmnd[0] << 32 | in fnic_wq_copy_cleanup_handler()
1430 (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | in fnic_wq_copy_cleanup_handler()
1431 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), in fnic_wq_copy_cleanup_handler()
1432 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); in fnic_wq_copy_cleanup_handler()
1434 sc->scsi_done(sc); in fnic_wq_copy_cleanup_handler()
1493 struct scsi_cmnd *sc; in fnic_rport_exch_reset() local
1511 sc = scsi_host_find_tag(fnic->lport->host, tag); in fnic_rport_exch_reset()
1512 if (!sc) { in fnic_rport_exch_reset()
1517 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_rport_exch_reset()
1524 if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && in fnic_rport_exch_reset()
1525 (!(CMD_FLAGS(sc) & FNIC_DEV_RST_ISSUED))) { in fnic_rport_exch_reset()
1528 sc); in fnic_rport_exch_reset()
1537 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { in fnic_rport_exch_reset()
1545 fnic_ioreq_state_to_str(CMD_STATE(sc))); in fnic_rport_exch_reset()
1548 if (!(CMD_FLAGS(sc) & FNIC_IO_ISSUED)) { in fnic_rport_exch_reset()
1553 sc, tag, CMD_FLAGS(sc), CMD_STATE(sc)); in fnic_rport_exch_reset()
1555 old_ioreq_state = CMD_STATE(sc); in fnic_rport_exch_reset()
1556 CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; in fnic_rport_exch_reset()
1557 CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; in fnic_rport_exch_reset()
1558 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { in fnic_rport_exch_reset()
1563 sc); in fnic_rport_exch_reset()
1574 int_to_scsilun(sc->device->lun, &fc_lun); in fnic_rport_exch_reset()
1586 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) in fnic_rport_exch_reset()
1587 CMD_STATE(sc) = old_ioreq_state; in fnic_rport_exch_reset()
1591 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) in fnic_rport_exch_reset()
1592 CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; in fnic_rport_exch_reset()
1594 CMD_FLAGS(sc) |= FNIC_IO_INTERNAL_TERM_ISSUED; in fnic_rport_exch_reset()
1613 struct scsi_cmnd *sc; in fnic_terminate_rport_io() local
1656 sc = scsi_host_find_tag(fnic->lport->host, tag); in fnic_terminate_rport_io()
1657 if (!sc) { in fnic_terminate_rport_io()
1662 cmd_rport = starget_to_rport(scsi_target(sc->device)); in fnic_terminate_rport_io()
1668 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_terminate_rport_io()
1675 if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && in fnic_terminate_rport_io()
1676 (!(CMD_FLAGS(sc) & FNIC_DEV_RST_ISSUED))) { in fnic_terminate_rport_io()
1679 sc); in fnic_terminate_rport_io()
1687 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { in fnic_terminate_rport_io()
1695 fnic_ioreq_state_to_str(CMD_STATE(sc))); in fnic_terminate_rport_io()
1697 if (!(CMD_FLAGS(sc) & FNIC_IO_ISSUED)) { in fnic_terminate_rport_io()
1702 sc, tag, CMD_FLAGS(sc), CMD_STATE(sc)); in fnic_terminate_rport_io()
1704 old_ioreq_state = CMD_STATE(sc); in fnic_terminate_rport_io()
1705 CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; in fnic_terminate_rport_io()
1706 CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; in fnic_terminate_rport_io()
1707 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { in fnic_terminate_rport_io()
1711 "fnic_terminate_rport_io dev rst sc 0x%p\n", sc); in fnic_terminate_rport_io()
1723 int_to_scsilun(sc->device->lun, &fc_lun); in fnic_terminate_rport_io()
1735 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) in fnic_terminate_rport_io()
1736 CMD_STATE(sc) = old_ioreq_state; in fnic_terminate_rport_io()
1740 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) in fnic_terminate_rport_io()
1741 CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; in fnic_terminate_rport_io()
1743 CMD_FLAGS(sc) |= FNIC_IO_INTERNAL_TERM_ISSUED; in fnic_terminate_rport_io()
1759 int fnic_abort_cmd(struct scsi_cmnd *sc) in fnic_abort_cmd() argument
1779 fc_block_scsi_eh(sc); in fnic_abort_cmd()
1782 lp = shost_priv(sc->device->host); in fnic_abort_cmd()
1789 rport = starget_to_rport(scsi_target(sc->device)); in fnic_abort_cmd()
1790 tag = sc->request->tag; in fnic_abort_cmd()
1794 rport->port_id, sc->device->lun, tag, CMD_FLAGS(sc)); in fnic_abort_cmd()
1796 CMD_FLAGS(sc) = FNIC_NO_FLAGS; in fnic_abort_cmd()
1815 io_lock = fnic_io_lock_hash(fnic, sc); in fnic_abort_cmd()
1817 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_abort_cmd()
1825 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { in fnic_abort_cmd()
1835 old_ioreq_state = CMD_STATE(sc); in fnic_abort_cmd()
1836 CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; in fnic_abort_cmd()
1837 CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; in fnic_abort_cmd()
1854 int_to_scsilun(sc->device->lun, &fc_lun); in fnic_abort_cmd()
1856 if (fnic_queue_abort_io_req(fnic, sc->request->tag, task_req, in fnic_abort_cmd()
1859 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) in fnic_abort_cmd()
1860 CMD_STATE(sc) = old_ioreq_state; in fnic_abort_cmd()
1861 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_abort_cmd()
1869 CMD_FLAGS(sc) |= FNIC_IO_ABTS_ISSUED; in fnic_abort_cmd()
1872 CMD_FLAGS(sc) |= FNIC_IO_TERM_ISSUED; in fnic_abort_cmd()
1890 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_abort_cmd()
1894 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_REQ_NULL; in fnic_abort_cmd()
1901 if (CMD_ABTS_STATUS(sc) == FCPIO_INVALID_CODE) { in fnic_abort_cmd()
1908 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_TIMED_OUT; in fnic_abort_cmd()
1915 if (!(CMD_FLAGS(sc) & (FNIC_IO_ABORTED | FNIC_IO_DONE))) { in fnic_abort_cmd()
1920 if (fnic_host_reset(sc) == FAILED) { in fnic_abort_cmd()
1928 CMD_STATE(sc) = FNIC_IOREQ_ABTS_COMPLETE; in fnic_abort_cmd()
1934 if (CMD_ABTS_STATUS(sc) != FCPIO_SUCCESS) in fnic_abort_cmd()
1937 CMD_SP(sc) = NULL; in fnic_abort_cmd()
1942 fnic_release_ioreq_buf(fnic, io_req, sc); in fnic_abort_cmd()
1946 FNIC_TRACE(fnic_abort_cmd, sc->device->host->host_no, in fnic_abort_cmd()
1947 sc->request->tag, sc, in fnic_abort_cmd()
1949 0, ((u64)sc->cmnd[0] << 32 | in fnic_abort_cmd()
1950 (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | in fnic_abort_cmd()
1951 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), in fnic_abort_cmd()
1952 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); in fnic_abort_cmd()
1962 struct scsi_cmnd *sc, in fnic_queue_dr_io_req() argument
1995 int_to_scsilun(sc->device->lun, &fc_lun); in fnic_queue_dr_io_req()
1997 fnic_queue_wq_copy_desc_itmf(wq, sc->request->tag | FNIC_TAG_DEV_RST, in fnic_queue_dr_io_req()
2029 struct scsi_cmnd *sc; in fnic_clean_pending_aborts() local
2038 sc = scsi_host_find_tag(fnic->lport->host, tag); in fnic_clean_pending_aborts()
2043 if (!sc || sc == lr_sc || sc->device != lun_dev) { in fnic_clean_pending_aborts()
2048 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_clean_pending_aborts()
2050 if (!io_req || sc->device != lun_dev) { in fnic_clean_pending_aborts()
2061 fnic_ioreq_state_to_str(CMD_STATE(sc))); in fnic_clean_pending_aborts()
2063 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) { in fnic_clean_pending_aborts()
2067 if ((CMD_FLAGS(sc) & FNIC_DEVICE_RESET) && in fnic_clean_pending_aborts()
2068 (!(CMD_FLAGS(sc) & FNIC_DEV_RST_ISSUED))) { in fnic_clean_pending_aborts()
2071 sc); in fnic_clean_pending_aborts()
2079 __func__, fnic_ioreq_state_to_str(CMD_STATE(sc))); in fnic_clean_pending_aborts()
2080 old_ioreq_state = CMD_STATE(sc); in fnic_clean_pending_aborts()
2088 CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; in fnic_clean_pending_aborts()
2093 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) { in fnic_clean_pending_aborts()
2096 "%s: dev rst sc 0x%p\n", __func__, sc); in fnic_clean_pending_aborts()
2099 CMD_ABTS_STATUS(sc) = FCPIO_INVALID_CODE; in fnic_clean_pending_aborts()
2104 int_to_scsilun(sc->device->lun, &fc_lun); in fnic_clean_pending_aborts()
2110 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_clean_pending_aborts()
2113 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) in fnic_clean_pending_aborts()
2114 CMD_STATE(sc) = old_ioreq_state; in fnic_clean_pending_aborts()
2120 if (CMD_FLAGS(sc) & FNIC_DEVICE_RESET) in fnic_clean_pending_aborts()
2121 CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; in fnic_clean_pending_aborts()
2124 CMD_FLAGS(sc) |= FNIC_IO_INTERNAL_TERM_ISSUED; in fnic_clean_pending_aborts()
2132 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_clean_pending_aborts()
2135 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_REQ_NULL; in fnic_clean_pending_aborts()
2142 if (CMD_ABTS_STATUS(sc) == FCPIO_INVALID_CODE) { in fnic_clean_pending_aborts()
2144 CMD_FLAGS(sc) |= FNIC_IO_ABT_TERM_DONE; in fnic_clean_pending_aborts()
2148 CMD_STATE(sc) = FNIC_IOREQ_ABTS_COMPLETE; in fnic_clean_pending_aborts()
2149 CMD_SP(sc) = NULL; in fnic_clean_pending_aborts()
2152 fnic_release_ioreq_buf(fnic, io_req, sc); in fnic_clean_pending_aborts()
2171 fnic_scsi_host_start_tag(struct fnic *fnic, struct scsi_cmnd *sc) in fnic_scsi_host_start_tag() argument
2190 bqt->tag_index[tag] = sc->request; in fnic_scsi_host_start_tag()
2191 sc->request->tag = tag; in fnic_scsi_host_start_tag()
2192 sc->tag = tag; in fnic_scsi_host_start_tag()
2193 if (!sc->request->special) in fnic_scsi_host_start_tag()
2194 sc->request->special = sc; in fnic_scsi_host_start_tag()
2207 fnic_scsi_host_end_tag(struct fnic *fnic, struct scsi_cmnd *sc) in fnic_scsi_host_end_tag() argument
2210 int tag = sc->request->tag; in fnic_scsi_host_end_tag()
2230 int fnic_device_reset(struct scsi_cmnd *sc) in fnic_device_reset() argument
2249 fc_block_scsi_eh(sc); in fnic_device_reset()
2252 lp = shost_priv(sc->device->host); in fnic_device_reset()
2260 rport = starget_to_rport(scsi_target(sc->device)); in fnic_device_reset()
2263 rport->port_id, sc->device->lun, sc); in fnic_device_reset()
2274 CMD_FLAGS(sc) = FNIC_DEVICE_RESET; in fnic_device_reset()
2277 tag = sc->request->tag; in fnic_device_reset()
2292 if (shost_use_blk_mq(sc->device->host)) in fnic_device_reset()
2295 tag = fnic_scsi_host_start_tag(fnic, sc); in fnic_device_reset()
2300 io_lock = fnic_io_lock_hash(fnic, sc); in fnic_device_reset()
2302 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_device_reset()
2316 CMD_SP(sc) = (char *)io_req; in fnic_device_reset()
2319 CMD_STATE(sc) = FNIC_IOREQ_CMD_PENDING; in fnic_device_reset()
2320 CMD_LR_STATUS(sc) = FCPIO_INVALID_CODE; in fnic_device_reset()
2329 if (fnic_queue_dr_io_req(fnic, sc, io_req)) { in fnic_device_reset()
2331 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_device_reset()
2337 CMD_FLAGS(sc) |= FNIC_DEV_RST_ISSUED; in fnic_device_reset()
2348 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_device_reset()
2352 "io_req is null tag 0x%x sc 0x%p\n", tag, sc); in fnic_device_reset()
2357 status = CMD_LR_STATUS(sc); in fnic_device_reset()
2367 CMD_FLAGS(sc) |= FNIC_DEV_RST_TIMED_OUT; in fnic_device_reset()
2369 int_to_scsilun(sc->device->lun, &fc_lun); in fnic_device_reset()
2376 if (CMD_FLAGS(sc) & FNIC_DEV_RST_TERM_ISSUED) { in fnic_device_reset()
2389 CMD_FLAGS(sc) |= FNIC_DEV_RST_TERM_ISSUED; in fnic_device_reset()
2390 CMD_STATE(sc) = FNIC_IOREQ_ABTS_PENDING; in fnic_device_reset()
2395 "tag 0x%x sc 0x%p\n", tag, sc); in fnic_device_reset()
2401 if (!(CMD_FLAGS(sc) & FNIC_DEV_RST_DONE)) { in fnic_device_reset()
2407 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_device_reset()
2422 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_device_reset()
2433 if (fnic_clean_pending_aborts(fnic, sc)) { in fnic_device_reset()
2435 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_device_reset()
2444 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_device_reset()
2451 CMD_SP(sc) = NULL; in fnic_device_reset()
2457 fnic_release_ioreq_buf(fnic, io_req, sc); in fnic_device_reset()
2462 FNIC_TRACE(fnic_device_reset, sc->device->host->host_no, in fnic_device_reset()
2463 sc->request->tag, sc, in fnic_device_reset()
2465 0, ((u64)sc->cmnd[0] << 32 | in fnic_device_reset()
2466 (u64)sc->cmnd[2] << 24 | (u64)sc->cmnd[3] << 16 | in fnic_device_reset()
2467 (u64)sc->cmnd[4] << 8 | sc->cmnd[5]), in fnic_device_reset()
2468 (((u64)CMD_FLAGS(sc) << 32) | CMD_STATE(sc))); in fnic_device_reset()
2472 fnic_scsi_host_end_tag(fnic, sc); in fnic_device_reset()
2530 int fnic_host_reset(struct scsi_cmnd *sc) in fnic_host_reset() argument
2534 struct Scsi_Host *shost = sc->device->host; in fnic_host_reset()
2688 struct scsi_cmnd *sc; in fnic_is_abts_pending() local
2696 sc = scsi_host_find_tag(fnic->lport->host, tag); in fnic_is_abts_pending()
2701 if (!sc || (lr_sc && (sc->device != lun_dev || sc == lr_sc))) in fnic_is_abts_pending()
2704 io_lock = fnic_io_lock_hash(fnic, sc); in fnic_is_abts_pending()
2707 io_req = (struct fnic_io_req *)CMD_SP(sc); in fnic_is_abts_pending()
2709 if (!io_req || sc->device != lun_dev) { in fnic_is_abts_pending()
2720 fnic_ioreq_state_to_str(CMD_STATE(sc))); in fnic_is_abts_pending()
2722 if (CMD_STATE(sc) == FNIC_IOREQ_ABTS_PENDING) in fnic_is_abts_pending()