Lines Matching refs:cmd
38 struct iscsi_cmd *cmd) in iscsit_set_dataout_sequence_values() argument
40 struct iscsi_conn *conn = cmd->conn; in iscsit_set_dataout_sequence_values()
45 if (cmd->unsolicited_data) { in iscsit_set_dataout_sequence_values()
46 cmd->seq_start_offset = cmd->write_data_done; in iscsit_set_dataout_sequence_values()
47 cmd->seq_end_offset = (cmd->write_data_done + in iscsit_set_dataout_sequence_values()
48 ((cmd->se_cmd.data_length > in iscsit_set_dataout_sequence_values()
50 conn->sess->sess_ops->FirstBurstLength : cmd->se_cmd.data_length)); in iscsit_set_dataout_sequence_values()
57 if (!cmd->seq_start_offset && !cmd->seq_end_offset) { in iscsit_set_dataout_sequence_values()
58 cmd->seq_start_offset = cmd->write_data_done; in iscsit_set_dataout_sequence_values()
59 cmd->seq_end_offset = (cmd->se_cmd.data_length > in iscsit_set_dataout_sequence_values()
61 (cmd->write_data_done + in iscsit_set_dataout_sequence_values()
62 conn->sess->sess_ops->MaxBurstLength) : cmd->se_cmd.data_length; in iscsit_set_dataout_sequence_values()
64 cmd->seq_start_offset = cmd->seq_end_offset; in iscsit_set_dataout_sequence_values()
65 cmd->seq_end_offset = ((cmd->seq_end_offset + in iscsit_set_dataout_sequence_values()
67 cmd->se_cmd.data_length) ? cmd->se_cmd.data_length : in iscsit_set_dataout_sequence_values()
68 (cmd->seq_end_offset + in iscsit_set_dataout_sequence_values()
74 struct iscsi_cmd *cmd, in iscsit_dataout_within_command_recovery_check() argument
77 struct iscsi_conn *conn = cmd->conn; in iscsit_dataout_within_command_recovery_check()
94 if ((cmd->cmd_flags & ICF_WITHIN_COMMAND_RECOVERY) && in iscsit_dataout_within_command_recovery_check()
95 cmd->write_data_done != be32_to_cpu(hdr->offset)) in iscsit_dataout_within_command_recovery_check()
98 cmd->cmd_flags &= ~ICF_WITHIN_COMMAND_RECOVERY; in iscsit_dataout_within_command_recovery_check()
102 seq = iscsit_get_seq_holder(cmd, be32_to_cpu(hdr->offset), in iscsit_dataout_within_command_recovery_check()
109 cmd->seq_ptr = seq; in iscsit_dataout_within_command_recovery_check()
140 struct iscsi_cmd *cmd, in iscsit_dataout_check_unsolicited_sequence() argument
144 struct iscsi_conn *conn = cmd->conn; in iscsit_dataout_check_unsolicited_sequence()
149 if ((be32_to_cpu(hdr->offset) < cmd->seq_start_offset) || in iscsit_dataout_check_unsolicited_sequence()
150 ((be32_to_cpu(hdr->offset) + payload_length) > cmd->seq_end_offset)) { in iscsit_dataout_check_unsolicited_sequence()
153 " DataSequenceInOrder=Yes.\n", cmd->init_task_tag, in iscsit_dataout_check_unsolicited_sequence()
154 be32_to_cpu(hdr->offset), payload_length, cmd->seq_start_offset, in iscsit_dataout_check_unsolicited_sequence()
155 cmd->seq_end_offset); in iscsit_dataout_check_unsolicited_sequence()
159 first_burst_len = (cmd->first_burst_len + payload_length); in iscsit_dataout_check_unsolicited_sequence()
165 transport_send_check_condition_and_sense(&cmd->se_cmd, in iscsit_dataout_check_unsolicited_sequence()
183 if ((first_burst_len != cmd->se_cmd.data_length) && in iscsit_dataout_check_unsolicited_sequence()
189 cmd->se_cmd.data_length); in iscsit_dataout_check_unsolicited_sequence()
190 transport_send_check_condition_and_sense(&cmd->se_cmd, in iscsit_dataout_check_unsolicited_sequence()
198 " error.\n", cmd->init_task_tag, in iscsit_dataout_check_unsolicited_sequence()
202 if (first_burst_len == cmd->se_cmd.data_length) { in iscsit_dataout_check_unsolicited_sequence()
205 " error.\n", cmd->init_task_tag, cmd->se_cmd.data_length); in iscsit_dataout_check_unsolicited_sequence()
215 struct iscsi_cmd *cmd, in iscsit_dataout_check_sequence() argument
219 struct iscsi_conn *conn = cmd->conn; in iscsit_dataout_check_sequence()
237 if ((be32_to_cpu(hdr->offset) < cmd->seq_start_offset) || in iscsit_dataout_check_sequence()
238 ((be32_to_cpu(hdr->offset) + payload_length) > cmd->seq_end_offset)) { in iscsit_dataout_check_sequence()
241 " DataSequenceInOrder=Yes.\n", cmd->init_task_tag, in iscsit_dataout_check_sequence()
242 be32_to_cpu(hdr->offset), payload_length, cmd->seq_start_offset, in iscsit_dataout_check_sequence()
243 cmd->seq_end_offset); in iscsit_dataout_check_sequence()
250 next_burst_len = (cmd->next_burst_len + payload_length); in iscsit_dataout_check_sequence()
252 seq = iscsit_get_seq_holder(cmd, be32_to_cpu(hdr->offset), in iscsit_dataout_check_sequence()
259 cmd->seq_ptr = seq; in iscsit_dataout_check_sequence()
273 " error.\n", cmd->init_task_tag, in iscsit_dataout_check_sequence()
295 ((cmd->write_data_done + payload_length) < in iscsit_dataout_check_sequence()
296 cmd->se_cmd.data_length)) { in iscsit_dataout_check_sequence()
299 " error.\n", cmd->init_task_tag); in iscsit_dataout_check_sequence()
306 " error.\n", cmd->init_task_tag); in iscsit_dataout_check_sequence()
316 " not set, protocol error.", cmd->init_task_tag, in iscsit_dataout_check_sequence()
320 if ((cmd->write_data_done + payload_length) == in iscsit_dataout_check_sequence()
321 cmd->se_cmd.data_length) { in iscsit_dataout_check_sequence()
325 cmd->init_task_tag); in iscsit_dataout_check_sequence()
333 cmd->init_task_tag); in iscsit_dataout_check_sequence()
344 struct iscsi_cmd *cmd, in iscsit_dataout_check_datasn() argument
348 struct iscsi_conn *conn = cmd->conn; in iscsit_dataout_check_datasn()
361 data_sn = cmd->data_sn; in iscsit_dataout_check_datasn()
363 struct iscsi_seq *seq = cmd->seq_ptr; in iscsit_dataout_check_datasn()
369 " higher than expected 0x%08x.\n", cmd->init_task_tag, in iscsit_dataout_check_datasn()
375 cmd->init_task_tag, be32_to_cpu(hdr->datasn), data_sn); in iscsit_dataout_check_datasn()
395 struct iscsi_cmd *cmd, in iscsit_dataout_pre_datapduinorder_yes() argument
399 struct iscsi_conn *conn = cmd->conn; in iscsit_dataout_pre_datapduinorder_yes()
413 if (be32_to_cpu(hdr->offset) != cmd->write_data_done) { in iscsit_dataout_pre_datapduinorder_yes()
415 " %u different than expected %u.\n", cmd->init_task_tag, in iscsit_dataout_pre_datapduinorder_yes()
416 be32_to_cpu(hdr->offset), cmd->write_data_done); in iscsit_dataout_pre_datapduinorder_yes()
421 struct iscsi_seq *seq = cmd->seq_ptr; in iscsit_dataout_pre_datapduinorder_yes()
425 " %u greater than expected %u.\n", cmd->init_task_tag, in iscsit_dataout_pre_datapduinorder_yes()
432 cmd->init_task_tag, be32_to_cpu(hdr->offset), in iscsit_dataout_pre_datapduinorder_yes()
451 return (recovery) ? iscsit_recover_dataout_sequence(cmd, in iscsit_dataout_pre_datapduinorder_yes()
457 struct iscsi_cmd *cmd, in iscsit_dataout_pre_datapduinorder_no() argument
464 pdu = iscsit_get_pdu_holder(cmd, be32_to_cpu(hdr->offset), in iscsit_dataout_pre_datapduinorder_no()
469 cmd->pdu_ptr = pdu; in iscsit_dataout_pre_datapduinorder_no()
478 " Offset: %u, Length: %u\n", cmd->init_task_tag, in iscsit_dataout_pre_datapduinorder_no()
480 return iscsit_dump_data_payload(cmd->conn, payload_length, 1); in iscsit_dataout_pre_datapduinorder_no()
488 static int iscsit_dataout_update_r2t(struct iscsi_cmd *cmd, u32 offset, u32 length) in iscsit_dataout_update_r2t() argument
492 if (cmd->unsolicited_data) in iscsit_dataout_update_r2t()
495 r2t = iscsit_get_r2t_for_eos(cmd, offset, length); in iscsit_dataout_update_r2t()
499 spin_lock_bh(&cmd->r2t_lock); in iscsit_dataout_update_r2t()
501 cmd->outstanding_r2ts--; in iscsit_dataout_update_r2t()
502 spin_unlock_bh(&cmd->r2t_lock); in iscsit_dataout_update_r2t()
508 struct iscsi_cmd *cmd, in iscsit_dataout_update_datapduinorder_no() argument
513 struct iscsi_pdu *pdu = cmd->pdu_ptr; in iscsit_dataout_update_datapduinorder_no()
532 ret = iscsit_dataout_datapduinorder_no_fbit(cmd, pdu); in iscsit_dataout_update_datapduinorder_no()
541 struct iscsi_cmd *cmd, in iscsit_dataout_post_crc_passed() argument
545 struct iscsi_conn *conn = cmd->conn; in iscsit_dataout_post_crc_passed()
550 if (cmd->unsolicited_data) { in iscsit_dataout_post_crc_passed()
551 if ((cmd->first_burst_len + payload_length) == in iscsit_dataout_post_crc_passed()
553 if (iscsit_dataout_update_r2t(cmd, be32_to_cpu(hdr->offset), in iscsit_dataout_post_crc_passed()
560 ret = iscsit_dataout_update_datapduinorder_no(cmd, in iscsit_dataout_post_crc_passed()
567 cmd->first_burst_len += payload_length; in iscsit_dataout_post_crc_passed()
570 cmd->data_sn++; in iscsit_dataout_post_crc_passed()
572 seq = cmd->seq_ptr; in iscsit_dataout_post_crc_passed()
580 cmd->first_burst_len = 0; in iscsit_dataout_post_crc_passed()
581 cmd->unsolicited_data = 0; in iscsit_dataout_post_crc_passed()
585 if ((cmd->next_burst_len + payload_length) == in iscsit_dataout_post_crc_passed()
587 if (iscsit_dataout_update_r2t(cmd, in iscsit_dataout_post_crc_passed()
596 cmd, be32_to_cpu(hdr->datasn), in iscsit_dataout_post_crc_passed()
602 cmd->next_burst_len += payload_length; in iscsit_dataout_post_crc_passed()
603 cmd->data_sn++; in iscsit_dataout_post_crc_passed()
606 cmd->next_burst_len = 0; in iscsit_dataout_post_crc_passed()
608 seq = cmd->seq_ptr; in iscsit_dataout_post_crc_passed()
612 if (iscsit_dataout_update_r2t(cmd, in iscsit_dataout_post_crc_passed()
621 cmd, be32_to_cpu(hdr->datasn), in iscsit_dataout_post_crc_passed()
639 cmd->data_sn = 0; in iscsit_dataout_post_crc_passed()
641 cmd->write_data_done += payload_length; in iscsit_dataout_post_crc_passed()
643 if (cmd->write_data_done == cmd->se_cmd.data_length) in iscsit_dataout_post_crc_passed()
652 struct iscsi_cmd *cmd, in iscsit_dataout_post_crc_failed() argument
655 struct iscsi_conn *conn = cmd->conn; in iscsit_dataout_post_crc_failed()
665 pdu = cmd->pdu_ptr; in iscsit_dataout_post_crc_failed()
681 return iscsit_recover_dataout_sequence(cmd, be32_to_cpu(hdr->offset), in iscsit_dataout_post_crc_failed()
690 struct iscsi_cmd *cmd, in iscsit_check_pre_dataout() argument
694 struct iscsi_conn *conn = cmd->conn; in iscsit_check_pre_dataout()
696 ret = iscsit_dataout_within_command_recovery_check(cmd, buf); in iscsit_check_pre_dataout()
701 ret = iscsit_dataout_check_datasn(cmd, buf); in iscsit_check_pre_dataout()
706 if (cmd->unsolicited_data) { in iscsit_check_pre_dataout()
707 ret = iscsit_dataout_check_unsolicited_sequence(cmd, buf); in iscsit_check_pre_dataout()
712 ret = iscsit_dataout_check_sequence(cmd, buf); in iscsit_check_pre_dataout()
719 iscsit_dataout_pre_datapduinorder_yes(cmd, buf) : in iscsit_check_pre_dataout()
720 iscsit_dataout_pre_datapduinorder_no(cmd, buf); in iscsit_check_pre_dataout()
728 struct iscsi_cmd *cmd, in iscsit_check_post_dataout() argument
732 struct iscsi_conn *conn = cmd->conn; in iscsit_check_post_dataout()
734 cmd->dataout_timeout_retries = 0; in iscsit_check_post_dataout()
737 return iscsit_dataout_post_crc_passed(cmd, buf); in iscsit_check_post_dataout()
742 iscsit_reject_cmd(cmd, ISCSI_REASON_DATA_DIGEST_ERROR, in iscsit_check_post_dataout()
747 iscsit_reject_cmd(cmd, ISCSI_REASON_DATA_DIGEST_ERROR, buf); in iscsit_check_post_dataout()
748 return iscsit_dataout_post_crc_failed(cmd, buf); in iscsit_check_post_dataout()