Lines Matching refs:cmd
32 struct iscsit_cmd *cmd) in iscsit_set_dataout_sequence_values() argument
34 struct iscsit_conn *conn = cmd->conn; in iscsit_set_dataout_sequence_values()
39 if (cmd->unsolicited_data) { in iscsit_set_dataout_sequence_values()
40 cmd->seq_start_offset = cmd->write_data_done; in iscsit_set_dataout_sequence_values()
41 cmd->seq_end_offset = min(cmd->se_cmd.data_length, in iscsit_set_dataout_sequence_values()
49 if (!cmd->seq_start_offset && !cmd->seq_end_offset) { in iscsit_set_dataout_sequence_values()
50 cmd->seq_start_offset = cmd->write_data_done; in iscsit_set_dataout_sequence_values()
51 cmd->seq_end_offset = (cmd->se_cmd.data_length > in iscsit_set_dataout_sequence_values()
53 (cmd->write_data_done + in iscsit_set_dataout_sequence_values()
54 conn->sess->sess_ops->MaxBurstLength) : cmd->se_cmd.data_length; in iscsit_set_dataout_sequence_values()
56 cmd->seq_start_offset = cmd->seq_end_offset; in iscsit_set_dataout_sequence_values()
57 cmd->seq_end_offset = ((cmd->seq_end_offset + in iscsit_set_dataout_sequence_values()
59 cmd->se_cmd.data_length) ? cmd->se_cmd.data_length : in iscsit_set_dataout_sequence_values()
60 (cmd->seq_end_offset + in iscsit_set_dataout_sequence_values()
66 struct iscsit_cmd *cmd, in iscsit_dataout_within_command_recovery_check() argument
69 struct iscsit_conn *conn = cmd->conn; in iscsit_dataout_within_command_recovery_check()
86 if ((cmd->cmd_flags & ICF_WITHIN_COMMAND_RECOVERY) && in iscsit_dataout_within_command_recovery_check()
87 cmd->write_data_done != be32_to_cpu(hdr->offset)) in iscsit_dataout_within_command_recovery_check()
90 cmd->cmd_flags &= ~ICF_WITHIN_COMMAND_RECOVERY; in iscsit_dataout_within_command_recovery_check()
94 seq = iscsit_get_seq_holder(cmd, be32_to_cpu(hdr->offset), in iscsit_dataout_within_command_recovery_check()
101 cmd->seq_ptr = seq; in iscsit_dataout_within_command_recovery_check()
132 struct iscsit_cmd *cmd, in iscsit_dataout_check_unsolicited_sequence() argument
136 struct iscsit_conn *conn = cmd->conn; in iscsit_dataout_check_unsolicited_sequence()
141 if ((be32_to_cpu(hdr->offset) < cmd->seq_start_offset) || in iscsit_dataout_check_unsolicited_sequence()
142 ((be32_to_cpu(hdr->offset) + payload_length) > cmd->seq_end_offset)) { in iscsit_dataout_check_unsolicited_sequence()
145 " DataSequenceInOrder=Yes.\n", cmd->init_task_tag, in iscsit_dataout_check_unsolicited_sequence()
146 be32_to_cpu(hdr->offset), payload_length, cmd->seq_start_offset, in iscsit_dataout_check_unsolicited_sequence()
147 cmd->seq_end_offset); in iscsit_dataout_check_unsolicited_sequence()
151 first_burst_len = (cmd->first_burst_len + payload_length); in iscsit_dataout_check_unsolicited_sequence()
157 transport_send_check_condition_and_sense(&cmd->se_cmd, in iscsit_dataout_check_unsolicited_sequence()
175 if ((first_burst_len != cmd->se_cmd.data_length) && in iscsit_dataout_check_unsolicited_sequence()
181 cmd->se_cmd.data_length); in iscsit_dataout_check_unsolicited_sequence()
182 transport_send_check_condition_and_sense(&cmd->se_cmd, in iscsit_dataout_check_unsolicited_sequence()
190 " error.\n", cmd->init_task_tag, in iscsit_dataout_check_unsolicited_sequence()
194 if (first_burst_len == cmd->se_cmd.data_length) { in iscsit_dataout_check_unsolicited_sequence()
197 " error.\n", cmd->init_task_tag, cmd->se_cmd.data_length); in iscsit_dataout_check_unsolicited_sequence()
207 struct iscsit_cmd *cmd, in iscsit_dataout_check_sequence() argument
211 struct iscsit_conn *conn = cmd->conn; in iscsit_dataout_check_sequence()
229 if ((be32_to_cpu(hdr->offset) < cmd->seq_start_offset) || in iscsit_dataout_check_sequence()
230 ((be32_to_cpu(hdr->offset) + payload_length) > cmd->seq_end_offset)) { in iscsit_dataout_check_sequence()
233 " DataSequenceInOrder=Yes.\n", cmd->init_task_tag, in iscsit_dataout_check_sequence()
234 be32_to_cpu(hdr->offset), payload_length, cmd->seq_start_offset, in iscsit_dataout_check_sequence()
235 cmd->seq_end_offset); in iscsit_dataout_check_sequence()
242 next_burst_len = (cmd->next_burst_len + payload_length); in iscsit_dataout_check_sequence()
244 seq = iscsit_get_seq_holder(cmd, be32_to_cpu(hdr->offset), in iscsit_dataout_check_sequence()
251 cmd->seq_ptr = seq; in iscsit_dataout_check_sequence()
265 " error.\n", cmd->init_task_tag, in iscsit_dataout_check_sequence()
287 ((cmd->write_data_done + payload_length) < in iscsit_dataout_check_sequence()
288 cmd->se_cmd.data_length)) { in iscsit_dataout_check_sequence()
291 " error.\n", cmd->init_task_tag); in iscsit_dataout_check_sequence()
298 " error.\n", cmd->init_task_tag); in iscsit_dataout_check_sequence()
308 " not set, protocol error.", cmd->init_task_tag, in iscsit_dataout_check_sequence()
312 if ((cmd->write_data_done + payload_length) == in iscsit_dataout_check_sequence()
313 cmd->se_cmd.data_length) { in iscsit_dataout_check_sequence()
317 cmd->init_task_tag); in iscsit_dataout_check_sequence()
325 cmd->init_task_tag); in iscsit_dataout_check_sequence()
336 struct iscsit_cmd *cmd, in iscsit_dataout_check_datasn() argument
340 struct iscsit_conn *conn = cmd->conn; in iscsit_dataout_check_datasn()
353 data_sn = cmd->data_sn; in iscsit_dataout_check_datasn()
355 struct iscsi_seq *seq = cmd->seq_ptr; in iscsit_dataout_check_datasn()
361 " higher than expected 0x%08x.\n", cmd->init_task_tag, in iscsit_dataout_check_datasn()
367 cmd->init_task_tag, be32_to_cpu(hdr->datasn), data_sn); in iscsit_dataout_check_datasn()
387 struct iscsit_cmd *cmd, in iscsit_dataout_pre_datapduinorder_yes() argument
391 struct iscsit_conn *conn = cmd->conn; in iscsit_dataout_pre_datapduinorder_yes()
405 if (be32_to_cpu(hdr->offset) != cmd->write_data_done) { in iscsit_dataout_pre_datapduinorder_yes()
407 " %u different than expected %u.\n", cmd->init_task_tag, in iscsit_dataout_pre_datapduinorder_yes()
408 be32_to_cpu(hdr->offset), cmd->write_data_done); in iscsit_dataout_pre_datapduinorder_yes()
413 struct iscsi_seq *seq = cmd->seq_ptr; in iscsit_dataout_pre_datapduinorder_yes()
417 " %u greater than expected %u.\n", cmd->init_task_tag, in iscsit_dataout_pre_datapduinorder_yes()
424 cmd->init_task_tag, be32_to_cpu(hdr->offset), in iscsit_dataout_pre_datapduinorder_yes()
443 return (recovery) ? iscsit_recover_dataout_sequence(cmd, in iscsit_dataout_pre_datapduinorder_yes()
449 struct iscsit_cmd *cmd, in iscsit_dataout_pre_datapduinorder_no() argument
456 pdu = iscsit_get_pdu_holder(cmd, be32_to_cpu(hdr->offset), in iscsit_dataout_pre_datapduinorder_no()
461 cmd->pdu_ptr = pdu; in iscsit_dataout_pre_datapduinorder_no()
470 " Offset: %u, Length: %u\n", cmd->init_task_tag, in iscsit_dataout_pre_datapduinorder_no()
472 return iscsit_dump_data_payload(cmd->conn, payload_length, 1); in iscsit_dataout_pre_datapduinorder_no()
480 static int iscsit_dataout_update_r2t(struct iscsit_cmd *cmd, u32 offset, u32 length) in iscsit_dataout_update_r2t() argument
484 if (cmd->unsolicited_data) in iscsit_dataout_update_r2t()
487 r2t = iscsit_get_r2t_for_eos(cmd, offset, length); in iscsit_dataout_update_r2t()
491 spin_lock_bh(&cmd->r2t_lock); in iscsit_dataout_update_r2t()
493 cmd->outstanding_r2ts--; in iscsit_dataout_update_r2t()
494 spin_unlock_bh(&cmd->r2t_lock); in iscsit_dataout_update_r2t()
500 struct iscsit_cmd *cmd, in iscsit_dataout_update_datapduinorder_no() argument
505 struct iscsi_pdu *pdu = cmd->pdu_ptr; in iscsit_dataout_update_datapduinorder_no()
524 ret = iscsit_dataout_datapduinorder_no_fbit(cmd, pdu); in iscsit_dataout_update_datapduinorder_no()
533 struct iscsit_cmd *cmd, in iscsit_dataout_post_crc_passed() argument
537 struct iscsit_conn *conn = cmd->conn; in iscsit_dataout_post_crc_passed()
542 if (cmd->unsolicited_data) { in iscsit_dataout_post_crc_passed()
543 if ((cmd->first_burst_len + payload_length) == in iscsit_dataout_post_crc_passed()
545 if (iscsit_dataout_update_r2t(cmd, be32_to_cpu(hdr->offset), in iscsit_dataout_post_crc_passed()
552 ret = iscsit_dataout_update_datapduinorder_no(cmd, in iscsit_dataout_post_crc_passed()
559 cmd->first_burst_len += payload_length; in iscsit_dataout_post_crc_passed()
562 cmd->data_sn++; in iscsit_dataout_post_crc_passed()
564 seq = cmd->seq_ptr; in iscsit_dataout_post_crc_passed()
572 cmd->first_burst_len = 0; in iscsit_dataout_post_crc_passed()
573 cmd->unsolicited_data = 0; in iscsit_dataout_post_crc_passed()
577 if ((cmd->next_burst_len + payload_length) == in iscsit_dataout_post_crc_passed()
579 if (iscsit_dataout_update_r2t(cmd, in iscsit_dataout_post_crc_passed()
588 cmd, be32_to_cpu(hdr->datasn), in iscsit_dataout_post_crc_passed()
594 cmd->next_burst_len += payload_length; in iscsit_dataout_post_crc_passed()
595 cmd->data_sn++; in iscsit_dataout_post_crc_passed()
598 cmd->next_burst_len = 0; in iscsit_dataout_post_crc_passed()
600 seq = cmd->seq_ptr; in iscsit_dataout_post_crc_passed()
604 if (iscsit_dataout_update_r2t(cmd, in iscsit_dataout_post_crc_passed()
613 cmd, be32_to_cpu(hdr->datasn), in iscsit_dataout_post_crc_passed()
631 cmd->data_sn = 0; in iscsit_dataout_post_crc_passed()
633 cmd->write_data_done += payload_length; in iscsit_dataout_post_crc_passed()
635 if (cmd->write_data_done == cmd->se_cmd.data_length) in iscsit_dataout_post_crc_passed()
644 struct iscsit_cmd *cmd, in iscsit_dataout_post_crc_failed() argument
647 struct iscsit_conn *conn = cmd->conn; in iscsit_dataout_post_crc_failed()
657 pdu = cmd->pdu_ptr; in iscsit_dataout_post_crc_failed()
673 return iscsit_recover_dataout_sequence(cmd, be32_to_cpu(hdr->offset), in iscsit_dataout_post_crc_failed()
682 struct iscsit_cmd *cmd, in iscsit_check_pre_dataout() argument
686 struct iscsit_conn *conn = cmd->conn; in iscsit_check_pre_dataout()
688 ret = iscsit_dataout_within_command_recovery_check(cmd, buf); in iscsit_check_pre_dataout()
693 ret = iscsit_dataout_check_datasn(cmd, buf); in iscsit_check_pre_dataout()
698 if (cmd->unsolicited_data) { in iscsit_check_pre_dataout()
699 ret = iscsit_dataout_check_unsolicited_sequence(cmd, buf); in iscsit_check_pre_dataout()
704 ret = iscsit_dataout_check_sequence(cmd, buf); in iscsit_check_pre_dataout()
711 iscsit_dataout_pre_datapduinorder_yes(cmd, buf) : in iscsit_check_pre_dataout()
712 iscsit_dataout_pre_datapduinorder_no(cmd, buf); in iscsit_check_pre_dataout()
720 struct iscsit_cmd *cmd, in iscsit_check_post_dataout() argument
724 struct iscsit_conn *conn = cmd->conn; in iscsit_check_post_dataout()
726 cmd->dataout_timeout_retries = 0; in iscsit_check_post_dataout()
729 return iscsit_dataout_post_crc_passed(cmd, buf); in iscsit_check_post_dataout()
734 iscsit_reject_cmd(cmd, ISCSI_REASON_DATA_DIGEST_ERROR, in iscsit_check_post_dataout()
739 iscsit_reject_cmd(cmd, ISCSI_REASON_DATA_DIGEST_ERROR, buf); in iscsit_check_post_dataout()
740 return iscsit_dataout_post_crc_failed(cmd, buf); in iscsit_check_post_dataout()