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

Commit 702dc5e8 authored by Jayamohan Kallickal's avatar Jayamohan Kallickal Committed by James Bottomley
Browse files

[SCSI] be2iscsi: Fix issue in passing the exp_cmdsn and max_cmdsn



Command Window value from the CQE was used to calculate the
max_cmdsn for that session.The command window value extracted
for SKH-R adapter was not proper. The value was extracted from
BE adapter completion event. Fixed the issue by getting the
cmd_wnd value from SKH-R CQE.

The exp_cmdsn and max_cmdsn values were not converted to BE format
before calling the __iscsi_complete_pdu(). Fixed the issue of converting
to BE format.

Signed-off-by: default avatarJohn Soni Jose <sony.john-n@emulex.com>
Signed-off-by: default avatarJayamohan Kallickal <jayamohan.kallickal@emulex.com>
Reviewed-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent ad3f428e
Loading
Loading
Loading
Loading
+9 −8
Original line number Original line Diff line number Diff line
@@ -1326,8 +1326,9 @@ be_complete_logout(struct beiscsi_conn *beiscsi_conn,
	hdr->t2retain = 0;
	hdr->t2retain = 0;
	hdr->flags = csol_cqe->i_flags;
	hdr->flags = csol_cqe->i_flags;
	hdr->response = csol_cqe->i_resp;
	hdr->response = csol_cqe->i_resp;
	hdr->exp_cmdsn = csol_cqe->exp_cmdsn;
	hdr->exp_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn);
	hdr->max_cmdsn = (csol_cqe->exp_cmdsn + csol_cqe->cmd_wnd - 1);
	hdr->max_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn +
				     csol_cqe->cmd_wnd - 1);


	hdr->dlength[0] = 0;
	hdr->dlength[0] = 0;
	hdr->dlength[1] = 0;
	hdr->dlength[1] = 0;
@@ -1350,8 +1351,8 @@ be_complete_tmf(struct beiscsi_conn *beiscsi_conn,
	hdr->opcode = ISCSI_OP_SCSI_TMFUNC_RSP;
	hdr->opcode = ISCSI_OP_SCSI_TMFUNC_RSP;
	hdr->flags = csol_cqe->i_flags;
	hdr->flags = csol_cqe->i_flags;
	hdr->response = csol_cqe->i_resp;
	hdr->response = csol_cqe->i_resp;
	hdr->exp_cmdsn = csol_cqe->exp_cmdsn;
	hdr->exp_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn);
	hdr->max_cmdsn = (csol_cqe->exp_cmdsn +
	hdr->max_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn +
				     csol_cqe->cmd_wnd - 1);
				     csol_cqe->cmd_wnd - 1);


	hdr->itt = io_task->libiscsi_itt;
	hdr->itt = io_task->libiscsi_itt;
@@ -1404,7 +1405,7 @@ be_complete_nopin_resp(struct beiscsi_conn *beiscsi_conn,
	hdr = (struct iscsi_nopin *)task->hdr;
	hdr = (struct iscsi_nopin *)task->hdr;
	hdr->flags = csol_cqe->i_flags;
	hdr->flags = csol_cqe->i_flags;
	hdr->exp_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn);
	hdr->exp_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn);
	hdr->max_cmdsn = be32_to_cpu(hdr->exp_cmdsn +
	hdr->max_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn +
				     csol_cqe->cmd_wnd - 1);
				     csol_cqe->cmd_wnd - 1);


	hdr->opcode = ISCSI_OP_NOOP_IN;
	hdr->opcode = ISCSI_OP_NOOP_IN;
@@ -1446,7 +1447,7 @@ static void adapter_get_sol_cqe(struct beiscsi_hba *phba,
					      cid, psol);
					      cid, psol);
		csol_cqe->hw_sts = AMAP_GET_BITS(struct amap_sol_cqe_v2,
		csol_cqe->hw_sts = AMAP_GET_BITS(struct amap_sol_cqe_v2,
						 hw_sts, psol);
						 hw_sts, psol);
		csol_cqe->cmd_wnd = AMAP_GET_BITS(struct amap_sol_cqe,
		csol_cqe->cmd_wnd = AMAP_GET_BITS(struct amap_sol_cqe_v2,
						  i_cmd_wnd, psol);
						  i_cmd_wnd, psol);
		if (AMAP_GET_BITS(struct amap_sol_cqe_v2,
		if (AMAP_GET_BITS(struct amap_sol_cqe_v2,
				  cmd_cmpl, psol))
				  cmd_cmpl, psol))