aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorSaurav Kashyap <saurav.kashyap@qlogic.com>2011-08-16 14:29:29 -0400
committerJames Bottomley <JBottomley@Parallels.com>2011-08-27 10:22:09 -0400
commit51cc9a8e5f610a0d0881b45410c37890e02a2f76 (patch)
tree3824570785da64af774d7e438a11d065b5ab9f9c /drivers/scsi
parent58b48576966ed0afd3f63ef17480ec12748a7119 (diff)
[SCSI] qla2xxx: Set the task attributes after memsetting fcp cmnd.
The memset of the fcp_cmnd struct needs to be moved so that it will not zero-out valid data. Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/qla2xxx/qla_nx.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/scsi/qla2xxx/qla_nx.c b/drivers/scsi/qla2xxx/qla_nx.c
index 02704fe8afa..049807cda41 100644
--- a/drivers/scsi/qla2xxx/qla_nx.c
+++ b/drivers/scsi/qla2xxx/qla_nx.c
@@ -2839,6 +2839,16 @@ sufficient_dsds:
2839 int_to_scsilun(sp->cmd->device->lun, &cmd_pkt->lun); 2839 int_to_scsilun(sp->cmd->device->lun, &cmd_pkt->lun);
2840 host_to_fcp_swap((uint8_t *)&cmd_pkt->lun, sizeof(cmd_pkt->lun)); 2840 host_to_fcp_swap((uint8_t *)&cmd_pkt->lun, sizeof(cmd_pkt->lun));
2841 2841
2842 /* build FCP_CMND IU */
2843 memset(ctx->fcp_cmnd, 0, sizeof(struct fcp_cmnd));
2844 int_to_scsilun(sp->cmd->device->lun, &ctx->fcp_cmnd->lun);
2845 ctx->fcp_cmnd->additional_cdb_len = additional_cdb_len;
2846
2847 if (cmd->sc_data_direction == DMA_TO_DEVICE)
2848 ctx->fcp_cmnd->additional_cdb_len |= 1;
2849 else if (cmd->sc_data_direction == DMA_FROM_DEVICE)
2850 ctx->fcp_cmnd->additional_cdb_len |= 2;
2851
2842 /* 2852 /*
2843 * Update tagged queuing modifier -- default is TSK_SIMPLE (0). 2853 * Update tagged queuing modifier -- default is TSK_SIMPLE (0).
2844 */ 2854 */
@@ -2855,16 +2865,6 @@ sufficient_dsds:
2855 } 2865 }
2856 } 2866 }
2857 2867
2858 /* build FCP_CMND IU */
2859 memset(ctx->fcp_cmnd, 0, sizeof(struct fcp_cmnd));
2860 int_to_scsilun(sp->cmd->device->lun, &ctx->fcp_cmnd->lun);
2861 ctx->fcp_cmnd->additional_cdb_len = additional_cdb_len;
2862
2863 if (cmd->sc_data_direction == DMA_TO_DEVICE)
2864 ctx->fcp_cmnd->additional_cdb_len |= 1;
2865 else if (cmd->sc_data_direction == DMA_FROM_DEVICE)
2866 ctx->fcp_cmnd->additional_cdb_len |= 2;
2867
2868 memcpy(ctx->fcp_cmnd->cdb, cmd->cmnd, cmd->cmd_len); 2868 memcpy(ctx->fcp_cmnd->cdb, cmd->cmnd, cmd->cmd_len);
2869 2869
2870 fcp_dl = (uint32_t *)(ctx->fcp_cmnd->cdb + 16 + 2870 fcp_dl = (uint32_t *)(ctx->fcp_cmnd->cdb + 16 +