Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0dccb69d authored by Andy Grover's avatar Andy Grover Committed by Nicholas Bellinger
Browse files

tcm_fc: Simplify ft_send_work for tmr path



Check fc_tm_flags early and call ft_send_tm() right away. Don't need to
set local vars for tm case.

data_len local var now unneeded, remove.

Signed-off-by: default avatarAndy Grover <agrover@redhat.com>
Cc: Kiran Patil <kiran.patil@intel.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 4f26998a
Loading
Loading
Loading
Loading
+35 −43
Original line number Diff line number Diff line
@@ -536,7 +536,6 @@ static void ft_send_work(struct work_struct *work)
	struct fc_frame_header *fh = fc_frame_header_get(cmd->req_frame);
	struct fcp_cmnd *fcp;
	int data_dir = 0;
	u32 data_len;
	int task_attr;

	fcp = fc_frame_payload_get(cmd->req_frame, sizeof(*fcp));
@@ -546,11 +545,14 @@ static void ft_send_work(struct work_struct *work)
	if (fcp->fc_flags & FCP_CFL_LEN_MASK)
		goto err;		/* not handling longer CDBs yet */

	/*
	 * Check for FCP task management flags
	 */
	if (fcp->fc_tm_flags) {
		task_attr = FCP_PTA_SIMPLE;
		data_dir = DMA_NONE;
		data_len = 0;
	} else {
		ft_send_tm(cmd);
		return;
	}

	switch (fcp->fc_flags & (FCP_CFL_RDDATA | FCP_CFL_WRDATA)) {
	case 0:
		data_dir = DMA_NONE;
@@ -582,18 +584,8 @@ static void ft_send_work(struct work_struct *work)
		task_attr = MSG_SIMPLE_TAG;
	}


		task_attr = fcp->fc_pri_ta & FCP_PTA_MASK;
		data_len = ntohl(fcp->fc_dl);
	cmd->cdb = fcp->fc_cdb;
	}
	/*
	 * Check for FCP task management flags
	 */
	if (fcp->fc_tm_flags) {
		ft_send_tm(cmd);
		return;
	}

	fc_seq_exch(cmd->seq)->lp->tt.seq_set_resp(cmd->seq, ft_recv_seq, cmd);
	/*
	 * Use a single se_cmd->cmd_kref as we expect to release se_cmd
@@ -601,7 +593,7 @@ static void ft_send_work(struct work_struct *work)
	 */
	target_submit_cmd(&cmd->se_cmd, cmd->sess->se_sess, cmd->cdb,
			&cmd->ft_sense_buffer[0], scsilun_to_int(&fcp->fc_lun),
			data_len, task_attr, data_dir, 0);
			ntohl(fcp->fc_dl), task_attr, data_dir, 0);
	pr_debug("r_ctl %x alloc target_submit_cmd\n", fh->fh_r_ctl);
	return;