0001
0002 #ifndef CCISS_DEFS_H
0003 #define CCISS_DEFS_H
0004
0005 #include <linux/types.h>
0006
0007
0008 #define SENSEINFOBYTES 32
0009
0010
0011
0012 #define CMD_SUCCESS 0x0000
0013 #define CMD_TARGET_STATUS 0x0001
0014 #define CMD_DATA_UNDERRUN 0x0002
0015 #define CMD_DATA_OVERRUN 0x0003
0016 #define CMD_INVALID 0x0004
0017 #define CMD_PROTOCOL_ERR 0x0005
0018 #define CMD_HARDWARE_ERR 0x0006
0019 #define CMD_CONNECTION_LOST 0x0007
0020 #define CMD_ABORTED 0x0008
0021 #define CMD_ABORT_FAILED 0x0009
0022 #define CMD_UNSOLICITED_ABORT 0x000A
0023 #define CMD_TIMEOUT 0x000B
0024 #define CMD_UNABORTABLE 0x000C
0025
0026
0027 #define XFER_NONE 0x00
0028 #define XFER_WRITE 0x01
0029 #define XFER_READ 0x02
0030 #define XFER_RSVD 0x03
0031
0032
0033 #define ATTR_UNTAGGED 0x00
0034 #define ATTR_SIMPLE 0x04
0035 #define ATTR_HEADOFQUEUE 0x05
0036 #define ATTR_ORDERED 0x06
0037 #define ATTR_ACA 0x07
0038
0039
0040 #define TYPE_CMD 0x00
0041 #define TYPE_MSG 0x01
0042
0043
0044 #define BYTE __u8
0045 #define WORD __u16
0046 #define HWORD __u16
0047 #define DWORD __u32
0048
0049 #define CISS_MAX_LUN 1024
0050
0051 #define LEVEL2LUN 1
0052 #define LEVEL3LUN 0
0053
0054 #pragma pack(1)
0055
0056
0057 typedef union _SCSI3Addr_struct {
0058 struct {
0059 BYTE Dev;
0060 BYTE Bus:6;
0061 BYTE Mode:2;
0062 } PeripDev;
0063 struct {
0064 BYTE DevLSB;
0065 BYTE DevMSB:6;
0066 BYTE Mode:2;
0067 } LogDev;
0068 struct {
0069 BYTE Dev:5;
0070 BYTE Bus:3;
0071 BYTE Targ:6;
0072 BYTE Mode:2;
0073 } LogUnit;
0074 } SCSI3Addr_struct;
0075
0076 typedef struct _PhysDevAddr_struct {
0077 DWORD TargetId:24;
0078 DWORD Bus:6;
0079 DWORD Mode:2;
0080 SCSI3Addr_struct Target[2];
0081 } PhysDevAddr_struct;
0082
0083 typedef struct _LogDevAddr_struct {
0084 DWORD VolId:30;
0085 DWORD Mode:2;
0086 BYTE reserved[4];
0087 } LogDevAddr_struct;
0088
0089 typedef union _LUNAddr_struct {
0090 BYTE LunAddrBytes[8];
0091 SCSI3Addr_struct SCSI3Lun[4];
0092 PhysDevAddr_struct PhysDev;
0093 LogDevAddr_struct LogDev;
0094 } LUNAddr_struct;
0095
0096 typedef struct _RequestBlock_struct {
0097 BYTE CDBLen;
0098 struct {
0099 BYTE Type:3;
0100 BYTE Attribute:3;
0101 BYTE Direction:2;
0102 } Type;
0103 HWORD Timeout;
0104 BYTE CDB[16];
0105 } RequestBlock_struct;
0106
0107 typedef union _MoreErrInfo_struct{
0108 struct {
0109 BYTE Reserved[3];
0110 BYTE Type;
0111 DWORD ErrorInfo;
0112 } Common_Info;
0113 struct{
0114 BYTE Reserved[2];
0115 BYTE offense_size;
0116 BYTE offense_num;
0117 DWORD offense_value;
0118 } Invalid_Cmd;
0119 } MoreErrInfo_struct;
0120 typedef struct _ErrorInfo_struct {
0121 BYTE ScsiStatus;
0122 BYTE SenseLen;
0123 HWORD CommandStatus;
0124 DWORD ResidualCnt;
0125 MoreErrInfo_struct MoreErrInfo;
0126 BYTE SenseInfo[SENSEINFOBYTES];
0127 } ErrorInfo_struct;
0128
0129 #pragma pack()
0130
0131 #endif