Print this page

        

*** 12,26 **** * Manju R * Rasheed * Shakeel Bukhari */ ! #ifndef INCLUDE_LD_PD_MAP ! #define INCLUDE_LD_PD_MAP #include <sys/scsi/scsi.h> #include "fusion.h" /* raid->write_mode; raid->read_ahead; dcmd->state */ /* Write through */ #define WRITE_THROUGH 0 /* Delayed Write */ #define WRITE_BACK 1 --- 12,28 ---- * Manju R * Rasheed * Shakeel Bukhari */ ! #ifndef _LD_PD_MAP ! #define _LD_PD_MAP #include <sys/scsi/scsi.h> #include "fusion.h" + struct mrsas_instance; /* This will be defined in mr_sas.h */ + /* raid->write_mode; raid->read_ahead; dcmd->state */ /* Write through */ #define WRITE_THROUGH 0 /* Delayed Write */ #define WRITE_BACK 1
*** 31,43 **** #define READ_10 0x28 #define READ_12 0xA8 #define WRITE_16 0x8A #define WRITE_10 0x2A ! // maximum disks per array #define MAX_ROW_SIZE 32 ! // maximum spans per logical drive #define MAX_SPAN_DEPTH 8 #define MEGASAS_LOAD_BALANCE_FLAG 0x1 #define MR_DEFAULT_IO_TIMEOUT 20 --- 33,45 ---- #define READ_10 0x28 #define READ_12 0xA8 #define WRITE_16 0x8A #define WRITE_10 0x2A ! /* maximum disks per array */ #define MAX_ROW_SIZE 32 ! /* maximum spans per logical drive */ #define MAX_SPAN_DEPTH 8 #define MEGASAS_LOAD_BALANCE_FLAG 0x1 #define MR_DEFAULT_IO_TIMEOUT 20
*** 63,89 **** MR_FW_RAID_MAP raidMap; MR_LD_SPAN_MAP ldSpanMap[MAX_LOGICAL_DRIVES - 1]; } MR_FW_RAID_MAP_ALL; /* ! * Raid Context structure which describes MegaRAID specific IO Paramenters * This resides at offset 0x60 where the SGL normally starts in MPT IO Frames */ typedef struct _MPI2_SCSI_IO_VENDOR_UNIQUE { ! U8 nsegType; // 0x00 nseg[7:4], Type[3:0] */ ! U8 resvd0; // 0x01 U16 timeoutValue; /* 0x02 -0x03 */ U8 regLockFlags; /* 0x04 */ U8 reservedForHw1; /* 0x05 */ U16 ldTargetId; /* 0x06 - 0x07 */ U64 regLockRowLBA; /* 0x08 - 0x0F */ U32 regLockLength; /* 0x10 - 0x13 */ U16 nextLMId; /* 0x14 - 0x15 */ U8 extStatus; /* 0x16 */ U8 status; /* 0x17 status */ ! U8 RAIDFlags; /* 0x18 resvd[7:6], ioSubType[5:4], resvd[3:1], preferredCpu[0] */ ! U8 numSGE; /* 0x19 numSge; not including chain entries*/ U16 configSeqNum; /* 0x1A -0x1B */ U8 spanArm; /* 0x1C span[7:5], arm[4:0] */ U8 resvd2[3]; /* 0x1D-0x1f */ } MPI2_SCSI_IO_VENDOR_UNIQUE, MPI25_SCSI_IO_VENDOR_UNIQUE; --- 65,92 ---- MR_FW_RAID_MAP raidMap; MR_LD_SPAN_MAP ldSpanMap[MAX_LOGICAL_DRIVES - 1]; } MR_FW_RAID_MAP_ALL; /* ! * Raid Context structure which describes MegaRAID specific IO Parameters * This resides at offset 0x60 where the SGL normally starts in MPT IO Frames */ typedef struct _MPI2_SCSI_IO_VENDOR_UNIQUE { ! U8 nsegType; /* 0x00 nseg[7:4], Type[3:0] */ ! U8 resvd0; /* 0x01 */ U16 timeoutValue; /* 0x02 -0x03 */ U8 regLockFlags; /* 0x04 */ U8 reservedForHw1; /* 0x05 */ U16 ldTargetId; /* 0x06 - 0x07 */ U64 regLockRowLBA; /* 0x08 - 0x0F */ U32 regLockLength; /* 0x10 - 0x13 */ U16 nextLMId; /* 0x14 - 0x15 */ U8 extStatus; /* 0x16 */ U8 status; /* 0x17 status */ ! U8 RAIDFlags; /* 0x18 resvd[7:6], ioSubType[5:4], */ ! /* resvd[3:1], preferredCpu[0] */ ! U8 numSGE; /* 0x19 numSge; not including chain entries */ U16 configSeqNum; /* 0x1A -0x1B */ U8 spanArm; /* 0x1C span[7:5], arm[4:0] */ U8 resvd2[3]; /* 0x1D-0x1f */ } MPI2_SCSI_IO_VENDOR_UNIQUE, MPI25_SCSI_IO_VENDOR_UNIQUE;
*** 137,161 **** /* * define region lock types */ typedef enum _REGION_TYPE { ! REGION_TYPE_UNUSED = 0, // lock is currently not active ! REGION_TYPE_SHARED_READ = 1, // shared lock (for reads) REGION_TYPE_SHARED_WRITE = 2, ! REGION_TYPE_EXCLUSIVE = 3, // exclusive lock (for writes) } REGION_TYPE; #define DM_PATH_MAXPATH 2 #define DM_PATH_FIRSTPATH 0 #define DM_PATH_SECONDPATH 1 ! // declare valid Region locking values typedef enum _REGION_LOCK { REGION_LOCK_BYPASS = 0, ! // for RAID 6 single-drive failure REGION_LOCK_UNCOND_SHARED_READ = 1, REGION_LOCK_UNCOND_SHARED_WRITE = 2, REGION_LOCK_UNCOND_SHARED_OTHER = 3, REGION_LOCK_UNCOND_SHARED_EXCLUSIVE = 0xFF } REGION_LOCK; --- 140,164 ---- /* * define region lock types */ typedef enum _REGION_TYPE { ! REGION_TYPE_UNUSED = 0, /* lock is currently not active */ ! REGION_TYPE_SHARED_READ = 1, /* shared lock (for reads) */ REGION_TYPE_SHARED_WRITE = 2, ! REGION_TYPE_EXCLUSIVE = 3 /* exclusive lock (for writes) */ } REGION_TYPE; #define DM_PATH_MAXPATH 2 #define DM_PATH_FIRSTPATH 0 #define DM_PATH_SECONDPATH 1 ! /* declare valid Region locking values */ typedef enum _REGION_LOCK { REGION_LOCK_BYPASS = 0, ! /* for RAID 6 single-drive failure */ REGION_LOCK_UNCOND_SHARED_READ = 1, REGION_LOCK_UNCOND_SHARED_WRITE = 2, REGION_LOCK_UNCOND_SHARED_OTHER = 3, REGION_LOCK_UNCOND_SHARED_EXCLUSIVE = 0xFF } REGION_LOCK;
*** 223,233 **** MRSAS_SCSI_VARIABLE_LENGTH_CMD = 0x7F, MRSAS_SCSI_SERVICE_ACTION_READ32 = 0x9, MRSAS_SCSI_SERVICE_ACTION_WRITE32 = 0xB, MRSAS_SCSI_ADDL_CDB_LEN = 0x18, MRSAS_RD_WR_PROTECT = 0x20, ! MRSAS_EEDPBLOCKSIZE = 512, }; #define IEEE_SGE_FLAGS_ADDR_MASK (0x03) #define IEEE_SGE_FLAGS_SYSTEM_ADDR (0x00) --- 226,236 ---- MRSAS_SCSI_VARIABLE_LENGTH_CMD = 0x7F, MRSAS_SCSI_SERVICE_ACTION_READ32 = 0x9, MRSAS_SCSI_SERVICE_ACTION_WRITE32 = 0xB, MRSAS_SCSI_ADDL_CDB_LEN = 0x18, MRSAS_RD_WR_PROTECT = 0x20, ! MRSAS_EEDPBLOCKSIZE = 512 }; #define IEEE_SGE_FLAGS_ADDR_MASK (0x03) #define IEEE_SGE_FLAGS_SYSTEM_ADDR (0x00)
*** 238,243 **** #define IEEE_SGE_FLAGS_END_OF_LIST (0x40) U8 MR_ValidateMapInfo(MR_FW_RAID_MAP_ALL *map, PLD_LOAD_BALANCE_INFO lbInfo); U16 MR_CheckDIF(U32, MR_FW_RAID_MAP_ALL *); ! #endif // INCLUDE_LD_PD_MAP --- 241,249 ---- #define IEEE_SGE_FLAGS_END_OF_LIST (0x40) U8 MR_ValidateMapInfo(MR_FW_RAID_MAP_ALL *map, PLD_LOAD_BALANCE_INFO lbInfo); U16 MR_CheckDIF(U32, MR_FW_RAID_MAP_ALL *); ! U8 MR_BuildRaidContext(struct mrsas_instance *, struct IO_REQUEST_INFO *, ! MPI2_SCSI_IO_VENDOR_UNIQUE *, MR_FW_RAID_MAP_ALL *); ! ! #endif /* _LD_PD_MAP */