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