aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/pm8001
diff options
context:
space:
mode:
authorAnand Kumar Santhanam <AnandKumar.Santhanam@pmcs.com>2013-09-17 05:07:14 -0400
committerJames Bottomley <JBottomley@Parallels.com>2013-10-25 04:58:14 -0400
commitcb993e5d50dd82e3d675225e2eff3c77951682b0 (patch)
treed50e3a5e45e17f16e9108494a775a6bf8f3c9941 /drivers/scsi/pm8001
parenta9a923e55ede94ddbf5b870b0f057da8b7cee1b9 (diff)
[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: Jack Wang <jinpu.wang@profitbricks.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/pm8001')
-rw-r--r--drivers/scsi/pm8001/pm80xx_hwi.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index 6f836d18f269..8bac5aeaa804 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -3492,8 +3492,6 @@ static int pm80xx_chip_smp_req(struct pm8001_hba_info *pm8001_ha,
3492 else 3492 else
3493 pm8001_ha->smp_exp_mode = SMP_INDIRECT; 3493 pm8001_ha->smp_exp_mode = SMP_INDIRECT;
3494 3494
3495 /* DIRECT MODE support only in spcv/ve */
3496 pm8001_ha->smp_exp_mode = SMP_DIRECT;
3497 3495
3498 tmp_addr = cpu_to_le64((u64)sg_dma_address(&task->smp_task.smp_req)); 3496 tmp_addr = cpu_to_le64((u64)sg_dma_address(&task->smp_task.smp_req));
3499 preq_dma_addr = (char *)phys_to_virt(tmp_addr); 3497 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 /* exclude top 4 bytes for SMP req header */ 3507 /* exclude top 4 bytes for SMP req header */
3510 smp_cmd.long_smp_req.long_req_addr = 3508 smp_cmd.long_smp_req.long_req_addr =
3511 cpu_to_le64((u64)sg_dma_address 3509 cpu_to_le64((u64)sg_dma_address
3512 (&task->smp_task.smp_req) - 4); 3510 (&task->smp_task.smp_req) + 4);
3513 /* exclude 4 bytes for SMP req header and CRC */ 3511 /* exclude 4 bytes for SMP req header and CRC */
3514 smp_cmd.long_smp_req.long_req_size = 3512 smp_cmd.long_smp_req.long_req_size =
3515 cpu_to_le32((u32)sg_dma_len(&task->smp_task.smp_req)-8); 3513 cpu_to_le32((u32)sg_dma_len(&task->smp_task.smp_req)-8);