linux/include/linux/cciss_defs.h
<<
>>
Prefs
   1#ifndef CCISS_DEFS_H
   2#define CCISS_DEFS_H
   3
   4#include <linux/types.h>
   5
   6/* general boundary definitions */
   7#define SENSEINFOBYTES          32 /* note that this value may vary
   8                                      between host implementations */
   9
  10/* Command Status value */
  11#define CMD_SUCCESS             0x0000
  12#define CMD_TARGET_STATUS       0x0001
  13#define CMD_DATA_UNDERRUN       0x0002
  14#define CMD_DATA_OVERRUN        0x0003
  15#define CMD_INVALID             0x0004
  16#define CMD_PROTOCOL_ERR        0x0005
  17#define CMD_HARDWARE_ERR        0x0006
  18#define CMD_CONNECTION_LOST     0x0007
  19#define CMD_ABORTED             0x0008
  20#define CMD_ABORT_FAILED        0x0009
  21#define CMD_UNSOLICITED_ABORT   0x000A
  22#define CMD_TIMEOUT             0x000B
  23#define CMD_UNABORTABLE         0x000C
  24
  25/* transfer direction */
  26#define XFER_NONE               0x00
  27#define XFER_WRITE              0x01
  28#define XFER_READ               0x02
  29#define XFER_RSVD               0x03
  30
  31/* task attribute */
  32#define ATTR_UNTAGGED           0x00
  33#define ATTR_SIMPLE             0x04
  34#define ATTR_HEADOFQUEUE        0x05
  35#define ATTR_ORDERED            0x06
  36#define ATTR_ACA                0x07
  37
  38/* cdb type */
  39#define TYPE_CMD                                0x00
  40#define TYPE_MSG                                0x01
  41
  42/* Type defs used in the following structs */
  43#define BYTE __u8
  44#define WORD __u16
  45#define HWORD __u16
  46#define DWORD __u32
  47
  48#define CISS_MAX_LUN    1024
  49
  50#define LEVEL2LUN   1 /* index into Target(x) structure, due to byte swapping */
  51#define LEVEL3LUN   0
  52
  53#pragma pack(1)
  54
  55/* Command List Structure */
  56typedef union _SCSI3Addr_struct {
  57   struct {
  58    BYTE Dev;
  59    BYTE Bus:6;
  60    BYTE Mode:2;        /* b00 */
  61  } PeripDev;
  62   struct {
  63    BYTE DevLSB;
  64    BYTE DevMSB:6;
  65    BYTE Mode:2;        /* b01 */
  66  } LogDev;
  67   struct {
  68    BYTE Dev:5;
  69    BYTE Bus:3;
  70    BYTE Targ:6;
  71    BYTE Mode:2;        /* b10 */
  72  } LogUnit;
  73} SCSI3Addr_struct;
  74
  75typedef struct _PhysDevAddr_struct {
  76  DWORD             TargetId:24;
  77  DWORD             Bus:6;
  78  DWORD             Mode:2;
  79  SCSI3Addr_struct  Target[2]; /* 2 level target device addr */
  80} PhysDevAddr_struct;
  81
  82typedef struct _LogDevAddr_struct {
  83  DWORD            VolId:30;
  84  DWORD            Mode:2;
  85  BYTE             reserved[4];
  86} LogDevAddr_struct;
  87
  88typedef union _LUNAddr_struct {
  89  BYTE               LunAddrBytes[8];
  90  SCSI3Addr_struct   SCSI3Lun[4];
  91  PhysDevAddr_struct PhysDev;
  92  LogDevAddr_struct  LogDev;
  93} LUNAddr_struct;
  94
  95typedef struct _RequestBlock_struct {
  96  BYTE   CDBLen;
  97  struct {
  98    BYTE Type:3;
  99    BYTE Attribute:3;
 100    BYTE Direction:2;
 101  } Type;
 102  HWORD  Timeout;
 103  BYTE   CDB[16];
 104} RequestBlock_struct;
 105
 106typedef union _MoreErrInfo_struct{
 107  struct {
 108    BYTE  Reserved[3];
 109    BYTE  Type;
 110    DWORD ErrorInfo;
 111  } Common_Info;
 112  struct{
 113    BYTE  Reserved[2];
 114    BYTE  offense_size; /* size of offending entry */
 115    BYTE  offense_num;  /* byte # of offense 0-base */
 116    DWORD offense_value;
 117  } Invalid_Cmd;
 118} MoreErrInfo_struct;
 119typedef struct _ErrorInfo_struct {
 120  BYTE               ScsiStatus;
 121  BYTE               SenseLen;
 122  HWORD              CommandStatus;
 123  DWORD              ResidualCnt;
 124  MoreErrInfo_struct MoreErrInfo;
 125  BYTE               SenseInfo[SENSEINFOBYTES];
 126} ErrorInfo_struct;
 127
 128#pragma pack()
 129
 130#endif /* CCISS_DEFS_H */
 131
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.