OSDN Git Service

[SCSI] megaraid_sas: Big endian code related fixes
authorSumit.Saxena@lsi.com <Sumit.Saxena@lsi.com>
Wed, 12 Feb 2014 18:07:46 +0000 (23:37 +0530)
committerJames Bottomley <JBottomley@Parallels.com>
Sat, 15 Mar 2014 17:19:20 +0000 (10:19 -0700)
Signed-off-by: Sumit Saxena <sumit.saxena@lsi.com>
Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/megaraid/megaraid_sas.h
drivers/scsi/megaraid/megaraid_sas_fp.c
drivers/scsi/megaraid/megaraid_sas_fusion.c

index 34452ea..a80e13e 100644 (file)
@@ -1347,9 +1347,15 @@ struct megasas_cmd;
 union megasas_evt_class_locale {
 
        struct {
+#ifndef __BIG_ENDIAN_BITFIELD
                u16 locale;
                u8 reserved;
                s8 class;
+#else
+               s8 class;
+               u8 reserved;
+               u16 locale;
+#endif
        } __attribute__ ((packed)) members;
 
        u32 word;
@@ -1728,7 +1734,7 @@ MR_BuildRaidContext(struct megasas_instance *instance,
                    struct IO_REQUEST_INFO *io_info,
                    struct RAID_CONTEXT *pRAID_Context,
                    struct MR_FW_RAID_MAP_ALL *map, u8 **raidLUN);
-u16 MR_TargetIdToLdGet(u32 ldTgtId, struct MR_FW_RAID_MAP_ALL *map);
+u8 MR_TargetIdToLdGet(u32 ldTgtId, struct MR_FW_RAID_MAP_ALL *map);
 struct MR_LD_RAID *MR_LdRaidGet(u32 ld, struct MR_FW_RAID_MAP_ALL *map);
 u16 MR_ArPdGet(u32 ar, u32 arm, struct MR_FW_RAID_MAP_ALL *map);
 u16 MR_LdSpanArrayGet(u32 ld, u32 span, struct MR_FW_RAID_MAP_ALL *map);
index e24b6eb..2f3bd55 100644 (file)
@@ -143,12 +143,12 @@ u16 MR_PdDevHandleGet(u32 pd, struct MR_FW_RAID_MAP_ALL *map)
 
 u16 MR_GetLDTgtId(u32 ld, struct MR_FW_RAID_MAP_ALL *map)
 {
-       return map->raidMap.ldSpanMap[ld].ldRaid.targetId;
+       return le16_to_cpu(map->raidMap.ldSpanMap[ld].ldRaid.targetId);
 }
 
-u16 MR_TargetIdToLdGet(u32 ldTgtId, struct MR_FW_RAID_MAP_ALL *map)
+u8 MR_TargetIdToLdGet(u32 ldTgtId, struct MR_FW_RAID_MAP_ALL *map)
 {
-       return le16_to_cpu(map->raidMap.ldTgtIdToLd[ldTgtId]);
+       return map->raidMap.ldTgtIdToLd[ldTgtId];
 }
 
 static struct MR_LD_SPAN *MR_LdSpanPtrGet(u32 ld, u32 span,
index 4544c27..ba32317 100644 (file)
@@ -1607,8 +1607,8 @@ megasas_build_dcdb_fusion(struct megasas_instance *instance,
                        MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT;
                if ((instance->pdev->device == PCI_DEVICE_ID_LSI_INVADER) ||
                        (instance->pdev->device == PCI_DEVICE_ID_LSI_FURY))
-                       io_request->IoFlags |=
-                               MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH;
+                       io_request->IoFlags |= cpu_to_le16(
+                               MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH);
                cmd->request_desc->SCSIIO.RequestFlags =
                        (MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY <<
                         MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
@@ -2425,7 +2425,7 @@ int megasas_reset_fusion(struct Scsi_Host *shost)
                                        instance->
                                        cmd_list[cmd_fusion->sync_cmd_idx];
                                        if (cmd_mfi->frame->dcmd.opcode ==
-                                           MR_DCMD_LD_MAP_GET_INFO) {
+                                           cpu_to_le32(MR_DCMD_LD_MAP_GET_INFO)) {
                                                megasas_return_cmd(instance,
                                                                   cmd_mfi);
                                                megasas_return_cmd_fusion(