aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/be2iscsi
diff options
context:
space:
mode:
authorJayamohan Kallickal <jayamohank@gmail.com>2013-04-05 23:38:37 -0400
committerJames Bottomley <JBottomley@Parallels.com>2013-05-02 11:21:19 -0400
commit702dc5e868926056349e12a41bd70a4a4eb94940 (patch)
tree65a7d80171ac7c7640ee88b743ae22f5564268a2 /drivers/scsi/be2iscsi
parentad3f428e0fbab1f306cbc22340e9f7672a49147f (diff)
[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: John Soni Jose <sony.john-n@emulex.com> Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/be2iscsi')
-rw-r--r--drivers/scsi/be2iscsi/be_main.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index fe30e3fe7eed..d24a2867bc21 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -1326,8 +1326,9 @@ be_complete_logout(struct beiscsi_conn *beiscsi_conn,
1326 hdr->t2retain = 0; 1326 hdr->t2retain = 0;
1327 hdr->flags = csol_cqe->i_flags; 1327 hdr->flags = csol_cqe->i_flags;
1328 hdr->response = csol_cqe->i_resp; 1328 hdr->response = csol_cqe->i_resp;
1329 hdr->exp_cmdsn = csol_cqe->exp_cmdsn; 1329 hdr->exp_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn);
1330 hdr->max_cmdsn = (csol_cqe->exp_cmdsn + csol_cqe->cmd_wnd - 1); 1330 hdr->max_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn +
1331 csol_cqe->cmd_wnd - 1);
1331 1332
1332 hdr->dlength[0] = 0; 1333 hdr->dlength[0] = 0;
1333 hdr->dlength[1] = 0; 1334 hdr->dlength[1] = 0;
@@ -1350,9 +1351,9 @@ be_complete_tmf(struct beiscsi_conn *beiscsi_conn,
1350 hdr->opcode = ISCSI_OP_SCSI_TMFUNC_RSP; 1351 hdr->opcode = ISCSI_OP_SCSI_TMFUNC_RSP;
1351 hdr->flags = csol_cqe->i_flags; 1352 hdr->flags = csol_cqe->i_flags;
1352 hdr->response = csol_cqe->i_resp; 1353 hdr->response = csol_cqe->i_resp;
1353 hdr->exp_cmdsn = csol_cqe->exp_cmdsn; 1354 hdr->exp_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn);
1354 hdr->max_cmdsn = (csol_cqe->exp_cmdsn + 1355 hdr->max_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn +
1355 csol_cqe->cmd_wnd - 1); 1356 csol_cqe->cmd_wnd - 1);
1356 1357
1357 hdr->itt = io_task->libiscsi_itt; 1358 hdr->itt = io_task->libiscsi_itt;
1358 __iscsi_complete_pdu(conn, (struct iscsi_hdr *)hdr, NULL, 0); 1359 __iscsi_complete_pdu(conn, (struct iscsi_hdr *)hdr, NULL, 0);
@@ -1404,8 +1405,8 @@ be_complete_nopin_resp(struct beiscsi_conn *beiscsi_conn,
1404 hdr = (struct iscsi_nopin *)task->hdr; 1405 hdr = (struct iscsi_nopin *)task->hdr;
1405 hdr->flags = csol_cqe->i_flags; 1406 hdr->flags = csol_cqe->i_flags;
1406 hdr->exp_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn); 1407 hdr->exp_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn);
1407 hdr->max_cmdsn = be32_to_cpu(hdr->exp_cmdsn + 1408 hdr->max_cmdsn = cpu_to_be32(csol_cqe->exp_cmdsn +
1408 csol_cqe->cmd_wnd - 1); 1409 csol_cqe->cmd_wnd - 1);
1409 1410
1410 hdr->opcode = ISCSI_OP_NOOP_IN; 1411 hdr->opcode = ISCSI_OP_NOOP_IN;
1411 hdr->itt = io_task->libiscsi_itt; 1412 hdr->itt = io_task->libiscsi_itt;
@@ -1446,7 +1447,7 @@ static void adapter_get_sol_cqe(struct beiscsi_hba *phba,
1446 cid, psol); 1447 cid, psol);
1447 csol_cqe->hw_sts = AMAP_GET_BITS(struct amap_sol_cqe_v2, 1448 csol_cqe->hw_sts = AMAP_GET_BITS(struct amap_sol_cqe_v2,
1448 hw_sts, psol); 1449 hw_sts, psol);
1449 csol_cqe->cmd_wnd = AMAP_GET_BITS(struct amap_sol_cqe, 1450 csol_cqe->cmd_wnd = AMAP_GET_BITS(struct amap_sol_cqe_v2,
1450 i_cmd_wnd, psol); 1451 i_cmd_wnd, psol);
1451 if (AMAP_GET_BITS(struct amap_sol_cqe_v2, 1452 if (AMAP_GET_BITS(struct amap_sol_cqe_v2,
1452 cmd_cmpl, psol)) 1453 cmd_cmpl, psol))