[SCSI] pm8001: fix endian issues with SAS address
authorjack wang <jack_wang@usish.com>
Mon, 7 Dec 2009 09:22:47 +0000 (17:22 +0800)
committerJames Bottomley <James.Bottomley@suse.de>
Thu, 10 Dec 2009 16:02:22 +0000 (10:02 -0600)
Signed-off-by: Jack Wang <jack_wang@usish.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/pm8001/pm8001_hwi.c
drivers/scsi/pm8001/pm8001_hwi.h

index 3a121fbd4fc5c20f97185482edfcfff25ada909e..b4426b5b50bc44aa818037b6bbc71a9c6ef6078e 100644 (file)
@@ -3823,7 +3823,8 @@ static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
        u32 opc = OPC_INB_SSPINIIOSTART;
        memset(&ssp_cmd, 0, sizeof(ssp_cmd));
        memcpy(ssp_cmd.ssp_iu.lun, task->ssp_task.LUN, 8);
-       ssp_cmd.dir_m_tlr = data_dir_flags[task->data_dir] << 8 | 0x0;/*0 for
+       ssp_cmd.dir_m_tlr =
+               cpu_to_le32(data_dir_flags[task->data_dir] << 8 | 0x0);/*0 for
        SAS 1.1 compatible TLR*/
        ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
        ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
@@ -3894,7 +3895,7 @@ static int pm8001_chip_sata_req(struct pm8001_hba_info *pm8001_ha,
                }
        }
        if (task->ata_task.use_ncq && pm8001_get_ncq_tag(task, &hdr_tag))
-               ncg_tag = cpu_to_le32(hdr_tag);
+               ncg_tag = hdr_tag;
        dir = data_dir_flags[task->data_dir] << 8;
        sata_cmd.tag = cpu_to_le32(tag);
        sata_cmd.device_id = cpu_to_le32(pm8001_ha_dev->device_id);
@@ -4039,7 +4040,7 @@ static int pm8001_chip_reg_dev_req(struct pm8001_hba_info *pm8001_ha,
                ((stp_sspsmp_sata & 0x03) * 0x10000000));
        payload.firstburstsize_ITNexustimeout =
                cpu_to_le32(ITNT | (firstBurstSize * 0x10000));
-       memcpy(&payload.sas_addr_hi, pm8001_dev->sas_device->sas_addr,
+       memcpy(payload.sas_addr, pm8001_dev->sas_device->sas_addr,
                SAS_ADDR_SIZE);
        rc = mpi_build_cmd(pm8001_ha, circularQ, opc, &payload);
        return rc;
index 96e4daa68b8fafd41c9ca0138edf9abb6a694e15..833a5201eda4dd0b640c0e33d5eac0212fd7acd4 100644 (file)
@@ -242,8 +242,7 @@ struct reg_dev_req {
        __le32  phyid_portid;
        __le32  dtype_dlr_retry;
        __le32  firstburstsize_ITNexustimeout;
-       u32     sas_addr_hi;
-       u32     sas_addr_low;
+       u8      sas_addr[SAS_ADDR_SIZE];
        __le32  upper_device_id;
        u32     reserved[8];
 } __attribute__((packed, aligned(4)));