Lines Matching full:cmd

476 int iscsit_queue_rsp(struct iscsit_conn *conn, struct iscsit_cmd *cmd)  in iscsit_queue_rsp()  argument
478 return iscsit_add_cmd_to_response_queue(cmd, cmd->conn, cmd->i_state); in iscsit_queue_rsp()
482 void iscsit_aborted_task(struct iscsit_conn *conn, struct iscsit_cmd *cmd) in iscsit_aborted_task() argument
485 if (!list_empty(&cmd->i_conn_node)) in iscsit_aborted_task()
486 list_del_init(&cmd->i_conn_node); in iscsit_aborted_task()
489 __iscsit_free_cmd(cmd, true); in iscsit_aborted_task()
498 iscsit_xmit_nondatain_pdu(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_xmit_nondatain_pdu() argument
501 struct iscsi_hdr *hdr = (struct iscsi_hdr *)cmd->pdu; in iscsit_xmit_nondatain_pdu()
506 iov = &cmd->iov_misc[0]; in iscsit_xmit_nondatain_pdu()
507 iov[niov].iov_base = cmd->pdu; in iscsit_xmit_nondatain_pdu()
511 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; in iscsit_xmit_nondatain_pdu()
530 iov[niov].iov_base = &cmd->pad_bytes; in iscsit_xmit_nondatain_pdu()
538 cmd->data_crc = iscsit_crc_buf(data_buf, data_buf_len, in iscsit_xmit_nondatain_pdu()
540 &cmd->pad_bytes); in iscsit_xmit_nondatain_pdu()
541 iov[niov].iov_base = &cmd->data_crc; in iscsit_xmit_nondatain_pdu()
546 data_buf_len, hdr->opcode, cmd->data_crc); in iscsit_xmit_nondatain_pdu()
550 cmd->iov_misc_count = niov; in iscsit_xmit_nondatain_pdu()
551 cmd->tx_size = tx_size; in iscsit_xmit_nondatain_pdu()
553 ret = iscsit_send_tx_data(cmd, conn, 1); in iscsit_xmit_nondatain_pdu()
562 static int iscsit_map_iovec(struct iscsit_cmd *cmd, struct kvec *iov, int nvec,
565 static u32 iscsit_crc_sglist(const struct iscsit_cmd *cmd, u32 data_length,
568 iscsit_xmit_datain_pdu(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_xmit_datain_pdu() argument
575 iov = &cmd->iov_data[0]; in iscsit_xmit_datain_pdu()
576 iov[iov_count].iov_base = cmd->pdu; in iscsit_xmit_datain_pdu()
581 u32 *header_digest = (u32 *)&cmd->pdu[ISCSI_HDR_LEN]; in iscsit_xmit_datain_pdu()
583 *header_digest = iscsit_crc_buf(cmd->pdu, ISCSI_HDR_LEN, 0, in iscsit_xmit_datain_pdu()
592 iov_ret = iscsit_map_iovec(cmd, &cmd->iov_data[iov_count], in iscsit_xmit_datain_pdu()
593 cmd->orig_iov_data_count - (iov_count + 2), in iscsit_xmit_datain_pdu()
601 cmd->padding = ((-datain->length) & 3); in iscsit_xmit_datain_pdu()
602 if (cmd->padding) { in iscsit_xmit_datain_pdu()
603 iov[iov_count].iov_base = cmd->pad_bytes; in iscsit_xmit_datain_pdu()
604 iov[iov_count++].iov_len = cmd->padding; in iscsit_xmit_datain_pdu()
605 tx_size += cmd->padding; in iscsit_xmit_datain_pdu()
607 pr_debug("Attaching %u padding bytes\n", cmd->padding); in iscsit_xmit_datain_pdu()
611 cmd->data_crc = iscsit_crc_sglist(cmd, datain->length, in iscsit_xmit_datain_pdu()
612 cmd->padding, cmd->pad_bytes); in iscsit_xmit_datain_pdu()
613 iov[iov_count].iov_base = &cmd->data_crc; in iscsit_xmit_datain_pdu()
618 datain->length + cmd->padding, cmd->data_crc); in iscsit_xmit_datain_pdu()
621 cmd->iov_data_count = iov_count; in iscsit_xmit_datain_pdu()
622 cmd->tx_size = tx_size; in iscsit_xmit_datain_pdu()
624 ret = iscsit_fe_sendpage_sg(cmd, conn); in iscsit_xmit_datain_pdu()
626 iscsit_unmap_iovec(cmd); in iscsit_xmit_datain_pdu()
636 static int iscsit_xmit_pdu(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_xmit_pdu() argument
641 return iscsit_xmit_datain_pdu(conn, cmd, buf); in iscsit_xmit_pdu()
643 return iscsit_xmit_nondatain_pdu(conn, cmd, buf, buf_len); in iscsit_xmit_pdu()
792 struct iscsit_cmd *cmd; in iscsit_add_reject() local
794 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); in iscsit_add_reject()
795 if (!cmd) in iscsit_add_reject()
798 cmd->iscsi_opcode = ISCSI_OP_REJECT; in iscsit_add_reject()
799 cmd->reject_reason = reason; in iscsit_add_reject()
801 cmd->buf_ptr = kmemdup(buf, ISCSI_HDR_LEN, GFP_KERNEL); in iscsit_add_reject()
802 if (!cmd->buf_ptr) { in iscsit_add_reject()
803 pr_err("Unable to allocate memory for cmd->buf_ptr\n"); in iscsit_add_reject()
804 iscsit_free_cmd(cmd, false); in iscsit_add_reject()
809 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); in iscsit_add_reject()
812 cmd->i_state = ISTATE_SEND_REJECT; in iscsit_add_reject()
813 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); in iscsit_add_reject()
820 struct iscsit_cmd *cmd, in iscsit_add_reject_from_cmd() argument
826 const bool do_put = cmd->se_cmd.se_tfo != NULL; in iscsit_add_reject_from_cmd()
828 if (!cmd->conn) { in iscsit_add_reject_from_cmd()
829 pr_err("cmd->conn is NULL for ITT: 0x%08x\n", in iscsit_add_reject_from_cmd()
830 cmd->init_task_tag); in iscsit_add_reject_from_cmd()
833 conn = cmd->conn; in iscsit_add_reject_from_cmd()
835 cmd->iscsi_opcode = ISCSI_OP_REJECT; in iscsit_add_reject_from_cmd()
836 cmd->reject_reason = reason; in iscsit_add_reject_from_cmd()
838 cmd->buf_ptr = kmemdup(buf, ISCSI_HDR_LEN, GFP_KERNEL); in iscsit_add_reject_from_cmd()
839 if (!cmd->buf_ptr) { in iscsit_add_reject_from_cmd()
840 pr_err("Unable to allocate memory for cmd->buf_ptr\n"); in iscsit_add_reject_from_cmd()
841 iscsit_free_cmd(cmd, false); in iscsit_add_reject_from_cmd()
847 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); in iscsit_add_reject_from_cmd()
851 cmd->i_state = ISTATE_SEND_REJECT; in iscsit_add_reject_from_cmd()
852 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); in iscsit_add_reject_from_cmd()
859 target_put_sess_cmd(&cmd->se_cmd); in iscsit_add_reject_from_cmd()
864 static int iscsit_add_reject_cmd(struct iscsit_cmd *cmd, u8 reason, in iscsit_add_reject_cmd() argument
867 return iscsit_add_reject_from_cmd(cmd, reason, true, buf); in iscsit_add_reject_cmd()
870 int iscsit_reject_cmd(struct iscsit_cmd *cmd, u8 reason, unsigned char *buf) in iscsit_reject_cmd() argument
872 return iscsit_add_reject_from_cmd(cmd, reason, false, buf); in iscsit_reject_cmd()
880 static int iscsit_map_iovec(struct iscsit_cmd *cmd, struct kvec *iov, int nvec, in iscsit_map_iovec() argument
895 if (ent >= cmd->se_cmd.t_data_nents) { in iscsit_map_iovec()
900 sg = &cmd->se_cmd.t_data_sg[ent]; in iscsit_map_iovec()
903 cmd->first_data_sg = sg; in iscsit_map_iovec()
904 cmd->first_data_sg_off = page_off; in iscsit_map_iovec()
923 cmd->kmapped_nents = i; in iscsit_map_iovec()
930 for_each_sg(cmd->se_cmd.t_data_sg, sg, in iscsit_map_iovec()
931 cmd->se_cmd.t_data_nents, i) { in iscsit_map_iovec()
938 static void iscsit_unmap_iovec(struct iscsit_cmd *cmd) in iscsit_unmap_iovec() argument
943 sg = cmd->first_data_sg; in iscsit_unmap_iovec()
945 for (i = 0; i < cmd->kmapped_nents; i++) in iscsit_unmap_iovec()
952 struct iscsit_cmd *cmd, *cmd_p; in iscsit_ack_from_expstatsn() local
960 list_for_each_entry_safe(cmd, cmd_p, &conn->conn_cmd_list, i_conn_node) { in iscsit_ack_from_expstatsn()
961 spin_lock(&cmd->istate_lock); in iscsit_ack_from_expstatsn()
962 if ((cmd->i_state == ISTATE_SENT_STATUS) && in iscsit_ack_from_expstatsn()
963 iscsi_sna_lt(cmd->stat_sn, exp_statsn)) { in iscsit_ack_from_expstatsn()
964 cmd->i_state = ISTATE_REMOVE; in iscsit_ack_from_expstatsn()
965 spin_unlock(&cmd->istate_lock); in iscsit_ack_from_expstatsn()
966 list_move_tail(&cmd->i_conn_node, &ack_list); in iscsit_ack_from_expstatsn()
969 spin_unlock(&cmd->istate_lock); in iscsit_ack_from_expstatsn()
973 list_for_each_entry_safe(cmd, cmd_p, &ack_list, i_conn_node) { in iscsit_ack_from_expstatsn()
974 list_del_init(&cmd->i_conn_node); in iscsit_ack_from_expstatsn()
975 iscsit_free_cmd(cmd, false); in iscsit_ack_from_expstatsn()
979 static int iscsit_allocate_iovecs(struct iscsit_cmd *cmd) in iscsit_allocate_iovecs() argument
981 u32 iov_count = max(1UL, DIV_ROUND_UP(cmd->se_cmd.data_length, PAGE_SIZE)); in iscsit_allocate_iovecs()
984 cmd->iov_data = kcalloc(iov_count, sizeof(*cmd->iov_data), GFP_KERNEL); in iscsit_allocate_iovecs()
985 if (!cmd->iov_data) in iscsit_allocate_iovecs()
988 cmd->orig_iov_data_count = iov_count; in iscsit_allocate_iovecs()
992 int iscsit_setup_scsi_cmd(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_setup_scsi_cmd() argument
1013 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1042 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1049 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1056 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1063 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1072 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1080 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1088 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1096 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1107 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1114 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1125 cmd->data_direction = data_direction; in iscsit_setup_scsi_cmd()
1145 cmd->iscsi_opcode = ISCSI_OP_SCSI_CMD; in iscsit_setup_scsi_cmd()
1146 cmd->i_state = ISTATE_NEW_CMD; in iscsit_setup_scsi_cmd()
1147 cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); in iscsit_setup_scsi_cmd()
1148 cmd->immediate_data = (payload_length) ? 1 : 0; in iscsit_setup_scsi_cmd()
1149 cmd->unsolicited_data = ((!(hdr->flags & ISCSI_FLAG_CMD_FINAL) && in iscsit_setup_scsi_cmd()
1151 if (cmd->unsolicited_data) in iscsit_setup_scsi_cmd()
1152 cmd->cmd_flags |= ICF_NON_IMMEDIATE_UNSOLICITED_DATA; in iscsit_setup_scsi_cmd()
1154 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; in iscsit_setup_scsi_cmd()
1156 cmd->targ_xfer_tag = session_get_next_ttt(conn->sess); in iscsit_setup_scsi_cmd()
1158 cmd->targ_xfer_tag = 0xFFFFFFFF; in iscsit_setup_scsi_cmd()
1159 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); in iscsit_setup_scsi_cmd()
1160 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); in iscsit_setup_scsi_cmd()
1161 cmd->first_burst_len = payload_length; in iscsit_setup_scsi_cmd()
1164 cmd->data_direction == DMA_FROM_DEVICE) { in iscsit_setup_scsi_cmd()
1171 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1175 iscsit_attach_datain_req(cmd, dr); in iscsit_setup_scsi_cmd()
1181 __target_init_cmd(&cmd->se_cmd, &iscsi_ops, in iscsit_setup_scsi_cmd()
1183 cmd->data_direction, sam_task_attr, in iscsit_setup_scsi_cmd()
1184 cmd->sense_buffer + 2, scsilun_to_int(&hdr->lun), in iscsit_setup_scsi_cmd()
1192 target_get_sess_cmd(&cmd->se_cmd, true); in iscsit_setup_scsi_cmd()
1194 cmd->se_cmd.tag = (__force u32)cmd->init_task_tag; in iscsit_setup_scsi_cmd()
1195 cmd->sense_reason = target_cmd_init_cdb(&cmd->se_cmd, cdb, in iscsit_setup_scsi_cmd()
1201 if (cmd->sense_reason) { in iscsit_setup_scsi_cmd()
1202 if (cmd->sense_reason == TCM_OUT_OF_RESOURCES) { in iscsit_setup_scsi_cmd()
1203 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1210 cmd->sense_reason = transport_lookup_cmd_lun(&cmd->se_cmd); in iscsit_setup_scsi_cmd()
1211 if (cmd->sense_reason) in iscsit_setup_scsi_cmd()
1214 cmd->sense_reason = target_cmd_parse_cdb(&cmd->se_cmd); in iscsit_setup_scsi_cmd()
1215 if (cmd->sense_reason) in iscsit_setup_scsi_cmd()
1218 if (iscsit_build_pdu_and_seq_lists(cmd, payload_length) < 0) { in iscsit_setup_scsi_cmd()
1219 return iscsit_add_reject_cmd(cmd, in iscsit_setup_scsi_cmd()
1225 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); in iscsit_setup_scsi_cmd()
1231 void iscsit_set_unsolicited_dataout(struct iscsit_cmd *cmd) in iscsit_set_unsolicited_dataout() argument
1233 iscsit_set_dataout_sequence_values(cmd); in iscsit_set_unsolicited_dataout()
1235 spin_lock_bh(&cmd->dataout_timeout_lock); in iscsit_set_unsolicited_dataout()
1236 iscsit_start_dataout_timer(cmd, cmd->conn); in iscsit_set_unsolicited_dataout()
1237 spin_unlock_bh(&cmd->dataout_timeout_lock); in iscsit_set_unsolicited_dataout()
1241 int iscsit_process_scsi_cmd(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_process_scsi_cmd() argument
1255 if (!cmd->immediate_data) { in iscsit_process_scsi_cmd()
1256 cmdsn_ret = iscsit_sequence_cmd(conn, cmd, in iscsit_process_scsi_cmd()
1261 target_put_sess_cmd(&cmd->se_cmd); in iscsit_process_scsi_cmd()
1271 if (!cmd->immediate_data) { in iscsit_process_scsi_cmd()
1272 if (!cmd->sense_reason && cmd->unsolicited_data) in iscsit_process_scsi_cmd()
1273 iscsit_set_unsolicited_dataout(cmd); in iscsit_process_scsi_cmd()
1274 if (!cmd->sense_reason) in iscsit_process_scsi_cmd()
1277 target_put_sess_cmd(&cmd->se_cmd); in iscsit_process_scsi_cmd()
1286 if (cmd->sense_reason) in iscsit_process_scsi_cmd()
1292 cmd->sense_reason = transport_generic_new_cmd(&cmd->se_cmd); in iscsit_process_scsi_cmd()
1293 if (cmd->sense_reason) in iscsit_process_scsi_cmd()
1301 iscsit_get_immediate_data(struct iscsit_cmd *cmd, struct iscsi_scsi_req *hdr, in iscsit_get_immediate_data() argument
1311 u32 length = min(cmd->se_cmd.data_length - cmd->write_data_done, in iscsit_get_immediate_data()
1312 cmd->first_burst_len); in iscsit_get_immediate_data()
1315 cmd->se_cmd.data_length, cmd->write_data_done, in iscsit_get_immediate_data()
1316 cmd->first_burst_len, length); in iscsit_get_immediate_data()
1317 rc = iscsit_dump_data_payload(cmd->conn, length, 1); in iscsit_get_immediate_data()
1322 immed_ret = iscsit_handle_immediate_data(cmd, hdr, in iscsit_get_immediate_data()
1323 cmd->first_burst_len); in iscsit_get_immediate_data()
1332 cmdsn_ret = iscsit_sequence_cmd(cmd->conn, cmd, in iscsit_get_immediate_data()
1337 if (cmd->sense_reason || cmdsn_ret == CMDSN_LOWER_THAN_EXP) { in iscsit_get_immediate_data()
1338 target_put_sess_cmd(&cmd->se_cmd); in iscsit_get_immediate_data()
1341 } else if (cmd->unsolicited_data) in iscsit_get_immediate_data()
1342 iscsit_set_unsolicited_dataout(cmd); in iscsit_get_immediate_data()
1356 cmd->i_state = ISTATE_REMOVE; in iscsit_get_immediate_data()
1357 iscsit_add_cmd_to_immediate_queue(cmd, cmd->conn, cmd->i_state); in iscsit_get_immediate_data()
1365 iscsit_handle_scsi_cmd(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_handle_scsi_cmd() argument
1372 rc = iscsit_setup_scsi_cmd(conn, cmd, buf); in iscsit_handle_scsi_cmd()
1379 if (iscsit_allocate_iovecs(cmd) < 0) { in iscsit_handle_scsi_cmd()
1380 return iscsit_reject_cmd(cmd, in iscsit_handle_scsi_cmd()
1383 immed_data = cmd->immediate_data; in iscsit_handle_scsi_cmd()
1385 rc = iscsit_process_scsi_cmd(conn, cmd, hdr); in iscsit_handle_scsi_cmd()
1394 return iscsit_get_immediate_data(cmd, hdr, dump_payload); in iscsit_handle_scsi_cmd()
1397 static u32 iscsit_crc_sglist(const struct iscsit_cmd *cmd, u32 data_length, in iscsit_crc_sglist() argument
1400 struct scatterlist *sg = cmd->first_data_sg; in iscsit_crc_sglist()
1401 unsigned int page_off = cmd->first_data_sg_off; in iscsit_crc_sglist()
1440 struct iscsit_cmd *cmd, u32 payload_length, in __iscsit_check_dataout_hdr() argument
1455 if (cmd->cmd_flags & ICF_GOT_LAST_DATAOUT) { in __iscsit_check_dataout_hdr()
1458 cmd->init_task_tag); in __iscsit_check_dataout_hdr()
1462 if (cmd->data_direction != DMA_TO_DEVICE) { in __iscsit_check_dataout_hdr()
1464 " NON-WRITE command.\n", cmd->init_task_tag); in __iscsit_check_dataout_hdr()
1467 se_cmd = &cmd->se_cmd; in __iscsit_check_dataout_hdr()
1468 iscsit_mod_dataout_timer(cmd); in __iscsit_check_dataout_hdr()
1470 if ((be32_to_cpu(hdr->offset) + payload_length) > cmd->se_cmd.data_length) { in __iscsit_check_dataout_hdr()
1473 cmd->se_cmd.data_length); in __iscsit_check_dataout_hdr()
1474 return iscsit_reject_cmd(cmd, ISCSI_REASON_BOOKMARK_INVALID, buf); in __iscsit_check_dataout_hdr()
1477 if (cmd->unsolicited_data) { in __iscsit_check_dataout_hdr()
1483 transport_send_check_condition_and_sense(&cmd->se_cmd, in __iscsit_check_dataout_hdr()
1505 iscsit_stop_dataout_timer(cmd); in __iscsit_check_dataout_hdr()
1522 --cmd->outstanding_r2ts < 1) in __iscsit_check_dataout_hdr()
1523 iscsit_stop_dataout_timer(cmd); in __iscsit_check_dataout_hdr()
1532 rc = iscsit_check_pre_dataout(cmd, buf); in __iscsit_check_dataout_hdr()
1547 struct iscsit_cmd *cmd; in iscsit_check_dataout_hdr() local
1564 cmd = iscsit_find_cmd_from_itt_or_dump(conn, hdr->itt, payload_length); in iscsit_check_dataout_hdr()
1565 if (!cmd) in iscsit_check_dataout_hdr()
1568 rc = __iscsit_check_dataout_hdr(conn, buf, cmd, payload_length, &success); in iscsit_check_dataout_hdr()
1571 *out_cmd = cmd; in iscsit_check_dataout_hdr()
1578 iscsit_get_dataout(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_get_dataout() argument
1586 payload_length = min_t(u32, cmd->se_cmd.data_length, in iscsit_get_dataout()
1589 iov = &cmd->iov_data[0]; in iscsit_get_dataout()
1591 iov_ret = iscsit_map_iovec(cmd, iov, cmd->orig_iov_data_count - 2, in iscsit_get_dataout()
1600 iov[iov_count].iov_base = cmd->pad_bytes; in iscsit_get_dataout()
1612 WARN_ON_ONCE(iov_count > cmd->orig_iov_data_count); in iscsit_get_dataout()
1613 rx_got = rx_data(conn, &cmd->iov_data[0], iov_count, rx_size); in iscsit_get_dataout()
1615 iscsit_unmap_iovec(cmd); in iscsit_get_dataout()
1623 data_crc = iscsit_crc_sglist(cmd, payload_length, padding, in iscsit_get_dataout()
1624 cmd->pad_bytes); in iscsit_get_dataout()
1643 iscsit_check_dataout_payload(struct iscsit_cmd *cmd, struct iscsi_data *hdr, in iscsit_check_dataout_payload() argument
1646 struct iscsit_conn *conn = cmd->conn; in iscsit_check_dataout_payload()
1652 rc = iscsit_check_post_dataout(cmd, (unsigned char *)hdr, data_crc_failed); in iscsit_check_dataout_payload()
1656 iscsit_set_dataout_sequence_values(cmd); in iscsit_check_dataout_payload()
1657 conn->conn_transport->iscsit_get_dataout(conn, cmd, false); in iscsit_check_dataout_payload()
1663 spin_lock_bh(&cmd->istate_lock); in iscsit_check_dataout_payload()
1664 ooo_cmdsn = (cmd->cmd_flags & ICF_OOO_CMDSN); in iscsit_check_dataout_payload()
1665 cmd->cmd_flags |= ICF_GOT_LAST_DATAOUT; in iscsit_check_dataout_payload()
1666 cmd->i_state = ISTATE_RECEIVED_LAST_DATAOUT; in iscsit_check_dataout_payload()
1667 spin_unlock_bh(&cmd->istate_lock); in iscsit_check_dataout_payload()
1669 iscsit_stop_dataout_timer(cmd); in iscsit_check_dataout_payload()
1672 target_execute_cmd(&cmd->se_cmd); in iscsit_check_dataout_payload()
1683 struct iscsit_cmd *cmd = NULL; in iscsit_handle_data_out() local
1688 rc = iscsit_check_dataout_hdr(conn, buf, &cmd); in iscsit_handle_data_out()
1691 else if (!cmd) in iscsit_handle_data_out()
1694 rc = iscsit_get_dataout(conn, cmd, hdr); in iscsit_handle_data_out()
1700 return iscsit_check_dataout_payload(cmd, hdr, data_crc_failed); in iscsit_handle_data_out()
1703 int iscsit_setup_nop_out(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_setup_nop_out() argument
1710 if (!cmd) in iscsit_setup_nop_out()
1714 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, in iscsit_setup_nop_out()
1721 if (!cmd) in iscsit_setup_nop_out()
1725 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, in iscsit_setup_nop_out()
1734 if (!cmd) in iscsit_setup_nop_out()
1738 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, in iscsit_setup_nop_out()
1755 cmd->iscsi_opcode = ISCSI_OP_NOOP_OUT; in iscsit_setup_nop_out()
1756 cmd->i_state = ISTATE_SEND_NOPIN; in iscsit_setup_nop_out()
1757 cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? in iscsit_setup_nop_out()
1759 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; in iscsit_setup_nop_out()
1760 cmd->targ_xfer_tag = 0xFFFFFFFF; in iscsit_setup_nop_out()
1761 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); in iscsit_setup_nop_out()
1762 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); in iscsit_setup_nop_out()
1763 cmd->data_direction = DMA_NONE; in iscsit_setup_nop_out()
1770 int iscsit_process_nop_out(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_process_nop_out() argument
1779 if (!cmd) in iscsit_process_nop_out()
1784 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); in iscsit_process_nop_out()
1790 iscsit_add_cmd_to_response_queue(cmd, conn, in iscsit_process_nop_out()
1791 cmd->i_state); in iscsit_process_nop_out()
1795 cmdsn_ret = iscsit_sequence_cmd(conn, cmd, in iscsit_process_nop_out()
1825 if (cmd) in iscsit_process_nop_out()
1826 iscsit_free_cmd(cmd, false); in iscsit_process_nop_out()
1832 static int iscsit_handle_nop_out(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_handle_nop_out() argument
1841 ret = iscsit_setup_nop_out(conn, cmd, hdr); in iscsit_handle_nop_out()
1857 iov = &cmd->iov_misc[0]; in iscsit_handle_nop_out()
1865 iov[niov].iov_base = &cmd->pad_bytes; in iscsit_handle_nop_out()
1875 WARN_ON_ONCE(niov > ARRAY_SIZE(cmd->iov_misc)); in iscsit_handle_nop_out()
1876 rx_got = rx_data(conn, &cmd->iov_misc[0], niov, rx_size); in iscsit_handle_nop_out()
1884 padding, cmd->pad_bytes); in iscsit_handle_nop_out()
1917 cmd->buf_ptr = ping_data; in iscsit_handle_nop_out()
1918 cmd->buf_ptr_size = payload_length; in iscsit_handle_nop_out()
1925 return iscsit_process_nop_out(conn, cmd, hdr); in iscsit_handle_nop_out()
1927 if (cmd) in iscsit_handle_nop_out()
1928 iscsit_free_cmd(cmd, false); in iscsit_handle_nop_out()
1957 iscsit_handle_task_mgt_cmd(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_handle_task_mgt_cmd() argument
1987 return iscsit_add_reject_cmd(cmd, in iscsit_handle_task_mgt_cmd()
1994 cmd->data_direction = DMA_NONE; in iscsit_handle_task_mgt_cmd()
1995 cmd->tmr_req = kzalloc(sizeof(*cmd->tmr_req), GFP_KERNEL); in iscsit_handle_task_mgt_cmd()
1996 if (!cmd->tmr_req) { in iscsit_handle_task_mgt_cmd()
1997 return iscsit_add_reject_cmd(cmd, in iscsit_handle_task_mgt_cmd()
2002 __target_init_cmd(&cmd->se_cmd, &iscsi_ops, in iscsit_handle_task_mgt_cmd()
2004 TCM_SIMPLE_TAG, cmd->sense_buffer + 2, in iscsit_handle_task_mgt_cmd()
2008 target_get_sess_cmd(&cmd->se_cmd, true); in iscsit_handle_task_mgt_cmd()
2019 return iscsit_add_reject_cmd(cmd, in iscsit_handle_task_mgt_cmd()
2023 ret = core_tmr_alloc_req(&cmd->se_cmd, cmd->tmr_req, tcm_function, in iscsit_handle_task_mgt_cmd()
2026 return iscsit_add_reject_cmd(cmd, in iscsit_handle_task_mgt_cmd()
2029 cmd->tmr_req->se_tmr_req = cmd->se_cmd.se_tmr_req; in iscsit_handle_task_mgt_cmd()
2031 cmd->iscsi_opcode = ISCSI_OP_SCSI_TMFUNC; in iscsit_handle_task_mgt_cmd()
2032 cmd->i_state = ISTATE_SEND_TASKMGTRSP; in iscsit_handle_task_mgt_cmd()
2033 cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); in iscsit_handle_task_mgt_cmd()
2034 cmd->init_task_tag = hdr->itt; in iscsit_handle_task_mgt_cmd()
2035 cmd->targ_xfer_tag = 0xFFFFFFFF; in iscsit_handle_task_mgt_cmd()
2036 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); in iscsit_handle_task_mgt_cmd()
2037 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); in iscsit_handle_task_mgt_cmd()
2038 se_tmr = cmd->se_cmd.se_tmr_req; in iscsit_handle_task_mgt_cmd()
2039 tmr_req = cmd->tmr_req; in iscsit_handle_task_mgt_cmd()
2044 ret = transport_lookup_tmr_lun(&cmd->se_cmd); in iscsit_handle_task_mgt_cmd()
2053 se_tmr->response = iscsit_tmr_abort_task(cmd, buf); in iscsit_handle_task_mgt_cmd()
2075 se_tmr->response = iscsit_tmr_task_reassign(cmd, buf); in iscsit_handle_task_mgt_cmd()
2084 return iscsit_add_reject_cmd(cmd, in iscsit_handle_task_mgt_cmd()
2099 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); in iscsit_handle_task_mgt_cmd()
2103 int cmdsn_ret = iscsit_sequence_cmd(conn, cmd, buf, hdr->cmdsn); in iscsit_handle_task_mgt_cmd()
2107 target_put_sess_cmd(&cmd->se_cmd); in iscsit_handle_task_mgt_cmd()
2121 return transport_generic_handle_tmr(&cmd->se_cmd); in iscsit_handle_task_mgt_cmd()
2131 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); in iscsit_handle_task_mgt_cmd()
2132 target_put_sess_cmd(&cmd->se_cmd); in iscsit_handle_task_mgt_cmd()
2139 iscsit_setup_text_cmd(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_setup_text_cmd() argument
2148 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, in iscsit_setup_text_cmd()
2155 return iscsit_reject_cmd(cmd, ISCSI_REASON_CMD_NOT_SUPPORTED, in iscsit_setup_text_cmd()
2163 cmd->iscsi_opcode = ISCSI_OP_TEXT; in iscsit_setup_text_cmd()
2164 cmd->i_state = ISTATE_SEND_TEXTRSP; in iscsit_setup_text_cmd()
2165 cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); in iscsit_setup_text_cmd()
2166 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; in iscsit_setup_text_cmd()
2167 cmd->targ_xfer_tag = 0xFFFFFFFF; in iscsit_setup_text_cmd()
2168 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); in iscsit_setup_text_cmd()
2169 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); in iscsit_setup_text_cmd()
2170 cmd->data_direction = DMA_NONE; in iscsit_setup_text_cmd()
2171 kfree(cmd->text_in_ptr); in iscsit_setup_text_cmd()
2172 cmd->text_in_ptr = NULL; in iscsit_setup_text_cmd()
2179 iscsit_process_text_cmd(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_process_text_cmd() argument
2182 unsigned char *text_in = cmd->text_in_ptr, *text_ptr; in iscsit_process_text_cmd()
2186 cmd->targ_xfer_tag = be32_to_cpu(hdr->ttt); in iscsit_process_text_cmd()
2187 if (cmd->targ_xfer_tag == 0xFFFFFFFF) { in iscsit_process_text_cmd()
2203 cmd->cmd_flags |= ICF_SENDTARGETS_ALL; in iscsit_process_text_cmd()
2206 cmd->cmd_flags |= ICF_SENDTARGETS_SINGLE; in iscsit_process_text_cmd()
2214 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); in iscsit_process_text_cmd()
2221 cmdsn_ret = iscsit_sequence_cmd(conn, cmd, in iscsit_process_text_cmd()
2229 return iscsit_execute_cmd(cmd, 0); in iscsit_process_text_cmd()
2232 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, in iscsit_process_text_cmd()
2238 iscsit_handle_text_cmd(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_handle_text_cmd() argument
2246 rc = iscsit_setup_text_cmd(conn, cmd, hdr); in iscsit_handle_text_cmd()
2262 cmd->text_in_ptr = text_in; in iscsit_handle_text_cmd()
2316 return iscsit_process_text_cmd(conn, cmd, hdr); in iscsit_handle_text_cmd()
2319 kfree(cmd->text_in_ptr); in iscsit_handle_text_cmd()
2320 cmd->text_in_ptr = NULL; in iscsit_handle_text_cmd()
2321 return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, buf); in iscsit_handle_text_cmd()
2324 int iscsit_logout_closesession(struct iscsit_cmd *cmd, struct iscsit_conn *conn) in iscsit_logout_closesession() argument
2349 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); in iscsit_logout_closesession()
2354 int iscsit_logout_closeconnection(struct iscsit_cmd *cmd, struct iscsit_conn *conn) in iscsit_logout_closeconnection() argument
2360 " %hu on CID: %hu.\n", cmd->logout_cid, conn->cid); in iscsit_logout_closeconnection()
2366 if (conn->cid == cmd->logout_cid) { in iscsit_logout_closeconnection()
2386 cmd->logout_cid); in iscsit_logout_closeconnection()
2388 cmd->logout_response = ISCSI_LOGOUT_CID_NOT_FOUND; in iscsit_logout_closeconnection()
2389 iscsit_add_cmd_to_response_queue(cmd, conn, in iscsit_logout_closeconnection()
2390 cmd->i_state); in iscsit_logout_closeconnection()
2397 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); in iscsit_logout_closeconnection()
2402 int iscsit_logout_removeconnforrecovery(struct iscsit_cmd *cmd, struct iscsit_conn *conn) in iscsit_logout_removeconnforrecovery() argument
2407 " CID: %hu on CID: %hu.\n", cmd->logout_cid, conn->cid); in iscsit_logout_removeconnforrecovery()
2412 cmd->logout_response = ISCSI_LOGOUT_RECOVERY_UNSUPPORTED; in iscsit_logout_removeconnforrecovery()
2413 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); in iscsit_logout_removeconnforrecovery()
2417 if (conn->cid == cmd->logout_cid) { in iscsit_logout_removeconnforrecovery()
2420 cmd->logout_cid, conn->cid); in iscsit_logout_removeconnforrecovery()
2421 cmd->logout_response = ISCSI_LOGOUT_CLEANUP_FAILED; in iscsit_logout_removeconnforrecovery()
2422 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); in iscsit_logout_removeconnforrecovery()
2426 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state); in iscsit_logout_removeconnforrecovery()
2432 iscsit_handle_logout_cmd(struct iscsit_conn *conn, struct iscsit_cmd *cmd, in iscsit_handle_logout_cmd() argument
2460 iscsit_free_cmd(cmd, false); in iscsit_handle_logout_cmd()
2464 cmd->iscsi_opcode = ISCSI_OP_LOGOUT; in iscsit_handle_logout_cmd()
2465 cmd->i_state = ISTATE_SEND_LOGOUTRSP; in iscsit_handle_logout_cmd()
2466 cmd->immediate_cmd = ((hdr->opcode & ISCSI_OP_IMMEDIATE) ? 1 : 0); in iscsit_handle_logout_cmd()
2467 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; in iscsit_handle_logout_cmd()
2468 cmd->targ_xfer_tag = 0xFFFFFFFF; in iscsit_handle_logout_cmd()
2469 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); in iscsit_handle_logout_cmd()
2470 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); in iscsit_handle_logout_cmd()
2471 cmd->logout_cid = be16_to_cpu(hdr->cid); in iscsit_handle_logout_cmd()
2472 cmd->logout_reason = reason_code; in iscsit_handle_logout_cmd()
2473 cmd->data_direction = DMA_NONE; in iscsit_handle_logout_cmd()
2485 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); in iscsit_handle_logout_cmd()
2495 if (cmd->immediate_cmd) { in iscsit_handle_logout_cmd()
2496 int ret = iscsit_execute_cmd(cmd, 0); in iscsit_handle_logout_cmd()
2501 cmdsn_ret = iscsit_sequence_cmd(conn, cmd, buf, hdr->cmdsn); in iscsit_handle_logout_cmd()
2578 struct iscsit_cmd *cmd, in iscsit_handle_immediate_data() argument
2584 struct iscsit_conn *conn = cmd->conn; in iscsit_handle_immediate_data()
2588 BUG_ON(cmd->write_data_done > cmd->se_cmd.data_length); in iscsit_handle_immediate_data()
2589 rx_size = min(cmd->se_cmd.data_length - cmd->write_data_done, length); in iscsit_handle_immediate_data()
2590 iov_ret = iscsit_map_iovec(cmd, cmd->iov_data, in iscsit_handle_immediate_data()
2591 cmd->orig_iov_data_count - 2, in iscsit_handle_immediate_data()
2592 cmd->write_data_done, rx_size); in iscsit_handle_immediate_data()
2597 iov = &cmd->iov_data[0]; in iscsit_handle_immediate_data()
2605 iscsit_unmap_iovec(cmd); in iscsit_handle_immediate_data()
2608 cmd->overflow_buf = overflow_buf; in iscsit_handle_immediate_data()
2617 iov[iov_count].iov_base = cmd->pad_bytes; in iscsit_handle_immediate_data()
2628 WARN_ON_ONCE(iov_count > cmd->orig_iov_data_count); in iscsit_handle_immediate_data()
2629 rx_got = rx_data(conn, &cmd->iov_data[0], iov_count, rx_size); in iscsit_handle_immediate_data()
2631 iscsit_unmap_iovec(cmd); in iscsit_handle_immediate_data()
2641 data_crc = iscsit_crc_sglist(cmd, length, padding, in iscsit_handle_immediate_data()
2642 cmd->pad_bytes); in iscsit_handle_immediate_data()
2652 iscsit_reject_cmd(cmd, in iscsit_handle_immediate_data()
2657 iscsit_reject_cmd(cmd, in iscsit_handle_immediate_data()
2669 cmd->write_data_done += length; in iscsit_handle_immediate_data()
2671 if (cmd->write_data_done == cmd->se_cmd.data_length) { in iscsit_handle_immediate_data()
2672 spin_lock_bh(&cmd->istate_lock); in iscsit_handle_immediate_data()
2673 cmd->cmd_flags |= ICF_GOT_LAST_DATAOUT; in iscsit_handle_immediate_data()
2674 cmd->i_state = ISTATE_RECEIVED_LAST_DATAOUT; in iscsit_handle_immediate_data()
2675 spin_unlock_bh(&cmd->istate_lock); in iscsit_handle_immediate_data()
2685 struct iscsit_cmd *cmd; in iscsit_build_conn_drop_async_message() local
2706 cmd = iscsit_allocate_cmd(conn_p, TASK_RUNNING); in iscsit_build_conn_drop_async_message()
2707 if (!cmd) { in iscsit_build_conn_drop_async_message()
2712 cmd->logout_cid = conn->cid; in iscsit_build_conn_drop_async_message()
2713 cmd->iscsi_opcode = ISCSI_OP_ASYNC_EVENT; in iscsit_build_conn_drop_async_message()
2714 cmd->i_state = ISTATE_SEND_ASYNCMSG; in iscsit_build_conn_drop_async_message()
2717 list_add_tail(&cmd->i_conn_node, &conn_p->conn_cmd_list); in iscsit_build_conn_drop_async_message()
2720 iscsit_add_cmd_to_response_queue(cmd, conn_p, cmd->i_state); in iscsit_build_conn_drop_async_message()
2725 struct iscsit_cmd *cmd, in iscsit_send_conn_drop_async_message() argument
2730 cmd->iscsi_opcode = ISCSI_OP_ASYNC_EVENT; in iscsit_send_conn_drop_async_message()
2732 hdr = (struct iscsi_async *) cmd->pdu; in iscsit_send_conn_drop_async_message()
2735 cmd->init_task_tag = RESERVED_ITT; in iscsit_send_conn_drop_async_message()
2736 cmd->targ_xfer_tag = 0xFFFFFFFF; in iscsit_send_conn_drop_async_message()
2738 cmd->stat_sn = conn->stat_sn++; in iscsit_send_conn_drop_async_message()
2739 hdr->statsn = cpu_to_be32(cmd->stat_sn); in iscsit_send_conn_drop_async_message()
2743 hdr->param1 = cpu_to_be16(cmd->logout_cid); in iscsit_send_conn_drop_async_message()
2748 " 0x%08x, for CID: %hu on CID: %hu\n", cmd->stat_sn, in iscsit_send_conn_drop_async_message()
2749 cmd->logout_cid, conn->cid); in iscsit_send_conn_drop_async_message()
2751 return conn->conn_transport->iscsit_xmit_pdu(conn, cmd, NULL, NULL, 0); in iscsit_send_conn_drop_async_message()
2765 iscsit_build_datain_pdu(struct iscsit_cmd *cmd, struct iscsit_conn *conn, in iscsit_build_datain_pdu() argument
2772 if (cmd->se_cmd.se_cmd_flags & SCF_OVERFLOW_BIT) { in iscsit_build_datain_pdu()
2774 hdr->residual_count = cpu_to_be32(cmd->se_cmd.residual_count); in iscsit_build_datain_pdu()
2775 } else if (cmd->se_cmd.se_cmd_flags & SCF_UNDERFLOW_BIT) { in iscsit_build_datain_pdu()
2777 hdr->residual_count = cpu_to_be32(cmd->se_cmd.residual_count); in iscsit_build_datain_pdu()
2782 int_to_scsilun(cmd->se_cmd.orig_fe_lun, in iscsit_build_datain_pdu()
2787 hdr->itt = cmd->init_task_tag; in iscsit_build_datain_pdu()
2790 hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag); in iscsit_build_datain_pdu()
2794 hdr->statsn = cpu_to_be32(cmd->stat_sn); in iscsit_build_datain_pdu()
2805 cmd->init_task_tag, ntohl(hdr->statsn), ntohl(hdr->datasn), in iscsit_build_datain_pdu()
2810 static int iscsit_send_datain(struct iscsit_cmd *cmd, struct iscsit_conn *conn) in iscsit_send_datain() argument
2812 struct iscsi_data_rsp *hdr = (struct iscsi_data_rsp *)&cmd->pdu[0]; in iscsit_send_datain()
2819 dr = iscsit_get_datain_values(cmd, &datain); in iscsit_send_datain()
2822 cmd->init_task_tag); in iscsit_send_datain()
2828 if ((datain.offset + datain.length) > cmd->se_cmd.data_length) { in iscsit_send_datain()
2830 " datain.length: %u exceeds cmd->data_length: %u\n", in iscsit_send_datain()
2831 cmd->init_task_tag, datain.offset, datain.length, in iscsit_send_datain()
2832 cmd->se_cmd.data_length); in iscsit_send_datain()
2842 (cmd->se_cmd.se_cmd_flags & SCF_TRANSPORT_TASK_SENSE)) in iscsit_send_datain()
2847 iscsit_increment_maxcmdsn(cmd, conn->sess); in iscsit_send_datain()
2848 cmd->stat_sn = conn->stat_sn++; in iscsit_send_datain()
2855 iscsit_build_datain_pdu(cmd, conn, &datain, hdr, set_statsn); in iscsit_send_datain()
2857 ret = conn->conn_transport->iscsit_xmit_pdu(conn, cmd, dr, &datain, 0); in iscsit_send_datain()
2862 eodr = (cmd->se_cmd.se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) ? in iscsit_send_datain()
2864 iscsit_free_datain_req(cmd, dr); in iscsit_send_datain()
2871 iscsit_build_logout_rsp(struct iscsit_cmd *cmd, struct iscsit_conn *conn, in iscsit_build_logout_rsp() argument
2882 switch (cmd->logout_reason) { in iscsit_build_logout_rsp()
2886 cmd->logout_response = ISCSI_LOGOUT_SUCCESS; in iscsit_build_logout_rsp()
2889 if (cmd->logout_response == ISCSI_LOGOUT_CID_NOT_FOUND) in iscsit_build_logout_rsp()
2899 * on, the connection responding to cmd->logout_cid in iscsit_build_logout_rsp()
2904 " successful.\n", cmd->logout_cid, conn->cid); in iscsit_build_logout_rsp()
2905 cmd->logout_response = ISCSI_LOGOUT_SUCCESS; in iscsit_build_logout_rsp()
2908 if ((cmd->logout_response == ISCSI_LOGOUT_RECOVERY_UNSUPPORTED) || in iscsit_build_logout_rsp()
2909 (cmd->logout_response == ISCSI_LOGOUT_CLEANUP_FAILED)) in iscsit_build_logout_rsp()
2916 cmd->logout_cid); in iscsit_build_logout_rsp()
2923 conn->sess, cmd->logout_cid); in iscsit_build_logout_rsp()
2927 cmd->logout_cid); in iscsit_build_logout_rsp()
2928 cmd->logout_response = ISCSI_LOGOUT_CID_NOT_FOUND; in iscsit_build_logout_rsp()
2932 iscsit_discard_cr_cmds_by_expstatsn(cr, cmd->exp_stat_sn); in iscsit_build_logout_rsp()
2936 cmd->logout_cid, conn->cid); in iscsit_build_logout_rsp()
2937 cmd->logout_response = ISCSI_LOGOUT_SUCCESS; in iscsit_build_logout_rsp()
2940 pr_err("Unknown cmd->logout_reason: 0x%02x\n", in iscsit_build_logout_rsp()
2941 cmd->logout_reason); in iscsit_build_logout_rsp()
2947 hdr->response = cmd->logout_response; in iscsit_build_logout_rsp()
2948 hdr->itt = cmd->init_task_tag; in iscsit_build_logout_rsp()
2949 cmd->stat_sn = conn->stat_sn++; in iscsit_build_logout_rsp()
2950 hdr->statsn = cpu_to_be32(cmd->stat_sn); in iscsit_build_logout_rsp()
2952 iscsit_increment_maxcmdsn(cmd, conn->sess); in iscsit_build_logout_rsp()
2958 cmd->init_task_tag, cmd->stat_sn, hdr->response, in iscsit_build_logout_rsp()
2959 cmd->logout_cid, conn->cid); in iscsit_build_logout_rsp()
2966 iscsit_send_logout(struct iscsit_cmd *cmd, struct iscsit_conn *conn) in iscsit_send_logout() argument
2970 rc = iscsit_build_logout_rsp(cmd, conn, in iscsit_send_logout()
2971 (struct iscsi_logout_rsp *)&cmd->pdu[0]); in iscsit_send_logout()
2975 return conn->conn_transport->iscsit_xmit_pdu(conn, cmd, NULL, NULL, 0); in iscsit_send_logout()
2979 iscsit_build_nopin_rsp(struct iscsit_cmd *cmd, struct iscsit_conn *conn, in iscsit_build_nopin_rsp() argument
2984 hton24(hdr->dlength, cmd->buf_ptr_size); in iscsit_build_nopin_rsp()
2987 hdr->itt = cmd->init_task_tag; in iscsit_build_nopin_rsp()
2988 hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag); in iscsit_build_nopin_rsp()
2989 cmd->stat_sn = (nopout_response) ? conn->stat_sn++ : in iscsit_build_nopin_rsp()
2991 hdr->statsn = cpu_to_be32(cmd->stat_sn); in iscsit_build_nopin_rsp()
2994 iscsit_increment_maxcmdsn(cmd, conn->sess); in iscsit_build_nopin_rsp()
3001 "Solicited" : "Unsolicited", cmd->init_task_tag, in iscsit_build_nopin_rsp()
3002 cmd->targ_xfer_tag, cmd->stat_sn, cmd->buf_ptr_size); in iscsit_build_nopin_rsp()
3010 struct iscsit_cmd *cmd, in iscsit_send_unsolicited_nopin() argument
3014 struct iscsi_nopin *hdr = (struct iscsi_nopin *)&cmd->pdu[0]; in iscsit_send_unsolicited_nopin()
3017 iscsit_build_nopin_rsp(cmd, conn, hdr, false); in iscsit_send_unsolicited_nopin()
3020 " 0x%08x CID: %hu\n", hdr->ttt, cmd->stat_sn, conn->cid); in iscsit_send_unsolicited_nopin()
3022 ret = conn->conn_transport->iscsit_xmit_pdu(conn, cmd, NULL, NULL, 0); in iscsit_send_unsolicited_nopin()
3026 spin_lock_bh(&cmd->istate_lock); in iscsit_send_unsolicited_nopin()
3027 cmd->i_state = want_response ? in iscsit_send_unsolicited_nopin()
3029 spin_unlock_bh(&cmd->istate_lock); in iscsit_send_unsolicited_nopin()
3035 iscsit_send_nopin(struct iscsit_cmd *cmd, struct iscsit_conn *conn) in iscsit_send_nopin() argument
3037 struct iscsi_nopin *hdr = (struct iscsi_nopin *)&cmd->pdu[0]; in iscsit_send_nopin()
3039 iscsit_build_nopin_rsp(cmd, conn, hdr, true); in iscsit_send_nopin()
3045 pr_debug("Echoing back %u bytes of ping data.\n", cmd->buf_ptr_size); in iscsit_send_nopin()
3047 return conn->conn_transport->iscsit_xmit_pdu(conn, cmd, NULL, in iscsit_send_nopin()
3048 cmd->buf_ptr, in iscsit_send_nopin()
3049 cmd->buf_ptr_size); in iscsit_send_nopin()
3053 struct iscsit_cmd *cmd, in iscsit_send_r2t() argument
3060 r2t = iscsit_get_r2t_from_list(cmd); in iscsit_send_r2t()
3064 hdr = (struct iscsi_r2t_rsp *) cmd->pdu; in iscsit_send_r2t()
3068 int_to_scsilun(cmd->se_cmd.orig_fe_lun, in iscsit_send_r2t()
3070 hdr->itt = cmd->init_task_tag; in iscsit_send_r2t()
3072 conn->conn_transport->iscsit_get_r2t_ttt(conn, cmd, r2t); in iscsit_send_r2t()
3085 (!r2t->recovery_r2t) ? "" : "Recovery ", cmd->init_task_tag, in iscsit_send_r2t()
3089 spin_lock_bh(&cmd->r2t_lock); in iscsit_send_r2t()
3091 spin_unlock_bh(&cmd->r2t_lock); in iscsit_send_r2t()
3093 ret = conn->conn_transport->iscsit_xmit_pdu(conn, cmd, NULL, NULL, 0); in iscsit_send_r2t()
3098 spin_lock_bh(&cmd->dataout_timeout_lock); in iscsit_send_r2t()
3099 iscsit_start_dataout_timer(cmd, conn); in iscsit_send_r2t()
3100 spin_unlock_bh(&cmd->dataout_timeout_lock); in iscsit_send_r2t()
3111 struct iscsit_cmd *cmd, in iscsit_build_r2ts_for_cmd() argument
3117 spin_lock_bh(&cmd->r2t_lock); in iscsit_build_r2ts_for_cmd()
3118 if (cmd->cmd_flags & ICF_SENT_LAST_R2T) { in iscsit_build_r2ts_for_cmd()
3119 spin_unlock_bh(&cmd->r2t_lock); in iscsit_build_r2ts_for_cmd()
3125 cmd->r2t_offset = max(cmd->r2t_offset, cmd->write_data_done); in iscsit_build_r2ts_for_cmd()
3127 while (cmd->outstanding_r2ts < conn->sess->sess_ops->MaxOutstandingR2T) { in iscsit_build_r2ts_for_cmd()
3129 offset = cmd->r2t_offset; in iscsit_build_r2ts_for_cmd()
3134 cmd->next_burst_len; in iscsit_build_r2ts_for_cmd()
3136 if (new_data_end > cmd->se_cmd.data_length) in iscsit_build_r2ts_for_cmd()
3137 xfer_len = cmd->se_cmd.data_length - offset; in iscsit_build_r2ts_for_cmd()
3141 cmd->next_burst_len; in iscsit_build_r2ts_for_cmd()
3146 if (new_data_end > cmd->se_cmd.data_length) in iscsit_build_r2ts_for_cmd()
3147 xfer_len = cmd->se_cmd.data_length - offset; in iscsit_build_r2ts_for_cmd()
3153 cmd->cmd_flags |= ICF_SENT_LAST_R2T; in iscsit_build_r2ts_for_cmd()
3157 cmd->r2t_offset += xfer_len; in iscsit_build_r2ts_for_cmd()
3159 if (cmd->r2t_offset == cmd->se_cmd.data_length) in iscsit_build_r2ts_for_cmd()
3160 cmd->cmd_flags |= ICF_SENT_LAST_R2T; in iscsit_build_r2ts_for_cmd()
3164 seq = iscsit_get_seq_holder_for_r2t(cmd); in iscsit_build_r2ts_for_cmd()
3166 spin_unlock_bh(&cmd->r2t_lock); in iscsit_build_r2ts_for_cmd()
3173 if (cmd->seq_send_order == cmd->seq_count) in iscsit_build_r2ts_for_cmd()
3174 cmd->cmd_flags |= ICF_SENT_LAST_R2T; in iscsit_build_r2ts_for_cmd()
3176 cmd->outstanding_r2ts++; in iscsit_build_r2ts_for_cmd()
3179 if (iscsit_add_r2t_to_list(cmd, offset, xfer_len, 0, 0) < 0) { in iscsit_build_r2ts_for_cmd()
3180 spin_unlock_bh(&cmd->r2t_lock); in iscsit_build_r2ts_for_cmd()
3184 if (cmd->cmd_flags & ICF_SENT_LAST_R2T) in iscsit_build_r2ts_for_cmd()
3187 spin_unlock_bh(&cmd->r2t_lock); in iscsit_build_r2ts_for_cmd()
3193 void iscsit_build_rsp_pdu(struct iscsit_cmd *cmd, struct iscsit_conn *conn, in iscsit_build_rsp_pdu() argument
3197 cmd->stat_sn = conn->stat_sn++; in iscsit_build_rsp_pdu()
3204 if (cmd->se_cmd.se_cmd_flags & SCF_OVERFLOW_BIT) { in iscsit_build_rsp_pdu()
3206 hdr->residual_count = cpu_to_be32(cmd->se_cmd.residual_count); in iscsit_build_rsp_pdu()
3207 } else if (cmd->se_cmd.se_cmd_flags & SCF_UNDERFLOW_BIT) { in iscsit_build_rsp_pdu()
3209 hdr->residual_count = cpu_to_be32(cmd->se_cmd.residual_count); in iscsit_build_rsp_pdu()
3211 hdr->response = cmd->iscsi_response; in iscsit_build_rsp_pdu()
3212 hdr->cmd_status = cmd->se_cmd.scsi_status; in iscsit_build_rsp_pdu()
3213 hdr->itt = cmd->init_task_tag; in iscsit_build_rsp_pdu()
3214 hdr->statsn = cpu_to_be32(cmd->stat_sn); in iscsit_build_rsp_pdu()
3216 iscsit_increment_maxcmdsn(cmd, conn->sess); in iscsit_build_rsp_pdu()
3222 cmd->init_task_tag, cmd->stat_sn, cmd->se_cmd.scsi_status, in iscsit_build_rsp_pdu()
3223 cmd->se_cmd.scsi_status, conn->cid); in iscsit_build_rsp_pdu()
3227 static int iscsit_send_response(struct iscsit_cmd *cmd, struct iscsit_conn *conn) in iscsit_send_response() argument
3229 struct iscsi_scsi_rsp *hdr = (struct iscsi_scsi_rsp *)&cmd->pdu[0]; in iscsit_send_response()
3230 bool inc_stat_sn = (cmd->i_state == ISTATE_SEND_STATUS); in iscsit_send_response()
3234 iscsit_build_rsp_pdu(cmd, conn, inc_stat_sn, hdr); in iscsit_send_response()
3239 if (cmd->se_cmd.sense_buffer && in iscsit_send_response()
3240 ((cmd->se_cmd.se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) || in iscsit_send_response()
3241 (cmd->se_cmd.se_cmd_flags & SCF_EMULATED_TASK_SENSE))) { in iscsit_send_response()
3242 put_unaligned_be16(cmd->se_cmd.scsi_sense_length, cmd->sense_buffer); in iscsit_send_response()
3243 cmd->se_cmd.scsi_sense_length += sizeof (__be16); in iscsit_send_response()
3245 padding = -(cmd->se_cmd.scsi_sense_length) & 3; in iscsit_send_response()
3246 hton24(hdr->dlength, (u32)cmd->se_cmd.scsi_sense_length); in iscsit_send_response()
3247 data_buf = cmd->sense_buffer; in iscsit_send_response()
3248 data_buf_len = cmd->se_cmd.scsi_sense_length + padding; in iscsit_send_response()
3251 memset(cmd->sense_buffer + in iscsit_send_response()
3252 cmd->se_cmd.scsi_sense_length, 0, padding); in iscsit_send_response()
3259 cmd->se_cmd.scsi_sense_length); in iscsit_send_response()
3262 return conn->conn_transport->iscsit_xmit_pdu(conn, cmd, NULL, data_buf, in iscsit_send_response()
3284 iscsit_build_task_mgt_rsp(struct iscsit_cmd *cmd, struct iscsit_conn *conn, in iscsit_build_task_mgt_rsp() argument
3287 struct se_tmr_req *se_tmr = cmd->se_cmd.se_tmr_req; in iscsit_build_task_mgt_rsp()
3292 hdr->itt = cmd->init_task_tag; in iscsit_build_task_mgt_rsp()
3293 cmd->stat_sn = conn->stat_sn++; in iscsit_build_task_mgt_rsp()
3294 hdr->statsn = cpu_to_be32(cmd->stat_sn); in iscsit_build_task_mgt_rsp()
3296 iscsit_increment_maxcmdsn(cmd, conn->sess); in iscsit_build_task_mgt_rsp()
3302 cmd->init_task_tag, cmd->stat_sn, hdr->response, conn->cid); in iscsit_build_task_mgt_rsp()
3307 iscsit_send_task_mgt_rsp(struct iscsit_cmd *cmd, struct iscsit_conn *conn) in iscsit_send_task_mgt_rsp() argument
3309 struct iscsi_tm_rsp *hdr = (struct iscsi_tm_rsp *)&cmd->pdu[0]; in iscsit_send_task_mgt_rsp()
3311 iscsit_build_task_mgt_rsp(cmd, conn, hdr); in iscsit_send_task_mgt_rsp()
3313 return conn->conn_transport->iscsit_xmit_pdu(conn, cmd, NULL, NULL, 0); in iscsit_send_task_mgt_rsp()
3319 iscsit_build_sendtargets_response(struct iscsit_cmd *cmd, in iscsit_build_sendtargets_response() argument
3324 struct iscsit_conn *conn = cmd->conn; in iscsit_build_sendtargets_response()
3331 unsigned char *text_in = cmd->text_in_ptr, *text_ptr = NULL; in iscsit_build_sendtargets_response()
3345 if (cmd->cmd_flags & ICF_SENDTARGETS_SINGLE) { in iscsit_build_sendtargets_response()
3361 if ((cmd->cmd_flags & ICF_SENDTARGETS_SINGLE) && in iscsit_build_sendtargets_response()
3379 cmd->conn->sess->sess_ops->InitiatorName))) { in iscsit_build_sendtargets_response()
3458 if (cmd->cmd_flags & ICF_SENDTARGETS_SINGLE) in iscsit_build_sendtargets_response()
3463 cmd->buf_ptr = payload; in iscsit_build_sendtargets_response()
3469 iscsit_build_text_rsp(struct iscsit_cmd *cmd, struct iscsit_conn *conn, in iscsit_build_text_rsp() argument
3476 text_length = iscsit_build_sendtargets_response(cmd, network_transport, in iscsit_build_text_rsp()
3477 cmd->read_data_done, in iscsit_build_text_rsp()
3486 cmd->read_data_done += text_length; in iscsit_build_text_rsp()
3487 if (cmd->targ_xfer_tag == 0xFFFFFFFF) in iscsit_build_text_rsp()
3488 cmd->targ_xfer_tag = session_get_next_ttt(conn->sess); in iscsit_build_text_rsp()
3493 hdr->itt = cmd->init_task_tag; in iscsit_build_text_rsp()
3494 hdr->ttt = cpu_to_be32(cmd->targ_xfer_tag); in iscsit_build_text_rsp()
3495 cmd->stat_sn = conn->stat_sn++; in iscsit_build_text_rsp()
3496 hdr->statsn = cpu_to_be32(cmd->stat_sn); in iscsit_build_text_rsp()
3498 iscsit_increment_maxcmdsn(cmd, conn->sess); in iscsit_build_text_rsp()
3504 cmd->maxcmdsn_inc = 0; in iscsit_build_text_rsp()
3509 " Length: %u, CID: %hu F: %d C: %d\n", cmd->init_task_tag, in iscsit_build_text_rsp()
3510 cmd->targ_xfer_tag, cmd->stat_sn, text_length, conn->cid, in iscsit_build_text_rsp()
3519 struct iscsit_cmd *cmd, in iscsit_send_text_rsp() argument
3522 struct iscsi_text_rsp *hdr = (struct iscsi_text_rsp *)cmd->pdu; in iscsit_send_text_rsp()
3525 text_length = iscsit_build_text_rsp(cmd, conn, hdr, in iscsit_send_text_rsp()
3530 return conn->conn_transport->iscsit_xmit_pdu(conn, cmd, NULL, in iscsit_send_text_rsp()
3531 cmd->buf_ptr, in iscsit_send_text_rsp()
3536 iscsit_build_reject(struct iscsit_cmd *cmd, struct iscsit_conn *conn, in iscsit_build_reject() argument
3540 hdr->reason = cmd->reject_reason; in iscsit_build_reject()
3544 cmd->stat_sn = conn->stat_sn++; in iscsit_build_reject()
3545 hdr->statsn = cpu_to_be32(cmd->stat_sn); in iscsit_build_reject()
3553 struct iscsit_cmd *cmd, in iscsit_send_reject() argument
3556 struct iscsi_reject *hdr = (struct iscsi_reject *)&cmd->pdu[0]; in iscsit_send_reject()
3558 iscsit_build_reject(cmd, conn, hdr); in iscsit_send_reject()
3563 return conn->conn_transport->iscsit_xmit_pdu(conn, cmd, NULL, in iscsit_send_reject()
3564 cmd->buf_ptr, in iscsit_send_reject()
3668 iscsit_immediate_queue(struct iscsit_conn *conn, struct iscsit_cmd *cmd, int state) in iscsit_immediate_queue() argument
3674 ret = iscsit_send_r2t(cmd, conn); in iscsit_immediate_queue()
3680 list_del_init(&cmd->i_conn_node); in iscsit_immediate_queue()
3683 iscsit_free_cmd(cmd, false); in iscsit_immediate_queue()
3687 ret = iscsit_send_unsolicited_nopin(cmd, conn, 1); in iscsit_immediate_queue()
3692 ret = iscsit_send_unsolicited_nopin(cmd, conn, 0); in iscsit_immediate_queue()
3699 cmd->iscsi_opcode, cmd->init_task_tag, state, in iscsit_immediate_queue()
3716 struct iscsit_cmd *cmd; in iscsit_handle_immediate_queue() local
3722 cmd = qr->cmd; in iscsit_handle_immediate_queue()
3726 ret = t->iscsit_immediate_queue(conn, cmd, state); in iscsit_handle_immediate_queue()
3735 iscsit_response_queue(struct iscsit_conn *conn, struct iscsit_cmd *cmd, int state) in iscsit_response_queue() argument
3742 ret = iscsit_send_datain(cmd, conn); in iscsit_response_queue()
3750 spin_lock_bh(&cmd->istate_lock); in iscsit_response_queue()
3751 cmd->i_state = ISTATE_SENT_STATUS; in iscsit_response_queue()
3752 spin_unlock_bh(&cmd->istate_lock); in iscsit_response_queue()
3761 spin_lock_bh(&cmd->istate_lock); in iscsit_response_queue()
3762 cmd->i_state = ISTATE_SEND_STATUS; in iscsit_response_queue()
3763 spin_unlock_bh(&cmd->istate_lock); in iscsit_response_queue()
3771 ret = iscsit_send_response(cmd, conn); in iscsit_response_queue()
3774 ret = iscsit_send_logout(cmd, conn); in iscsit_response_queue()
3778 cmd, conn); in iscsit_response_queue()
3781 ret = iscsit_send_nopin(cmd, conn); in iscsit_response_queue()
3784 ret = iscsit_send_reject(cmd, conn); in iscsit_response_queue()
3787 ret = iscsit_send_task_mgt_rsp(cmd, conn); in iscsit_response_queue()
3790 ret = iscsit_tmr_post_handler(cmd, conn); in iscsit_response_queue()
3795 ret = iscsit_send_text_rsp(cmd, conn); in iscsit_response_queue()
3800 cmd->iscsi_opcode, cmd->init_task_tag, in iscsit_response_queue()
3809 if (!iscsit_logout_post_handler(cmd, conn)) in iscsit_response_queue()
3819 spin_lock_bh(&cmd->istate_lock); in iscsit_response_queue()
3820 cmd->i_state = ISTATE_SENT_STATUS; in iscsit_response_queue()
3821 spin_unlock_bh(&cmd->istate_lock); in iscsit_response_queue()
3826 cmd->iscsi_opcode, cmd->init_task_tag, in iscsit_response_queue()
3827 cmd->i_state, conn->cid); in iscsit_response_queue()
3845 struct iscsit_cmd *cmd; in iscsit_handle_response_queue() local
3850 cmd = qr->cmd; in iscsit_handle_response_queue()
3854 ret = t->iscsit_response_queue(conn, cmd, state); in iscsit_handle_response_queue()
3923 struct iscsit_cmd *cmd; in iscsi_target_rx_opcode() local
3928 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); in iscsi_target_rx_opcode()
3929 if (!cmd) in iscsi_target_rx_opcode()
3932 ret = iscsit_handle_scsi_cmd(conn, cmd, buf); in iscsi_target_rx_opcode()
3938 cmd = NULL; in iscsi_target_rx_opcode()
3940 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); in iscsi_target_rx_opcode()
3941 if (!cmd) in iscsi_target_rx_opcode()
3944 ret = iscsit_handle_nop_out(conn, cmd, buf); in iscsi_target_rx_opcode()
3947 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); in iscsi_target_rx_opcode()
3948 if (!cmd) in iscsi_target_rx_opcode()
3951 ret = iscsit_handle_task_mgt_cmd(conn, cmd, buf); in iscsi_target_rx_opcode()
3955 cmd = iscsit_find_cmd_from_itt(conn, hdr->itt); in iscsi_target_rx_opcode()
3956 if (!cmd) in iscsi_target_rx_opcode()
3959 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); in iscsi_target_rx_opcode()
3960 if (!cmd) in iscsi_target_rx_opcode()
3964 ret = iscsit_handle_text_cmd(conn, cmd, buf); in iscsi_target_rx_opcode()
3967 cmd = iscsit_allocate_cmd(conn, TASK_INTERRUPTIBLE); in iscsi_target_rx_opcode()
3968 if (!cmd) in iscsi_target_rx_opcode()
3971 ret = iscsit_handle_logout_cmd(conn, cmd, buf); in iscsi_target_rx_opcode()
4149 struct iscsit_cmd *cmd = NULL, *cmd_tmp = NULL; in iscsit_release_commands_from_conn() local
4159 list_for_each_entry_safe(cmd, cmd_tmp, &tmp_list, i_conn_node) { in iscsit_release_commands_from_conn()
4160 struct se_cmd *se_cmd = &cmd->se_cmd; in iscsit_release_commands_from_conn()
4173 list_move_tail(&cmd->i_conn_node, in iscsit_release_commands_from_conn()
4179 if (cmd->se_cmd.t_state == TRANSPORT_WRITE_PENDING) { in iscsit_release_commands_from_conn()
4181 * We never submitted the cmd to LIO core, so we have in iscsit_release_commands_from_conn()
4185 target_complete_cmd(&cmd->se_cmd, SAM_STAT_TASK_ABORTED); in iscsit_release_commands_from_conn()
4192 list_for_each_entry_safe(cmd, cmd_tmp, &tmp_list, i_conn_node) { in iscsit_release_commands_from_conn()
4193 list_del_init(&cmd->i_conn_node); in iscsit_release_commands_from_conn()
4195 iscsit_increment_maxcmdsn(cmd, sess); in iscsit_release_commands_from_conn()
4196 iscsit_free_cmd(cmd, true); in iscsit_release_commands_from_conn()
4214 struct iscsit_cmd *cmd; in iscsit_stop_timers_for_cmds() local
4217 list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) { in iscsit_stop_timers_for_cmds()
4218 if (cmd->data_direction == DMA_TO_DEVICE) in iscsit_stop_timers_for_cmds()
4219 iscsit_stop_dataout_timer(cmd); in iscsit_stop_timers_for_cmds()
4610 struct iscsit_cmd *cmd, in iscsit_logout_post_handler() argument
4615 switch (cmd->logout_reason) { in iscsit_logout_post_handler()
4617 switch (cmd->logout_response) { in iscsit_logout_post_handler()
4626 if (conn->cid == cmd->logout_cid) { in iscsit_logout_post_handler()
4627 switch (cmd->logout_response) { in iscsit_logout_post_handler()
4635 switch (cmd->logout_response) { in iscsit_logout_post_handler()
4638 cmd->logout_cid); in iscsit_logout_post_handler()
4649 switch (cmd->logout_response) { in iscsit_logout_post_handler()