diff options
author | Saurav Kashyap <saurav.kashyap@qlogic.com> | 2011-08-16 14:29:29 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-08-27 10:22:09 -0400 |
commit | 51cc9a8e5f610a0d0881b45410c37890e02a2f76 (patch) | |
tree | 3824570785da64af774d7e438a11d065b5ab9f9c | |
parent | 58b48576966ed0afd3f63ef17480ec12748a7119 (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>
-rw-r--r-- | drivers/scsi/qla2xxx/qla_nx.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/scsi/qla2xxx/qla_nx.c b/drivers/scsi/qla2xxx/qla_nx.c index 02704fe8afab..049807cda419 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 + |