ld_pd_map.h revision 2ffc8bca2d4d633ffdea78ed925cd1ca63584844
/*
*
* Solaris MegaRAID device driver for SAS2.0 controllers
* Copyright (c) 2008-2012, LSI Logic Corporation.
* All rights reserved.
*
* Version:
* Author:
* Swaminathan K S
* Arun Chandrashekhar
* Manju R
* Rasheed
* Shakeel Bukhari
*/
#ifndef _LD_PD_MAP
#define _LD_PD_MAP
#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
/* SCSI CDB definitions */
#define READ_6 0x08
#define READ_16 0x88
#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
union desc_value {
struct {
} u1;
};
typedef struct _LD_LOAD_BALANCE_INFO
{
#pragma pack(1)
typedef struct _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 {
/* resvd[3:1], preferredCpu[0] */
#define RAID_CTX_SPANARM_ARM_SHIFT (0)
#define RAID_CTX_SPANARM_ARM_MASK (0x1f)
#define RAID_CTX_SPANARM_SPAN_SHIFT (5)
#define RAID_CTX_SPANARM_SPAN_MASK (0xE0)
/*
* RAID SCSI IO Request Message
* Total SGE count will be one less
* than _MPI2_SCSI_IO_REQUEST
*/
typedef struct _MPI2_RAID_SCSI_IO_REQUEST
{
/*
* define region lock types
*/
typedef enum _REGION_TYPE {
REGION_TYPE_UNUSED = 0, /* lock is currently not active */
} 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;
struct mrsas_init_frame2 {
};
/*
* Request descriptor types
*/
#define MPI2_REQ_DESCRIPT_FLAGS_LD_IO 0x7
#define MPI2_REQ_DESCRIPT_FLAGS_MFA 0x1
#define MPI2_REQ_DESCRIPT_FLAGS_NO_LOCK 0x2
#define MPI2_REQ_DESCRIPT_FLAGS_TYPE_SHIFT 1
/*
* MPT RAID MFA IO Descriptor.
*/
typedef struct _MR_RAID_MFA_IO_DESCRIPTOR {
/* union of Request Descriptors */
typedef union _MRSAS_REQUEST_DESCRIPTOR_UNION
{
#pragma pack()
enum {
MRSAS_SCSI_VARIABLE_LENGTH_CMD = 0x7F,
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)
#define IEEE_SGE_FLAGS_IOCDDR_ADDR (0x01)
#define IEEE_SGE_FLAGS_IOCPLB_ADDR (0x02)
#define IEEE_SGE_FLAGS_IOCPLBNTA_ADDR (0x03)
#define IEEE_SGE_FLAGS_CHAIN_ELEMENT (0x80)
#define IEEE_SGE_FLAGS_END_OF_LIST (0x40)
#endif /* _LD_PD_MAP */