提交 cb993e5d 编写于 作者: A Anand Kumar Santhanam 提交者: James Bottomley

[SCSI] pm80xx: Indirect SMP request fix.

Fix for indirect data transfer mode in case of SMP request.

Signed-off-by: Anandkumar.Santhanam@pmcs.com
Reviewed-by: NJack Wang <jinpu.wang@profitbricks.com>
Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
上级 a9a923e5
...@@ -3492,8 +3492,6 @@ static int pm80xx_chip_smp_req(struct pm8001_hba_info *pm8001_ha, ...@@ -3492,8 +3492,6 @@ static int pm80xx_chip_smp_req(struct pm8001_hba_info *pm8001_ha,
else else
pm8001_ha->smp_exp_mode = SMP_INDIRECT; pm8001_ha->smp_exp_mode = SMP_INDIRECT;
/* DIRECT MODE support only in spcv/ve */
pm8001_ha->smp_exp_mode = SMP_DIRECT;
tmp_addr = cpu_to_le64((u64)sg_dma_address(&task->smp_task.smp_req)); tmp_addr = cpu_to_le64((u64)sg_dma_address(&task->smp_task.smp_req));
preq_dma_addr = (char *)phys_to_virt(tmp_addr); preq_dma_addr = (char *)phys_to_virt(tmp_addr);
...@@ -3509,7 +3507,7 @@ static int pm80xx_chip_smp_req(struct pm8001_hba_info *pm8001_ha, ...@@ -3509,7 +3507,7 @@ static int pm80xx_chip_smp_req(struct pm8001_hba_info *pm8001_ha,
/* exclude top 4 bytes for SMP req header */ /* exclude top 4 bytes for SMP req header */
smp_cmd.long_smp_req.long_req_addr = smp_cmd.long_smp_req.long_req_addr =
cpu_to_le64((u64)sg_dma_address cpu_to_le64((u64)sg_dma_address
(&task->smp_task.smp_req) - 4); (&task->smp_task.smp_req) + 4);
/* exclude 4 bytes for SMP req header and CRC */ /* exclude 4 bytes for SMP req header and CRC */
smp_cmd.long_smp_req.long_req_size = smp_cmd.long_smp_req.long_req_size =
cpu_to_le32((u32)sg_dma_len(&task->smp_task.smp_req)-8); cpu_to_le32((u32)sg_dma_len(&task->smp_task.smp_req)-8);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册