brintos

brintos / linux-shallow public Read only

0
0
Text · 3.2 KiB · 5cbdfe9 Raw
132 lines · c
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */2#ifndef CCISS_DEFS_H3#define CCISS_DEFS_H4 5#include <linux/types.h>6 7/* general boundary definitions */8#define SENSEINFOBYTES          32 /* note that this value may vary9				      between host implementations */10 11/* Command Status value */12#define CMD_SUCCESS             0x000013#define CMD_TARGET_STATUS       0x000114#define CMD_DATA_UNDERRUN       0x000215#define CMD_DATA_OVERRUN        0x000316#define CMD_INVALID             0x000417#define CMD_PROTOCOL_ERR        0x000518#define CMD_HARDWARE_ERR        0x000619#define CMD_CONNECTION_LOST     0x000720#define CMD_ABORTED             0x000821#define CMD_ABORT_FAILED        0x000922#define CMD_UNSOLICITED_ABORT   0x000A23#define CMD_TIMEOUT             0x000B24#define CMD_UNABORTABLE		0x000C25 26/* transfer direction */27#define XFER_NONE               0x0028#define XFER_WRITE              0x0129#define XFER_READ               0x0230#define XFER_RSVD               0x0331 32/* task attribute */33#define ATTR_UNTAGGED           0x0034#define ATTR_SIMPLE             0x0435#define ATTR_HEADOFQUEUE        0x0536#define ATTR_ORDERED            0x0637#define ATTR_ACA                0x0738 39/* cdb type */40#define TYPE_CMD				0x0041#define TYPE_MSG				0x0142 43/* Type defs used in the following structs */44#define BYTE __u845#define WORD __u1646#define HWORD __u1647#define DWORD __u3248 49#define CISS_MAX_LUN	102450 51#define LEVEL2LUN   1 /* index into Target(x) structure, due to byte swapping */52#define LEVEL3LUN   053 54#pragma pack(1)55 56/* Command List Structure */57typedef union _SCSI3Addr_struct {58   struct {59    BYTE Dev;60    BYTE Bus:6;61    BYTE Mode:2;        /* b00 */62  } PeripDev;63   struct {64    BYTE DevLSB;65    BYTE DevMSB:6;66    BYTE Mode:2;        /* b01 */67  } LogDev;68   struct {69    BYTE Dev:5;70    BYTE Bus:3;71    BYTE Targ:6;72    BYTE Mode:2;        /* b10 */73  } LogUnit;74} SCSI3Addr_struct;75 76typedef struct _PhysDevAddr_struct {77  DWORD             TargetId:24;78  DWORD             Bus:6;79  DWORD             Mode:2;80  SCSI3Addr_struct  Target[2]; /* 2 level target device addr */81} PhysDevAddr_struct;82 83typedef struct _LogDevAddr_struct {84  DWORD            VolId:30;85  DWORD            Mode:2;86  BYTE             reserved[4];87} LogDevAddr_struct;88 89typedef union _LUNAddr_struct {90  BYTE               LunAddrBytes[8];91  SCSI3Addr_struct   SCSI3Lun[4];92  PhysDevAddr_struct PhysDev;93  LogDevAddr_struct  LogDev;94} LUNAddr_struct;95 96typedef struct _RequestBlock_struct {97  BYTE   CDBLen;98  struct {99    BYTE Type:3;100    BYTE Attribute:3;101    BYTE Direction:2;102  } Type;103  HWORD  Timeout;104  BYTE   CDB[16];105} RequestBlock_struct;106 107typedef union _MoreErrInfo_struct{108  struct {109    BYTE  Reserved[3];110    BYTE  Type;111    DWORD ErrorInfo;112  } Common_Info;113  struct{114    BYTE  Reserved[2];115    BYTE  offense_size; /* size of offending entry */116    BYTE  offense_num;  /* byte # of offense 0-base */117    DWORD offense_value;118  } Invalid_Cmd;119} MoreErrInfo_struct;120typedef struct _ErrorInfo_struct {121  BYTE               ScsiStatus;122  BYTE               SenseLen;123  HWORD              CommandStatus;124  DWORD              ResidualCnt;125  MoreErrInfo_struct MoreErrInfo;126  BYTE               SenseInfo[SENSEINFOBYTES];127} ErrorInfo_struct;128 129#pragma pack()130 131#endif /* CCISS_DEFS_H */132