Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 1 | #ifndef CCISS_IOCTLH |
2 | #define CCISS_IOCTLH |
||
3 | |||
4 | #include <linux/types.h> |
||
5 | #include <linux/ioctl.h> |
||
6 | |||
7 | #define CCISS_IOC_MAGIC 'B' |
||
8 | |||
9 | |||
10 | typedef struct _cciss_pci_info_struct |
||
11 | { |
||
12 | unsigned char bus; |
||
13 | unsigned char dev_fn; |
||
14 | __u32 board_id; |
||
15 | } cciss_pci_info_struct; |
||
16 | |||
17 | typedef struct _cciss_coalint_struct |
||
18 | { |
||
19 | __u32 delay; |
||
20 | __u32 count; |
||
21 | } cciss_coalint_struct; |
||
22 | |||
23 | typedef char NodeName_type[16]; |
||
24 | |||
25 | typedef __u32 Heartbeat_type; |
||
26 | |||
27 | #define CISS_PARSCSIU2 0x0001 |
||
28 | #define CISS_PARCSCIU3 0x0002 |
||
29 | #define CISS_FIBRE1G 0x0100 |
||
30 | #define CISS_FIBRE2G 0x0200 |
||
31 | typedef __u32 BusTypes_type; |
||
32 | |||
33 | typedef char FirmwareVer_type[4]; |
||
34 | typedef __u32 DriverVer_type; |
||
35 | |||
36 | #define MAX_KMALLOC_SIZE 128000 |
||
37 | |||
38 | typedef struct _BIG_IOCTL_Command_struct { |
||
39 | LUNAddr_struct LUN_info; |
||
40 | RequestBlock_struct Request; |
||
41 | ErrorInfo_struct error_info; |
||
42 | DWORD malloc_size; /* < MAX_KMALLOC_SIZE in cciss.c */ |
||
43 | DWORD buf_size; /* size in bytes of the buf */ |
||
44 | /* < malloc_size * MAXSGENTRIES */ |
||
45 | BYTE *buf; |
||
46 | } BIG_IOCTL_Command_struct; |
||
47 | |||
48 | |||
49 | #ifndef CCISS_CMD_H |
||
50 | // This defines are duplicated in cciss_cmd.h in the driver directory |
||
51 | |||
52 | //general boundary defintions |
||
53 | #define SENSEINFOBYTES 32//note that this value may vary between host implementations |
||
54 | |||
55 | //Command Status value |
||
56 | #define CMD_SUCCESS 0x0000 |
||
57 | #define CMD_TARGET_STATUS 0x0001 |
||
58 | #define CMD_DATA_UNDERRUN 0x0002 |
||
59 | #define CMD_DATA_OVERRUN 0x0003 |
||
60 | #define CMD_INVALID 0x0004 |
||
61 | #define CMD_PROTOCOL_ERR 0x0005 |
||
62 | #define CMD_HARDWARE_ERR 0x0006 |
||
63 | #define CMD_CONNECTION_LOST 0x0007 |
||
64 | #define CMD_ABORTED 0x0008 |
||
65 | #define CMD_ABORT_FAILED 0x0009 |
||
66 | #define CMD_UNSOLICITED_ABORT 0x000A |
||
67 | #define CMD_TIMEOUT 0x000B |
||
68 | #define CMD_UNABORTABLE 0x000C |
||
69 | |||
70 | //transfer direction |
||
71 | #define XFER_NONE 0x00 |
||
72 | #define XFER_WRITE 0x01 |
||
73 | #define XFER_READ 0x02 |
||
74 | #define XFER_RSVD 0x03 |
||
75 | |||
76 | //task attribute |
||
77 | #define ATTR_UNTAGGED 0x00 |
||
78 | #define ATTR_SIMPLE 0x04 |
||
79 | #define ATTR_HEADOFQUEUE 0x05 |
||
80 | #define ATTR_ORDERED 0x06 |
||
81 | #define ATTR_ACA 0x07 |
||
82 | |||
83 | //cdb type |
||
84 | #define TYPE_CMD 0x00 |
||
85 | #define TYPE_MSG 0x01 |
||
86 | |||
87 | // Type defs used in the following structs |
||
88 | #define BYTE __u8 |
||
89 | #define WORD __u16 |
||
90 | #define HWORD __u16 |
||
91 | #define DWORD __u32 |
||
92 | |||
93 | #define CISS_MAX_LUN 16 |
||
94 | |||
95 | #define LEVEL2LUN 1 // index into Target(x) structure, due to byte swapping |
||
96 | #define LEVEL3LUN 0 |
||
97 | |||
98 | #pragma pack(1) |
||
99 | |||
100 | //Command List Structure |
||
101 | typedef union _SCSI3Addr_struct { |
||
102 | struct { |
||
103 | BYTE Dev; |
||
104 | BYTE Bus:6; |
||
105 | BYTE Mode:2; // b00 |
||
106 | } PeripDev; |
||
107 | struct { |
||
108 | BYTE DevLSB; |
||
109 | BYTE DevMSB:6; |
||
110 | BYTE Mode:2; // b01 |
||
111 | } LogDev; |
||
112 | struct { |
||
113 | BYTE Dev:5; |
||
114 | BYTE Bus:3; |
||
115 | BYTE Targ:6; |
||
116 | BYTE Mode:2; // b10 |
||
117 | } LogUnit; |
||
118 | } SCSI3Addr_struct; |
||
119 | |||
120 | typedef struct _PhysDevAddr_struct { |
||
121 | DWORD TargetId:24; |
||
122 | DWORD Bus:6; |
||
123 | DWORD Mode:2; |
||
124 | SCSI3Addr_struct Target[2]; //2 level target device addr |
||
125 | } PhysDevAddr_struct; |
||
126 | |||
127 | typedef struct _LogDevAddr_struct { |
||
128 | DWORD VolId:30; |
||
129 | DWORD Mode:2; |
||
130 | BYTE reserved[4]; |
||
131 | } LogDevAddr_struct; |
||
132 | |||
133 | typedef union _LUNAddr_struct { |
||
134 | BYTE LunAddrBytes[8]; |
||
135 | SCSI3Addr_struct SCSI3Lun[4]; |
||
136 | PhysDevAddr_struct PhysDev; |
||
137 | LogDevAddr_struct LogDev; |
||
138 | } LUNAddr_struct; |
||
139 | |||
140 | typedef struct _RequestBlock_struct { |
||
141 | BYTE CDBLen; |
||
142 | struct { |
||
143 | BYTE Type:3; |
||
144 | BYTE Attribute:3; |
||
145 | BYTE Direction:2; |
||
146 | } Type; |
||
147 | HWORD Timeout; |
||
148 | BYTE CDB[16]; |
||
149 | } RequestBlock_struct; |
||
150 | |||
151 | typedef union _MoreErrInfo_struct{ |
||
152 | struct { |
||
153 | BYTE Reserved[3]; |
||
154 | BYTE Type; |
||
155 | DWORD ErrorInfo; |
||
156 | }Common_Info; |
||
157 | struct{ |
||
158 | BYTE Reserved[2]; |
||
159 | BYTE offense_size;//size of offending entry |
||
160 | BYTE offense_num; //byte # of offense 0-base |
||
161 | DWORD offense_value; |
||
162 | }Invalid_Cmd; |
||
163 | }MoreErrInfo_struct; |
||
164 | typedef struct _ErrorInfo_struct { |
||
165 | BYTE ScsiStatus; |
||
166 | BYTE SenseLen; |
||
167 | HWORD CommandStatus; |
||
168 | DWORD ResidualCnt; |
||
169 | MoreErrInfo_struct MoreErrInfo; |
||
170 | BYTE SenseInfo[SENSEINFOBYTES]; |
||
171 | } ErrorInfo_struct; |
||
172 | |||
173 | #pragma pack() |
||
174 | #endif /* CCISS_CMD_H */ |
||
175 | |||
176 | typedef struct _IOCTL_Command_struct { |
||
177 | LUNAddr_struct LUN_info; |
||
178 | RequestBlock_struct Request; |
||
179 | ErrorInfo_struct error_info; |
||
180 | WORD buf_size; /* size in bytes of the buf */ |
||
181 | BYTE *buf; |
||
182 | } IOCTL_Command_struct; |
||
183 | |||
184 | typedef struct _LogvolInfo_struct{ |
||
185 | __u32 LunID; |
||
186 | int num_opens; /* number of opens on the logical volume */ |
||
187 | int num_parts; /* number of partitions configured on logvol */ |
||
188 | } LogvolInfo_struct; |
||
189 | |||
190 | #define CCISS_GETPCIINFO _IOR(CCISS_IOC_MAGIC, 1, cciss_pci_info_struct) |
||
191 | |||
192 | #define CCISS_GETINTINFO _IOR(CCISS_IOC_MAGIC, 2, cciss_coalint_struct) |
||
193 | #define CCISS_SETINTINFO _IOW(CCISS_IOC_MAGIC, 3, cciss_coalint_struct) |
||
194 | |||
195 | #define CCISS_GETNODENAME _IOR(CCISS_IOC_MAGIC, 4, NodeName_type) |
||
196 | #define CCISS_SETNODENAME _IOW(CCISS_IOC_MAGIC, 5, NodeName_type) |
||
197 | |||
198 | #define CCISS_GETHEARTBEAT _IOR(CCISS_IOC_MAGIC, 6, Heartbeat_type) |
||
199 | #define CCISS_GETBUSTYPES _IOR(CCISS_IOC_MAGIC, 7, BusTypes_type) |
||
200 | #define CCISS_GETFIRMVER _IOR(CCISS_IOC_MAGIC, 8, FirmwareVer_type) |
||
201 | #define CCISS_GETDRIVVER _IOR(CCISS_IOC_MAGIC, 9, DriverVer_type) |
||
202 | #define CCISS_REVALIDVOLS _IO(CCISS_IOC_MAGIC, 10) |
||
203 | #define CCISS_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 11, IOCTL_Command_struct) |
||
204 | #define CCISS_DEREGDISK _IO(CCISS_IOC_MAGIC, 12) |
||
205 | |||
206 | /* no longer used... use REGNEWD instead */ |
||
207 | #define CCISS_REGNEWDISK _IOW(CCISS_IOC_MAGIC, 13, int) |
||
208 | |||
209 | #define CCISS_REGNEWD _IO(CCISS_IOC_MAGIC, 14) |
||
210 | #define CCISS_GETLUNINFO _IOR(CCISS_IOC_MAGIC, 17, LogvolInfo_struct) |
||
211 | #define CCISS_BIG_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 18, BIG_IOCTL_Command_struct) |
||
212 | |||
213 | #endif |