Lines Matching refs:cmd

39 	struct iscsi_cmd *cmd)
41 struct iscsi_conn *conn = cmd->conn;
46 if (cmd->unsolicited_data) {
47 cmd->seq_start_offset = cmd->write_data_done;
48 cmd->seq_end_offset = (cmd->write_data_done +
49 ((cmd->se_cmd.data_length >
51 conn->sess->sess_ops->FirstBurstLength : cmd->se_cmd.data_length));
58 if (!cmd->seq_start_offset && !cmd->seq_end_offset) {
59 cmd->seq_start_offset = cmd->write_data_done;
60 cmd->seq_end_offset = (cmd->se_cmd.data_length >
62 (cmd->write_data_done +
63 conn->sess->sess_ops->MaxBurstLength) : cmd->se_cmd.data_length;
65 cmd->seq_start_offset = cmd->seq_end_offset;
66 cmd->seq_end_offset = ((cmd->seq_end_offset +
68 cmd->se_cmd.data_length) ? cmd->se_cmd.data_length :
69 (cmd->seq_end_offset +
75 struct iscsi_cmd *cmd,
78 struct iscsi_conn *conn = cmd->conn;
95 if ((cmd->cmd_flags & ICF_WITHIN_COMMAND_RECOVERY) &&
96 cmd->write_data_done != be32_to_cpu(hdr->offset))
99 cmd->cmd_flags &= ~ICF_WITHIN_COMMAND_RECOVERY;
103 seq = iscsit_get_seq_holder(cmd, be32_to_cpu(hdr->offset),
110 cmd->seq_ptr = seq;
141 struct iscsi_cmd *cmd,
145 struct iscsi_conn *conn = cmd->conn;
150 if ((be32_to_cpu(hdr->offset) < cmd->seq_start_offset) ||
151 ((be32_to_cpu(hdr->offset) + payload_length) > cmd->seq_end_offset)) {
154 " DataSequenceInOrder=Yes.\n", cmd->init_task_tag,
155 be32_to_cpu(hdr->offset), payload_length, cmd->seq_start_offset,
156 cmd->seq_end_offset);
160 first_burst_len = (cmd->first_burst_len + payload_length);
166 transport_send_check_condition_and_sense(&cmd->se_cmd,
184 if ((first_burst_len != cmd->se_cmd.data_length) &&
190 cmd->se_cmd.data_length);
191 transport_send_check_condition_and_sense(&cmd->se_cmd,
199 " error.\n", cmd->init_task_tag,
203 if (first_burst_len == cmd->se_cmd.data_length) {
206 " error.\n", cmd->init_task_tag, cmd->se_cmd.data_length);
216 struct iscsi_cmd *cmd,
220 struct iscsi_conn *conn = cmd->conn;
238 if ((be32_to_cpu(hdr->offset) < cmd->seq_start_offset) ||
239 ((be32_to_cpu(hdr->offset) + payload_length) > cmd->seq_end_offset)) {
242 " DataSequenceInOrder=Yes.\n", cmd->init_task_tag,
243 be32_to_cpu(hdr->offset), payload_length, cmd->seq_start_offset,
244 cmd->seq_end_offset);
251 next_burst_len = (cmd->next_burst_len + payload_length);
253 seq = iscsit_get_seq_holder(cmd, be32_to_cpu(hdr->offset),
260 cmd->seq_ptr = seq;
274 " error.\n", cmd->init_task_tag,
296 ((cmd->write_data_done + payload_length) <
297 cmd->se_cmd.data_length)) {
300 " error.\n", cmd->init_task_tag);
307 " error.\n", cmd->init_task_tag);
317 " not set, protocol error.", cmd->init_task_tag,
321 if ((cmd->write_data_done + payload_length) ==
322 cmd->se_cmd.data_length) {
326 cmd->init_task_tag);
334 cmd->init_task_tag);
345 struct iscsi_cmd *cmd,
349 struct iscsi_conn *conn = cmd->conn;
362 data_sn = cmd->data_sn;
364 struct iscsi_seq *seq = cmd->seq_ptr;
370 " higher than expected 0x%08x.\n", cmd->init_task_tag,
376 cmd->init_task_tag, be32_to_cpu(hdr->datasn), data_sn);
396 struct iscsi_cmd *cmd,
400 struct iscsi_conn *conn = cmd->conn;
414 if (be32_to_cpu(hdr->offset) != cmd->write_data_done) {
416 " %u different than expected %u.\n", cmd->init_task_tag,
417 be32_to_cpu(hdr->offset), cmd->write_data_done);
422 struct iscsi_seq *seq = cmd->seq_ptr;
426 " %u greater than expected %u.\n", cmd->init_task_tag,
433 cmd->init_task_tag, be32_to_cpu(hdr->offset),
452 return (recovery) ? iscsit_recover_dataout_sequence(cmd,
458 struct iscsi_cmd *cmd,
465 pdu = iscsit_get_pdu_holder(cmd, be32_to_cpu(hdr->offset),
470 cmd->pdu_ptr = pdu;
479 " Offset: %u, Length: %u\n", cmd->init_task_tag,
481 return iscsit_dump_data_payload(cmd->conn, payload_length, 1);
489 static int iscsit_dataout_update_r2t(struct iscsi_cmd *cmd, u32 offset, u32 length)
493 if (cmd->unsolicited_data)
496 r2t = iscsit_get_r2t_for_eos(cmd, offset, length);
500 spin_lock_bh(&cmd->r2t_lock);
502 cmd->outstanding_r2ts--;
503 spin_unlock_bh(&cmd->r2t_lock);
509 struct iscsi_cmd *cmd,
514 struct iscsi_pdu *pdu = cmd->pdu_ptr;
533 ret = iscsit_dataout_datapduinorder_no_fbit(cmd, pdu);
542 struct iscsi_cmd *cmd,
546 struct iscsi_conn *conn = cmd->conn;
551 if (cmd->unsolicited_data) {
552 if ((cmd->first_burst_len + payload_length) ==
554 if (iscsit_dataout_update_r2t(cmd, be32_to_cpu(hdr->offset),
561 ret = iscsit_dataout_update_datapduinorder_no(cmd,
568 cmd->first_burst_len += payload_length;
571 cmd->data_sn++;
573 seq = cmd->seq_ptr;
581 cmd->first_burst_len = 0;
582 cmd->unsolicited_data = 0;
586 if ((cmd->next_burst_len + payload_length) ==
588 if (iscsit_dataout_update_r2t(cmd,
597 cmd, be32_to_cpu(hdr->datasn),
603 cmd->next_burst_len += payload_length;
604 cmd->data_sn++;
607 cmd->next_burst_len = 0;
609 seq = cmd->seq_ptr;
613 if (iscsit_dataout_update_r2t(cmd,
622 cmd, be32_to_cpu(hdr->datasn),
640 cmd->data_sn = 0;
642 cmd->write_data_done += payload_length;
644 if (cmd->write_data_done == cmd->se_cmd.data_length)
653 struct iscsi_cmd *cmd,
656 struct iscsi_conn *conn = cmd->conn;
666 pdu = cmd->pdu_ptr;
682 return iscsit_recover_dataout_sequence(cmd, be32_to_cpu(hdr->offset),
691 struct iscsi_cmd *cmd,
695 struct iscsi_conn *conn = cmd->conn;
697 ret = iscsit_dataout_within_command_recovery_check(cmd, buf);
702 ret = iscsit_dataout_check_datasn(cmd, buf);
707 if (cmd->unsolicited_data) {
708 ret = iscsit_dataout_check_unsolicited_sequence(cmd, buf);
713 ret = iscsit_dataout_check_sequence(cmd, buf);
720 iscsit_dataout_pre_datapduinorder_yes(cmd, buf) :
721 iscsit_dataout_pre_datapduinorder_no(cmd, buf);
729 struct iscsi_cmd *cmd,
733 struct iscsi_conn *conn = cmd->conn;
735 cmd->dataout_timeout_retries = 0;
738 return iscsit_dataout_post_crc_passed(cmd, buf);
743 iscsit_reject_cmd(cmd, ISCSI_REASON_DATA_DIGEST_ERROR,
748 iscsit_reject_cmd(cmd, ISCSI_REASON_DATA_DIGEST_ERROR, buf);
749 return iscsit_dataout_post_crc_failed(cmd, buf);