📄 cciss_cmd.h
字号:
#ifndef CCISS_CMD_H#define CCISS_CMD_H//###########################################################################//DEFINES//############################################################################define CISS_VERSION "1.00"//general boundary defintions#define SENSEINFOBYTES 32//note that this value may vary between host implementations#define MAXSGENTRIES 31#define MAXREPLYQS 256//Command Status value#define CMD_SUCCESS 0x0000#define CMD_TARGET_STATUS 0x0001#define CMD_DATA_UNDERRUN 0x0002#define CMD_DATA_OVERRUN 0x0003#define CMD_INVALID 0x0004#define CMD_PROTOCOL_ERR 0x0005#define CMD_HARDWARE_ERR 0x0006#define CMD_CONNECTION_LOST 0x0007#define CMD_ABORTED 0x0008#define CMD_ABORT_FAILED 0x0009#define CMD_UNSOLICITED_ABORT 0x000A#define CMD_TIMEOUT 0x000B#define CMD_UNABORTABLE 0x000C//transfer direction#define XFER_NONE 0x00#define XFER_WRITE 0x01#define XFER_READ 0x02#define XFER_RSVD 0x03//task attribute#define ATTR_UNTAGGED 0x00#define ATTR_SIMPLE 0x04#define ATTR_HEADOFQUEUE 0x05#define ATTR_ORDERED 0x06#define ATTR_ACA 0x07//cdb type#define TYPE_CMD 0x00#define TYPE_MSG 0x01//config space register offsets#define CFG_VENDORID 0x00#define CFG_DEVICEID 0x02#define CFG_I2OBAR 0x10#define CFG_MEM1BAR 0x14//i2o space register offsets#define I2O_IBDB_SET 0x20#define I2O_IBDB_CLEAR 0x70#define I2O_INT_STATUS 0x30#define I2O_INT_MASK 0x34#define I2O_IBPOST_Q 0x40#define I2O_OBPOST_Q 0x44//Configuration Table#define CFGTBL_ChangeReq 0x00000001l#define CFGTBL_AccCmds 0x00000001l#define CFGTBL_Trans_Simple 0x00000002l#define CFGTBL_BusType_Ultra2 0x00000001l#define CFGTBL_BusType_Ultra3 0x00000002l#define CFGTBL_BusType_Fibre1G 0x00000100l#define CFGTBL_BusType_Fibre2G 0x00000200ltypedef struct _vals32{ __u32 lower; __u32 upper;} vals32;typedef union _u64bit{ vals32 val32; __u64 val;} u64bit;// Type defs used in the following structs#define BYTE __u8#define WORD __u16#define HWORD __u16#define DWORD __u32#define QWORD vals32 //###########################################################################//STRUCTURES//############################################################################define CISS_MAX_LUN 16 // SCSI-3 Cmmands #pragma pack(1) #define CISS_INQUIRY 0x12//Date returnedtypedef struct _InquiryData_struct{ BYTE data_byte[36];} InquiryData_struct;#define CISS_REPORT_LOG 0xc2 /* Report Logical LUNs */// Data returnedtypedef struct _ReportLUNdata_struct{ BYTE LUNListLength[4]; DWORD reserved; BYTE LUN[CISS_MAX_LUN][8];} ReportLunData_struct;#define CCISS_READ_CAPACITY 0x25 /* Read Capacity */ typedef struct _ReadCapdata_struct{ BYTE total_size[4]; // Total size in blocks BYTE block_size[4]; // Size of blocks in bytes} ReadCapdata_struct;// 12 byte commands not implemented in firmware yet. // #define CCISS_READ 0xa8 // Read(12)// #define CCISS_WRITE 0xaa // Write(12) #define CCISS_READ 0x28 // Read(10) #define CCISS_WRITE 0x2a // Write(10)//Command List Structuretypedef union _SCSI3Addr_struct { struct { BYTE Bus:6; BYTE Mode:2; // b00 BYTE Dev; } PeripDev; struct { BYTE DevMSB:6; BYTE Mode:2; // b01 BYTE DevLSB; } LogDev; struct { BYTE Targ:6; BYTE Mode:2; // b10 BYTE Dev:5; BYTE Bus:3; } LogUnit;} SCSI3Addr_struct;typedef struct _PhysDevAddr_struct { DWORD TargetId:24; DWORD Bus:6; DWORD Mode:2; SCSI3Addr_struct Target[2]; //2 level target device addr} PhysDevAddr_struct; typedef struct _LogDevAddr_struct { DWORD VolId:30; DWORD Mode:2; BYTE reserved[4];} LogDevAddr_struct;typedef union _LUNAddr_struct { BYTE LunAddrBytes[8]; SCSI3Addr_struct SCSI3Lun[4]; PhysDevAddr_struct PhysDev; LogDevAddr_struct LogDev;} LUNAddr_struct;typedef struct _CommandListHeader_struct { BYTE ReplyQueue; BYTE SGList; HWORD SGTotal; QWORD Tag; LUNAddr_struct LUN;} CommandListHeader_struct;typedef struct _RequestBlock_struct { BYTE CDBLen; struct { BYTE Type:3; BYTE Attribute:3; BYTE Direction:2; } Type; HWORD Timeout; BYTE CDB[16];} RequestBlock_struct;typedef struct _ErrDescriptor_struct { QWORD Addr; DWORD Len;} ErrDescriptor_struct;typedef struct _SGDescriptor_struct { QWORD Addr; DWORD Len; DWORD Ext;} SGDescriptor_struct;typedef union _MoreErrInfo_struct{ struct { BYTE Reserved[3]; BYTE Type; DWORD ErrorInfo; }Common_Info; struct{ BYTE Reserved[2]; BYTE offense_size;//size of offending entry BYTE offense_num; //byte # of offense 0-base DWORD offense_value; }Invalid_Cmd;}MoreErrInfo_struct;typedef struct _ErrorInfo_struct { BYTE ScsiStatus; BYTE SenseLen; HWORD CommandStatus; DWORD ResidualCnt; MoreErrInfo_struct MoreErrInfo; BYTE SenseInfo[SENSEINFOBYTES];} ErrorInfo_struct;/* Command types */#define CMD_RWREQ 0x00#define CMD_IOCTL_PEND 0x01#define CMD_IOCTL_DONE 0x02typedef struct _CommandList_struct { CommandListHeader_struct Header; RequestBlock_struct Request; ErrDescriptor_struct ErrDesc; SGDescriptor_struct SG[MAXSGENTRIES]; /* information associated with the command */ __u32 busaddr; /* physical addres of this record */ ErrorInfo_struct * err_info; /* pointer to the allocated mem */ int cmd_type; struct _CommandList_struct *prev; struct _CommandList_struct *next; struct buffer_head * bh;} CommandList_struct;//Configuration Table Structuretypedef struct _HostWrite_struct { DWORD TransportRequest; DWORD Reserved; DWORD CoalIntDelay; DWORD CoalIntCount;} HostWrite_struct;typedef struct _CfgTable_struct { BYTE Signature[4]; DWORD SpecValence; DWORD TransportSupport; DWORD TransportActive; HostWrite_struct HostWrite; DWORD CmdsOutMax; DWORD BusTypes; DWORD Reserved; BYTE ServerName[16]; DWORD HeartBeat;} CfgTable_struct;#pragma pack() #endif // CCISS_CMD_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -