]>
Commit | Line | Data |
---|---|---|
cfbba5b9 GI |
1 | /************************************************************************** |
2 | ||
3 | Module Name: | |
4 | ||
5 | CSMISAS.H | |
6 | ||
7 | ||
8 | Abstract: | |
9 | ||
10 | This file contains constants and data structure definitions used by drivers | |
11 | that support the Common Storage Management Interface specification for | |
12 | SAS or SATA in either the Windows or Linux. | |
13 | ||
14 | This should be considered as a reference implementation only. Changes may | |
15 | be necessary to accommodate a specific build environment or target OS. | |
16 | ||
17 | Revision History: | |
18 | ||
19 | 001 SEF 8/12/03 Initial release. | |
20 | 002 SEF 8/20/03 Cleanup to match documentation. | |
21 | 003 SEF 9/12/03 Additional cleanup, created combined header | |
22 | 004 SEF 9/23/03 Changed base types to match linux defaults | |
23 | Added RAID signature | |
24 | Added bControllerFlags to CSMI_SAS_CNTLR_CONFIG | |
25 | Changed CSMI_SAS_BEGIN_PACK to 8 for common structures | |
26 | Fixed other typos identified in first compilation test | |
27 | 005 SEF 10/03/03 Additions to match first version of CSMI document | |
28 | 006 SEF 10/14/03 Fixed typedef struct _CSMI_SAS_SMP_PASSTHRU_BUFFER | |
29 | Added defines for bConnectionRate | |
30 | 007 SEF 10/15/03 Added Firmware Download Control Code and support | |
31 | Added CSMI revision support | |
32 | 008 SEF 10/30/03 No functional change, just updated version to track | |
33 | spec changes | |
34 | 009 SEF 12/09/03 No functional change, just updated version to track | |
35 | spec changes | |
36 | 010 SEF 3/11/04 Fixed typedef struct CSMI_SAS_RAID_DRIVES to include the | |
37 | bFirmware member that is defined in the spec, but | |
38 | was missing in this file, | |
39 | added CC_CSMI_SAS_TASK_MANAGEMENT | |
40 | 011 SEF 4/02/04 No functional change, added comment line before | |
41 | CC_CSMI_SAS_TASK_MANAGEMENT | |
42 | 012 SEF 4/16/04 Added IOControllerNumber to linux header, | |
43 | Modified linux control codes to have upper word of | |
44 | 0xCC77.... to indicate CSMI version 77 | |
45 | Added bSignalClass to CC_CSMI_SET_PHY_INFO | |
46 | Added CC_CSMI_SAS_PHY_CONTROL support | |
47 | 013 SEF 5/14/04 Added CC_CSMI_SAS_GET_CONNECTOR_INFO support | |
48 | 014 SEF 5/24/04 No functional change, just updated version to track spec | |
49 | changes | |
50 | 015 SEF 6/16/04 changed bPinout to uPinout to reflect proper size, | |
51 | changed width of bLocation defines to reflect size | |
52 | 016 SEF 6/17/04 changed bLengthOfControls in CSMI_SAS_PHY_CONTROL | |
53 | to be proper size | |
54 | 017 SEF 9/17/04 added CSMI_SAS_SATA_PORT_SELECTOR, | |
55 | CSMI_SAS_LINK_VIRTUAL, CSMI_SAS_CON_NOT_PRESENT, and | |
56 | CSMI_SAS_CON_NOT_CONNECTED | |
57 | 018 SEF 9/20/04 added CSMI_SAS_PHY_USER_PATTERN, | |
58 | changed definition of CSMI_SAS_PHY_FIXED_PATTERN to not | |
59 | conflict with activate definition | |
60 | 019 SEF 12/06/04 added CSMI_SAS_GET_LOCATION | |
61 | added bSSPStatus to CSMI_SAS_SSP_PASSTHRU_STATUS | |
62 | structure | |
63 | 020 SEF 5/25/05 added CSMI_SAS_PHY_VIRTUAL_SMP, and changes to | |
64 | CSMI_SAS_GET_LOCATION | |
65 | 021 SEF 11/03/05 added new RAID creation functionality | |
66 | 022 SEF 2/01/06 corrected typo bNegotitiatedLInkRate | |
67 | Added two more RAID_TYPES, 7 and 8 | |
68 | 023 SEF 4/04/06 added CSMI_RAID_TYPE_1E | |
69 | changed structures that contained surface scan | |
70 | to priority approach rather than time, causes | |
71 | 0.89 to incompatible with 0.87, so a version | |
72 | check is necessary when interpreting the | |
73 | raid structures | |
74 | Added netware section | |
75 | 024 DRG 5/22/06 Added uFailureCode to CSMI_SAS_RAID_CONFIG and | |
76 | CSMI_SAS_RAID_FEATURES | |
77 | Changed __u64 fields to high and low __u32 fields in | |
78 | order to avoid backward compatibility issues with | |
79 | packing and alignment. | |
80 | Fixed alignment problem in CSMI_SAS_RAID_DRIVES. | |
81 | Added CSMI_SAS_CNTLR_SMART_ARRAY to uControllerFlags | |
82 | Reassigned the value of CSMI_SAS_CNTLR_RAID_CFG_SUPPORT | |
83 | to avoid a conflict. | |
84 | ||
85 | **************************************************************************/ | |
86 | ||
87 | #ifndef _CSMI_SAS_H_ | |
88 | #define _CSMI_SAS_H_ | |
89 | ||
90 | // CSMI Specification Revision, the intent is that all versions of the | |
91 | // specification will be backward compatible after the 1.00 release. | |
92 | // Major revision number, corresponds to xxxx. of CSMI specification | |
93 | // Minor revision number, corresponds to .xxxx of CSMI specification | |
94 | #define CSMI_MAJOR_REVISION 0 | |
95 | #define CSMI_MINOR_REVISION 90 | |
96 | ||
97 | /*************************************************************************/ | |
98 | /* PATCHES FOR TYPOS */ | |
99 | /*************************************************************************/ | |
100 | ||
101 | #define bNegotitiatedLInkRate bNegotiatedLinkRate | |
102 | ||
103 | /*************************************************************************/ | |
104 | /* TARGET OS LINUX SPECIFIC CODE */ | |
105 | /*************************************************************************/ | |
106 | ||
107 | // EDM #ifdef _linux | |
108 | #ifdef __KERNEL__ | |
109 | ||
110 | // Linux base types | |
111 | ||
112 | #include <linux/types.h> | |
113 | ||
114 | #define __i8 char | |
115 | ||
116 | // pack definition | |
117 | ||
118 | // EDM #define CSMI_SAS_BEGIN_PACK(x) pack(x) | |
119 | // EDM #define CSMI_SAS_END_PACK pack() | |
120 | ||
121 | // IOCTL Control Codes | |
122 | // (IoctlHeader.ControlCode) | |
123 | ||
124 | // Control Codes prior to 0.77 | |
125 | ||
126 | // Control Codes requiring CSMI_ALL_SIGNATURE | |
127 | ||
128 | // #define CC_CSMI_SAS_GET_DRIVER_INFO 0x12345678 | |
129 | // #define CC_CSMI_SAS_GET_CNTLR_CONFIG 0x23456781 | |
130 | // #define CC_CSMI_SAS_GET_CNTLR_STATUS 0x34567812 | |
131 | // #define CC_CSMI_SAS_FIRMWARE_DOWNLOAD 0x92345678 | |
132 | ||
133 | // Control Codes requiring CSMI_RAID_SIGNATURE | |
134 | ||
135 | // #define CC_CSMI_SAS_GET_RAID_INFO 0x45678123 | |
136 | // #define CC_CSMI_SAS_GET_RAID_CONFIG 0x56781234 | |
137 | ||
138 | // Control Codes requiring CSMI_SAS_SIGNATURE | |
139 | ||
140 | // #define CC_CSMI_SAS_GET_PHY_INFO 0x67812345 | |
141 | // #define CC_CSMI_SAS_SET_PHY_INFO 0x78123456 | |
142 | // #define CC_CSMI_SAS_GET_LINK_ERRORS 0x81234567 | |
143 | // #define CC_CSMI_SAS_SMP_PASSTHRU 0xA1234567 | |
144 | // #define CC_CSMI_SAS_SSP_PASSTHRU 0xB1234567 | |
145 | // #define CC_CSMI_SAS_STP_PASSTHRU 0xC1234567 | |
146 | // #define CC_CSMI_SAS_GET_SATA_SIGNATURE 0xD1234567 | |
147 | // #define CC_CSMI_SAS_GET_SCSI_ADDRESS 0xE1234567 | |
148 | // #define CC_CSMI_SAS_GET_DEVICE_ADDRESS 0xF1234567 | |
149 | // #define CC_CSMI_SAS_TASK_MANAGEMENT 0xA2345678 | |
150 | ||
151 | // Control Codes for 0.77 and later | |
152 | ||
153 | // Control Codes requiring CSMI_ALL_SIGNATURE | |
154 | ||
155 | #define CC_CSMI_SAS_GET_DRIVER_INFO 0xCC770001 | |
156 | #define CC_CSMI_SAS_GET_CNTLR_CONFIG 0xCC770002 | |
157 | #define CC_CSMI_SAS_GET_CNTLR_STATUS 0xCC770003 | |
158 | #define CC_CSMI_SAS_FIRMWARE_DOWNLOAD 0xCC770004 | |
159 | ||
160 | // Control Codes requiring CSMI_RAID_SIGNATURE | |
161 | ||
162 | #define CC_CSMI_SAS_GET_RAID_INFO 0xCC77000A | |
163 | #define CC_CSMI_SAS_GET_RAID_CONFIG 0xCC77000B | |
164 | #define CC_CSMI_SAS_GET_RAID_FEATURES 0xCC77000C | |
165 | #define CC_CSMI_SAS_SET_RAID_CONTROL 0xCC77000D | |
166 | #define CC_CSMI_SAS_GET_RAID_ELEMENT 0xCC77000E | |
167 | #define CC_CSMI_SAS_SET_RAID_OPERATION 0xCC77000F | |
168 | ||
169 | // Control Codes requiring CSMI_SAS_SIGNATURE | |
170 | ||
171 | #define CC_CSMI_SAS_GET_PHY_INFO 0xCC770014 | |
172 | #define CC_CSMI_SAS_SET_PHY_INFO 0xCC770015 | |
173 | #define CC_CSMI_SAS_GET_LINK_ERRORS 0xCC770016 | |
174 | #define CC_CSMI_SAS_SMP_PASSTHRU 0xCC770017 | |
175 | #define CC_CSMI_SAS_SSP_PASSTHRU 0xCC770018 | |
176 | #define CC_CSMI_SAS_STP_PASSTHRU 0xCC770019 | |
177 | #define CC_CSMI_SAS_GET_SATA_SIGNATURE 0xCC770020 | |
178 | #define CC_CSMI_SAS_GET_SCSI_ADDRESS 0xCC770021 | |
179 | #define CC_CSMI_SAS_GET_DEVICE_ADDRESS 0xCC770022 | |
180 | #define CC_CSMI_SAS_TASK_MANAGEMENT 0xCC770023 | |
181 | #define CC_CSMI_SAS_GET_CONNECTOR_INFO 0xCC770024 | |
182 | #define CC_CSMI_SAS_GET_LOCATION 0xCC770025 | |
183 | ||
184 | ||
185 | // Control Codes requiring CSMI_PHY_SIGNATURE | |
186 | ||
187 | #define CC_CSMI_SAS_PHY_CONTROL 0xCC77003C | |
188 | ||
189 | // EDM #pragma CSMI_SAS_BEGIN_PACK(8) | |
190 | #pragma pack(8) | |
191 | ||
192 | // IOCTL_HEADER | |
193 | typedef struct _IOCTL_HEADER { | |
194 | __u32 IOControllerNumber; | |
195 | __u32 Length; | |
196 | __u32 ReturnCode; | |
197 | __u32 Timeout; | |
198 | __u16 Direction; | |
199 | } IOCTL_HEADER, | |
200 | *PIOCTL_HEADER; | |
201 | ||
202 | // EDM #pragma CSMI_SAS_END_PACK | |
203 | #pragma pack() | |
204 | ||
205 | #endif | |
206 | ||
207 | /*************************************************************************/ | |
208 | /* TARGET OS WINDOWS SPECIFIC CODE */ | |
209 | /*************************************************************************/ | |
210 | ||
211 | #ifdef _WIN32 | |
212 | ||
213 | // windows IOCTL definitions | |
214 | ||
215 | #if 0 // <ntddscsi.h> and CSMI_*_PACK are no longer needed | |
216 | ||
217 | #ifndef _NTDDSCSIH_ | |
218 | #include <ntddscsi.h> | |
219 | #endif | |
220 | ||
221 | // pack definition | |
222 | ||
223 | #if defined _MSC_VER | |
224 | #define CSMI_SAS_BEGIN_PACK(x) pack(push,x) | |
225 | #define CSMI_SAS_END_PACK pack(pop) | |
226 | #elif defined __BORLANDC__ | |
227 | #define CSMI_SAS_BEGIN_PACK(x) option -a##x | |
228 | #define CSMI_SAS_END_PACK option -a. | |
229 | #else | |
230 | #error "CSMISAS.H - Must externally define a pack compiler designator." | |
231 | #endif | |
232 | ||
233 | #endif // #if 0 | |
234 | ||
235 | // base types | |
236 | ||
237 | #define __u8 unsigned char | |
238 | #define __u16 unsigned short | |
239 | #define __u32 unsigned long | |
240 | #define __u64 unsigned __int64 | |
241 | ||
242 | #define __i8 char | |
243 | ||
244 | // IOCTL Control Codes | |
245 | // (IoctlHeader.ControlCode) | |
246 | ||
247 | // Control Codes requiring CSMI_ALL_SIGNATURE | |
248 | ||
249 | #define CC_CSMI_SAS_GET_DRIVER_INFO 1 | |
250 | #define CC_CSMI_SAS_GET_CNTLR_CONFIG 2 | |
251 | #define CC_CSMI_SAS_GET_CNTLR_STATUS 3 | |
252 | #define CC_CSMI_SAS_FIRMWARE_DOWNLOAD 4 | |
253 | ||
254 | // Control Codes requiring CSMI_RAID_SIGNATURE | |
255 | ||
256 | #define CC_CSMI_SAS_GET_RAID_INFO 10 | |
257 | #define CC_CSMI_SAS_GET_RAID_CONFIG 11 | |
258 | #define CC_CSMI_SAS_GET_RAID_FEATURES 12 | |
259 | #define CC_CSMI_SAS_SET_RAID_CONTROL 13 | |
260 | #define CC_CSMI_SAS_GET_RAID_ELEMENT 14 | |
261 | #define CC_CSMI_SAS_SET_RAID_OPERATION 15 | |
262 | ||
263 | // Control Codes requiring CSMI_SAS_SIGNATURE | |
264 | ||
265 | #define CC_CSMI_SAS_GET_PHY_INFO 20 | |
266 | #define CC_CSMI_SAS_SET_PHY_INFO 21 | |
267 | #define CC_CSMI_SAS_GET_LINK_ERRORS 22 | |
268 | #define CC_CSMI_SAS_SMP_PASSTHRU 23 | |
269 | #define CC_CSMI_SAS_SSP_PASSTHRU 24 | |
270 | #define CC_CSMI_SAS_STP_PASSTHRU 25 | |
271 | #define CC_CSMI_SAS_GET_SATA_SIGNATURE 26 | |
272 | #define CC_CSMI_SAS_GET_SCSI_ADDRESS 27 | |
273 | #define CC_CSMI_SAS_GET_DEVICE_ADDRESS 28 | |
274 | #define CC_CSMI_SAS_TASK_MANAGEMENT 29 | |
275 | #define CC_CSMI_SAS_GET_CONNECTOR_INFO 30 | |
276 | #define CC_CSMI_SAS_GET_LOCATION 31 | |
277 | ||
278 | // Control Codes requiring CSMI_PHY_SIGNATURE | |
279 | ||
280 | #define CC_CSMI_SAS_PHY_CONTROL 60 | |
281 | ||
282 | #define IOCTL_HEADER SRB_IO_CONTROL | |
283 | #define PIOCTL_HEADER PSRB_IO_CONTROL | |
284 | ||
285 | #endif | |
286 | ||
287 | /*************************************************************************/ | |
288 | /* TARGET OS NETWARE SPECIFIC CODE */ | |
289 | /*************************************************************************/ | |
290 | ||
291 | #ifdef _NETWARE | |
292 | ||
293 | // NetWare IOCTL definitions | |
294 | ||
295 | #define CSMI_SAS_BEGIN_PACK(x) pack(x) | |
296 | #define CSMI_SAS_END_PACK pack() | |
297 | ||
298 | #ifndef LONG | |
299 | typedef unsigned long LONG; | |
300 | #endif | |
301 | ||
302 | #ifndef WORD | |
303 | typedef unsigned short WORD; | |
304 | #endif | |
305 | ||
306 | #ifndef BYTE | |
307 | typedef unsigned char BYTE; | |
308 | #endif | |
309 | ||
310 | /* Need to have these definitions for Netware */ | |
311 | #define __u8 unsigned char | |
312 | #define __u16 unsigned short | |
313 | #define __u32 unsigned long | |
314 | #define __u64 unsigned __int64 | |
315 | ||
316 | #define __i8 char | |
317 | ||
318 | ||
319 | // EDM #pragma CSMI_SAS_BEGIN_PACK(8) | |
320 | #pragma pack(8) | |
321 | ||
322 | // IOCTL_HEADER | |
323 | typedef struct _IOCTL_HEADER { | |
324 | __u32 Length; | |
325 | __u32 ReturnCode; | |
326 | } IOCTL_HEADER, | |
327 | *PIOCTL_HEADER; | |
328 | ||
329 | // EDM #pragma CSMI_SAS_END_PACK | |
330 | #pragma pack() | |
331 | ||
332 | // IOCTL Control Codes | |
333 | // (IoctlHeader.ControlCode) | |
334 | ||
335 | // Control Codes requiring CSMI_ALL_SIGNATURE | |
336 | ||
337 | #define CC_CSMI_SAS_GET_DRIVER_INFO 0x01FF0001 | |
338 | #define CC_CSMI_SAS_GET_CNTLR_CONFIG 0x01FF0002 | |
339 | #define CC_CSMI_SAS_GET_CNTLR_STATUS 0x01FF0003 | |
340 | #define CC_CSMI_SAS_FIRMWARE_DOWNLOAD 0x01FF0004 | |
341 | ||
342 | // Control Codes requiring CSMI_RAID_SIGNATURE | |
343 | ||
344 | #define CC_CSMI_SAS_GET_RAID_INFO 0x01FF000A | |
345 | #define CC_CSMI_SAS_GET_RAID_CONFIG 0x01FF000B | |
346 | #define CC_CSMI_SAS_GET_RAID_FEATURES 0x01FF000C | |
347 | #define CC_CSMI_SAS_SET_RAID_CONTROL 0x01FF000D | |
348 | #define CC_CSMI_SAS_GET_RAID_ELEMENT 0x01FF000E | |
349 | #define CC_CSMI_SAS_SET_RAID_OPERATION 0x01FF000F | |
350 | ||
351 | // Control Codes requiring CSMI_SAS_SIGNATURE | |
352 | ||
353 | #define CC_CSMI_SAS_GET_PHY_INFO 0x01FF0014 | |
354 | #define CC_CSMI_SAS_SET_PHY_INFO 0x01FF0015 | |
355 | #define CC_CSMI_SAS_GET_LINK_ERRORS 0x01FF0016 | |
356 | #define CC_CSMI_SAS_SMP_PASSTHRU 0x01FF0017 | |
357 | #define CC_CSMI_SAS_SSP_PASSTHRU 0x01FF0018 | |
358 | #define CC_CSMI_SAS_STP_PASSTHRU 0x01FF0019 | |
359 | #define CC_CSMI_SAS_GET_SATA_SIGNATURE 0x01FF001A | |
360 | #define CC_CSMI_SAS_GET_SCSI_ADDRESS 0x01FF001B | |
361 | #define CC_CSMI_SAS_GET_DEVICE_ADDRESS 0x01FF001C | |
362 | #define CC_CSMI_SAS_TASK_MANAGEMENT 0x01FF001D | |
363 | #define CC_CSMI_SAS_GET_CONNECTOR_INFO 0x01FF001E | |
364 | #define CC_CSMI_SAS_GET_LOCATION 0x01FF001F | |
365 | ||
366 | // Control Codes requiring CSMI_PHY_SIGNATURE | |
367 | ||
368 | #define CC_CSMI_SAS_PHY_CONTROL 60 | |
369 | ||
370 | #endif | |
371 | ||
372 | /*************************************************************************/ | |
373 | /* TARGET OS NOT DEFINED ERROR */ | |
374 | /*************************************************************************/ | |
375 | ||
376 | // EDM | |
377 | //#if (!_WIN32 && !_linux && !_NETWARE) | |
378 | // #error "Unknown target OS." | |
379 | //#endif | |
380 | ||
381 | /*************************************************************************/ | |
382 | /* OS INDEPENDENT CODE */ | |
383 | /*************************************************************************/ | |
384 | ||
385 | /* * * * * * * * * * Class Independent IOCTL Constants * * * * * * * * * */ | |
386 | ||
387 | // Return codes for all IOCTL's regardless of class | |
388 | // (IoctlHeader.ReturnCode) | |
389 | ||
390 | #define CSMI_SAS_STATUS_SUCCESS 0 | |
391 | #define CSMI_SAS_STATUS_FAILED 1 | |
392 | #define CSMI_SAS_STATUS_BAD_CNTL_CODE 2 | |
393 | #define CSMI_SAS_STATUS_INVALID_PARAMETER 3 | |
394 | #define CSMI_SAS_STATUS_WRITE_ATTEMPTED 4 | |
395 | ||
396 | // Signature value | |
397 | // (IoctlHeader.Signature) | |
398 | ||
399 | #define CSMI_ALL_SIGNATURE "CSMIALL" | |
400 | ||
401 | // Timeout value default of 60 seconds | |
402 | // (IoctlHeader.Timeout) | |
403 | ||
404 | #define CSMI_ALL_TIMEOUT 60 | |
405 | ||
406 | // Direction values for data flow on this IOCTL | |
407 | // (IoctlHeader.Direction, Linux only) | |
408 | #define CSMI_SAS_DATA_READ 0 | |
409 | #define CSMI_SAS_DATA_WRITE 1 | |
410 | ||
411 | // I/O Bus Types | |
412 | // ISA and EISA bus types are not supported | |
413 | // (bIoBusType) | |
414 | ||
415 | #define CSMI_SAS_BUS_TYPE_PCI 3 | |
416 | #define CSMI_SAS_BUS_TYPE_PCMCIA 4 | |
417 | ||
418 | // Controller Status | |
419 | // (uStatus) | |
420 | ||
421 | #define CSMI_SAS_CNTLR_STATUS_GOOD 1 | |
422 | #define CSMI_SAS_CNTLR_STATUS_FAILED 2 | |
423 | #define CSMI_SAS_CNTLR_STATUS_OFFLINE 3 | |
424 | #define CSMI_SAS_CNTLR_STATUS_POWEROFF 4 | |
425 | ||
426 | // Offline Status Reason | |
427 | // (uOfflineReason) | |
428 | ||
429 | #define CSMI_SAS_OFFLINE_REASON_NO_REASON 0 | |
430 | #define CSMI_SAS_OFFLINE_REASON_INITIALIZING 1 | |
431 | #define CSMI_SAS_OFFLINE_REASON_BACKSIDE_BUS_DEGRADED 2 | |
432 | #define CSMI_SAS_OFFLINE_REASON_BACKSIDE_BUS_FAILURE 3 | |
433 | ||
434 | // Controller Class | |
435 | // (bControllerClass) | |
436 | ||
437 | #define CSMI_SAS_CNTLR_CLASS_HBA 5 | |
438 | ||
439 | // Controller Flag bits | |
440 | // (uControllerFlags) | |
441 | ||
442 | #define CSMI_SAS_CNTLR_SAS_HBA 0x00000001 | |
443 | #define CSMI_SAS_CNTLR_SAS_RAID 0x00000002 | |
444 | #define CSMI_SAS_CNTLR_SATA_HBA 0x00000004 | |
445 | #define CSMI_SAS_CNTLR_SATA_RAID 0x00000008 | |
446 | #define CSMI_SAS_CNTLR_SMART_ARRAY 0x00000010 | |
447 | ||
448 | // for firmware download | |
449 | #define CSMI_SAS_CNTLR_FWD_SUPPORT 0x00010000 | |
450 | #define CSMI_SAS_CNTLR_FWD_ONLINE 0x00020000 | |
451 | #define CSMI_SAS_CNTLR_FWD_SRESET 0x00040000 | |
452 | #define CSMI_SAS_CNTLR_FWD_HRESET 0x00080000 | |
453 | #define CSMI_SAS_CNTLR_FWD_RROM 0x00100000 | |
454 | ||
455 | // for RAID configuration supported | |
456 | #define CSMI_SAS_CNTLR_RAID_CFG_SUPPORT 0x01000000 | |
457 | ||
458 | // Download Flag bits | |
459 | // (uDownloadFlags) | |
460 | #define CSMI_SAS_FWD_VALIDATE 0x00000001 | |
461 | #define CSMI_SAS_FWD_SOFT_RESET 0x00000002 | |
462 | #define CSMI_SAS_FWD_HARD_RESET 0x00000004 | |
463 | ||
464 | // Firmware Download Status | |
465 | // (usStatus) | |
466 | #define CSMI_SAS_FWD_SUCCESS 0 | |
467 | #define CSMI_SAS_FWD_FAILED 1 | |
468 | #define CSMI_SAS_FWD_USING_RROM 2 | |
469 | #define CSMI_SAS_FWD_REJECT 3 | |
470 | #define CSMI_SAS_FWD_DOWNREV 4 | |
471 | ||
472 | // Firmware Download Severity | |
473 | // (usSeverity> | |
474 | #define CSMI_SAS_FWD_INFORMATION 0 | |
475 | #define CSMI_SAS_FWD_WARNING 1 | |
476 | #define CSMI_SAS_FWD_ERROR 2 | |
477 | #define CSMI_SAS_FWD_FATAL 3 | |
478 | ||
479 | /* * * * * * * * * * SAS RAID Class IOCTL Constants * * * * * * * * */ | |
480 | ||
481 | // Return codes for the RAID IOCTL's regardless of class | |
482 | // (IoctlHeader.ReturnCode) | |
483 | ||
484 | #define CSMI_SAS_RAID_SET_OUT_OF_RANGE 1000 | |
485 | #define CSMI_SAS_RAID_SET_BUFFER_TOO_SMALL 1001 | |
486 | #define CSMI_SAS_RAID_SET_DATA_CHANGED 1002 | |
487 | ||
488 | // Signature value | |
489 | // (IoctlHeader.Signature) | |
490 | ||
491 | #define CSMI_RAID_SIGNATURE "CSMIARY" | |
492 | ||
493 | // Timeout value default of 60 seconds | |
494 | // (IoctlHeader.Timeout) | |
495 | ||
496 | #define CSMI_RAID_TIMEOUT 60 | |
497 | ||
498 | // RAID Types | |
499 | // (bRaidType) | |
500 | #define CSMI_SAS_RAID_TYPE_NONE 0 | |
501 | #define CSMI_SAS_RAID_TYPE_0 1 | |
502 | #define CSMI_SAS_RAID_TYPE_1 2 | |
503 | #define CSMI_SAS_RAID_TYPE_10 3 | |
504 | #define CSMI_SAS_RAID_TYPE_5 4 | |
505 | #define CSMI_SAS_RAID_TYPE_15 5 | |
506 | #define CSMI_SAS_RAID_TYPE_6 6 | |
507 | #define CSMI_SAS_RAID_TYPE_50 7 | |
508 | #define CSMI_SAS_RAID_TYPE_VOLUME 8 | |
509 | #define CSMI_SAS_RAID_TYPE_1E 9 | |
510 | #define CSMI_SAS_RAID_TYPE_OTHER 255 | |
511 | // the last value 255 was already defined for other | |
512 | // so end is defined as 254 | |
513 | #define CSMI_SAS_RAID_TYPE_END 254 | |
514 | ||
515 | // RAID Status | |
516 | // (bStatus) | |
517 | #define CSMI_SAS_RAID_SET_STATUS_OK 0 | |
518 | #define CSMI_SAS_RAID_SET_STATUS_DEGRADED 1 | |
519 | #define CSMI_SAS_RAID_SET_STATUS_REBUILDING 2 | |
520 | #define CSMI_SAS_RAID_SET_STATUS_FAILED 3 | |
521 | #define CSMI_SAS_RAID_SET_STATUS_OFFLINE 4 | |
522 | #define CSMI_SAS_RAID_SET_STATUS_TRANSFORMING 5 | |
523 | #define CSMI_SAS_RAID_SET_STATUS_QUEUED_FOR_REBUILD 6 | |
524 | #define CSMI_SAS_RAID_SET_STATUS_QUEUED_FOR_TRANSFORMATION 7 | |
525 | ||
526 | // RAID Drive Count | |
527 | // (bDriveCount, 0xF1 to 0xFF are reserved) | |
528 | #define CSMI_SAS_RAID_DRIVE_COUNT_TOO_BIG 0xF1 | |
529 | #define CSMI_SAS_RAID_DRIVE_COUNT_SUPRESSED 0xF2 | |
530 | ||
531 | // RAID Data Type | |
532 | // (bDataType) | |
533 | #define CSMI_SAS_RAID_DATA_DRIVES 0 | |
534 | #define CSMI_SAS_RAID_DATA_DEVICE_ID 1 | |
535 | #define CSMI_SAS_RAID_DATA_ADDITIONAL_DATA 2 | |
536 | ||
537 | // RAID Drive Status | |
538 | // (bDriveStatus) | |
539 | #define CSMI_SAS_DRIVE_STATUS_OK 0 | |
540 | #define CSMI_SAS_DRIVE_STATUS_REBUILDING 1 | |
541 | #define CSMI_SAS_DRIVE_STATUS_FAILED 2 | |
542 | #define CSMI_SAS_DRIVE_STATUS_DEGRADED 3 | |
543 | #define CSMI_SAS_DRIVE_STATUS_OFFLINE 4 | |
544 | #define CSMI_SAS_DRIVE_STATUS_QUEUED_FOR_REBUILD 5 | |
545 | ||
546 | // RAID Drive Usage | |
547 | // (bDriveUsage) | |
548 | #define CSMI_SAS_DRIVE_CONFIG_NOT_USED 0 | |
549 | #define CSMI_SAS_DRIVE_CONFIG_MEMBER 1 | |
550 | #define CSMI_SAS_DRIVE_CONFIG_SPARE 2 | |
551 | #define CSMI_SAS_DRIVE_CONFIG_SPARE_ACTIVE 3 | |
552 | ||
553 | // RAID Drive Type | |
554 | // (bDriveType) | |
555 | #define CSMI_SAS_DRIVE_TYPE_UNKNOWN 0 | |
556 | #define CSMI_SAS_DRIVE_TYPE_SINGLE_PORT_SAS 1 | |
557 | #define CSMI_SAS_DRIVE_TYPE_DUAL_PORT_SAS 2 | |
558 | #define CSMI_SAS_DRIVE_TYPE_SATA 3 | |
559 | #define CSMI_SAS_DRIVE_TYPE_SATA_PS 4 | |
560 | #define CSMI_SAS_DRIVE_TYPE_OTHER 255 | |
561 | ||
562 | // RAID Write Protect | |
563 | // (bWriteProtect) | |
564 | #define CSMI_SAS_RAID_SET_WRITE_PROTECT_UNKNOWN 0 | |
565 | #define CSMI_SAS_RAID_SET_WRITE_PROTECT_UNCHANGED 0 | |
566 | #define CSMI_SAS_RAID_SET_WRITE_PROTECT_ENABLED 1 | |
567 | #define CSMI_SAS_RAID_SET_WRITE_PROTECT_DISABLED 2 | |
568 | ||
569 | // RAID Cache Setting | |
570 | // (bCacheSetting) | |
571 | #define CSMI_SAS_RAID_SET_CACHE_UNKNOWN 0 | |
572 | #define CSMI_SAS_RAID_SET_CACHE_UNCHANGED 0 | |
573 | #define CSMI_SAS_RAID_SET_CACHE_ENABLED 1 | |
574 | #define CSMI_SAS_RAID_SET_CACHE_DISABLED 2 | |
575 | #define CSMI_SAS_RAID_SET_CACHE_CORRUPT 3 | |
576 | ||
577 | // RAID Features | |
578 | // (uFeatures) | |
579 | #define CSMI_SAS_RAID_FEATURE_TRANSFORMATION 0x00000001 | |
580 | #define CSMI_SAS_RAID_FEATURE_REBUILD 0x00000002 | |
581 | #define CSMI_SAS_RAID_FEATURE_SPLIT_MIRROR 0x00000004 | |
582 | #define CSMI_SAS_RAID_FEATURE_MERGE_MIRROR 0x00000008 | |
583 | #define CSMI_SAS_RAID_FEATURE_LUN_RENUMBER 0x00000010 | |
584 | #define CSMI_SAS_RAID_FEATURE_SURFACE_SCAN 0x00000020 | |
585 | #define CSMI_SAS_RAID_FEATURE_SPARES_SHARED 0x00000040 | |
586 | ||
587 | // RAID Priority | |
588 | // (bDefaultTransformPriority, etc.) | |
589 | #define CSMI_SAS_PRIORITY_UNKNOWN 0 | |
590 | #define CSMI_SAS_PRIORITY_UNCHANGED 0 | |
591 | #define CSMI_SAS_PRIORITY_AUTO 1 | |
592 | #define CSMI_SAS_PRIORITY_OFF 2 | |
593 | #define CSMI_SAS_PRIORITY_LOW 3 | |
594 | #define CSMI_SAS_PRIORITY_MEDIUM 4 | |
595 | #define CSMI_SAS_PRIORITY_HIGH 5 | |
596 | ||
597 | // RAID Transformation Rules | |
598 | // (uRaidSetTransformationRules) | |
599 | #define CSMI_SAS_RAID_RULE_AVAILABLE_MEMORY 0x00000001 | |
600 | #define CSMI_SAS_RAID_RULE_OVERLAPPED_EXTENTS 0x00000002 | |
601 | ||
602 | // RAID Cache Ratios Supported | |
603 | // (bCacheRatiosSupported) | |
604 | // from 0 to 100 defines the write to read ratio, 0 is 100% write | |
605 | #define CSMI_SAS_RAID_CACHE_RATIO_RANGE 101 | |
606 | #define CSMI_SAS_RAID_CACHE_RATIO_FIXED 102 | |
607 | #define CSMI_SAS_RAID_CACHE_RATIO_AUTO 103 | |
608 | #define CSMI_SAS_RAID_CACHE_RATIO_END 255 | |
609 | ||
610 | // RAID Cache Ratio Flag | |
611 | // (bCacheRatioFlag) | |
612 | #define CSMI_SAS_RAID_CACHE_RATIO_DISABLE 0 | |
613 | #define CSMI_SAS_RAID_CACHE_RATIO_ENABLE 1 | |
614 | ||
615 | // RAID Clear Configuration Signature | |
616 | // (bClearConfiguration) | |
617 | #define CSMI_SAS_RAID_CLEAR_CONFIGURATION_SIGNATURE "RAIDCLR" | |
618 | ||
619 | // RAID Failure Codes | |
620 | // (uFailureCode) | |
621 | #define CSMI_SAS_FAIL_CODE_OK 0 | |
622 | #define CSMI_SAS_FAIL_CODE_PARAMETER_INVALID 1000 | |
623 | #define CSMI_SAS_FAIL_CODE_TRANSFORM_PRIORITY_INVALID 1001 | |
624 | #define CSMI_SAS_FAIL_CODE_REBUILD_PRIORITY_INVALID 1002 | |
625 | #define CSMI_SAS_FAIL_CODE_CACHE_RATIO_INVALID 1003 | |
626 | #define CSMI_SAS_FAIL_CODE_SURFACE_SCAN_INVALID 1004 | |
627 | #define CSMI_SAS_FAIL_CODE_CLEAR_CONFIGURATION_INVALID 1005 | |
628 | #define CSMI_SAS_FAIL_CODE_ELEMENT_INDEX_INVALID 1006 | |
629 | #define CSMI_SAS_FAIL_CODE_SUBELEMENT_INDEX_INVALID 1007 | |
630 | #define CSMI_SAS_FAIL_CODE_EXTENT_INVALID 1008 | |
631 | #define CSMI_SAS_FAIL_CODE_BLOCK_COUNT_INVALID 1009 | |
632 | #define CSMI_SAS_FAIL_CODE_DRIVE_INDEX_INVALID 1010 | |
633 | #define CSMI_SAS_FAIL_CODE_EXISTING_LUN_INVALID 1011 | |
634 | #define CSMI_SAS_FAIL_CODE_RAID_TYPE_INVALID 1012 | |
635 | #define CSMI_SAS_FAIL_CODE_STRIPE_SIZE_INVALID 1013 | |
636 | #define CSMI_SAS_FAIL_CODE_TRANSFORMATION_INVALID 1014 | |
637 | #define CSMI_SAS_FAIL_CODE_CHANGE_COUNT_INVALID 1015 | |
638 | #define CSMI_SAS_FAIL_CODE_ENUMERATION_TYPE_INVALID 1016 | |
639 | ||
640 | #define CSMI_SAS_FAIL_CODE_EXCEEDED_RAID_SET_COUNT 2000 | |
641 | #define CSMI_SAS_FAIL_CODE_DUPLICATE_LUN 2001 | |
642 | ||
643 | #define CSMI_SAS_FAIL_CODE_WAIT_FOR_OPERATION 3000 | |
644 | ||
645 | // RAID Enumeration Types | |
646 | // (uEnumerationType) | |
647 | #define CSMI_SAS_RAID_ELEMENT_TYPE_DRIVE 0 | |
648 | #define CSMI_SAS_RAID_ELEMENT_TYPE_MODULE 1 | |
649 | #define CSMI_SAS_RAID_ELEMENT_TYPE_DRIVE_RAID_SET 2 | |
650 | #define CSMI_SAS_RAID_ELEMENT_TYPE_EXTENT_DRIVE 3 | |
651 | ||
652 | // RAID Extent Types | |
653 | // (bExtentType) | |
654 | #define CSMI_SAS_RAID_EXTENT_RESERVED 0 | |
655 | #define CSMI_SAS_RAID_EXTENT_METADATA 1 | |
656 | #define CSMI_SAS_RAID_EXTENT_ALLOCATED 2 | |
657 | #define CSMI_SAS_RAID_EXTENT_UNALLOCATED 3 | |
658 | ||
659 | // RAID Operation Types | |
660 | // (uOperationType) | |
661 | #define CSMI_SAS_RAID_SET_CREATE 0 | |
662 | #define CSMI_SAS_RAID_SET_LABEL 1 | |
663 | #define CSMI_SAS_RAID_SET_TRANSFORM 2 | |
664 | #define CSMI_SAS_RAID_SET_DELETE 3 | |
665 | #define CSMI_SAS_RAID_SET_WRITE_PROTECT 4 | |
666 | #define CSMI_SAS_RAID_SET_CACHE 5 | |
667 | #define CSMI_SAS_RAID_SET_ONLINE_STATE 6 | |
668 | #define CSMI_SAS_RAID_SET_SPARE 7 | |
669 | ||
670 | // RAID Transform Types | |
671 | // (bTransformType) | |
672 | #define CSMI_SAS_RAID_SET_TRANSFORM_SPLIT_MIRROR 0 | |
673 | #define CSMI_SAS_RAID_SET_TRANSFORM_MERGE_RAID_0 1 | |
674 | #define CSMI_SAS_RAID_SET_TRANSFORM_LUN_RENUMBER 2 | |
675 | #define CSMI_SAS_RAID_SET_TRANSFORM_RAID_SET 3 | |
676 | ||
677 | // RAID Online State | |
678 | // (bOnlineState) | |
679 | #define CSMI_SAS_RAID_SET_STATE_UNKNOWN 0 | |
680 | #define CSMI_SAS_RAID_SET_STATE_ONLINE 1 | |
681 | #define CSMI_SAS_RAID_SET_STATE_OFFLINE 2 | |
682 | ||
683 | /* * * * * * * * * * SAS HBA Class IOCTL Constants * * * * * * * * * */ | |
684 | ||
685 | // Return codes for SAS IOCTL's | |
686 | // (IoctlHeader.ReturnCode) | |
687 | ||
688 | #define CSMI_SAS_PHY_INFO_CHANGED CSMI_SAS_STATUS_SUCCESS | |
689 | #define CSMI_SAS_PHY_INFO_NOT_CHANGEABLE 2000 | |
690 | #define CSMI_SAS_LINK_RATE_OUT_OF_RANGE 2001 | |
691 | ||
692 | #define CSMI_SAS_PHY_DOES_NOT_EXIST 2002 | |
693 | #define CSMI_SAS_PHY_DOES_NOT_MATCH_PORT 2003 | |
694 | #define CSMI_SAS_PHY_CANNOT_BE_SELECTED 2004 | |
695 | #define CSMI_SAS_SELECT_PHY_OR_PORT 2005 | |
696 | #define CSMI_SAS_PORT_DOES_NOT_EXIST 2006 | |
697 | #define CSMI_SAS_PORT_CANNOT_BE_SELECTED 2007 | |
698 | #define CSMI_SAS_CONNECTION_FAILED 2008 | |
699 | ||
700 | #define CSMI_SAS_NO_SATA_DEVICE 2009 | |
701 | #define CSMI_SAS_NO_SATA_SIGNATURE 2010 | |
702 | #define CSMI_SAS_SCSI_EMULATION 2011 | |
703 | #define CSMI_SAS_NOT_AN_END_DEVICE 2012 | |
704 | #define CSMI_SAS_NO_SCSI_ADDRESS 2013 | |
705 | #define CSMI_SAS_NO_DEVICE_ADDRESS 2014 | |
706 | ||
707 | // Signature value | |
708 | // (IoctlHeader.Signature) | |
709 | ||
710 | #define CSMI_SAS_SIGNATURE "CSMISAS" | |
711 | ||
712 | // Timeout value default of 60 seconds | |
713 | // (IoctlHeader.Timeout) | |
714 | ||
715 | #define CSMI_SAS_TIMEOUT 60 | |
716 | ||
717 | // Device types | |
718 | // (bDeviceType) | |
719 | ||
720 | #define CSMI_SAS_PHY_UNUSED 0x00 | |
721 | #define CSMI_SAS_NO_DEVICE_ATTACHED 0x00 | |
722 | #define CSMI_SAS_END_DEVICE 0x10 | |
723 | #define CSMI_SAS_EDGE_EXPANDER_DEVICE 0x20 | |
724 | #define CSMI_SAS_FANOUT_EXPANDER_DEVICE 0x30 | |
725 | ||
726 | // Protocol options | |
727 | // (bInitiatorPortProtocol, bTargetPortProtocol) | |
728 | ||
729 | #define CSMI_SAS_PROTOCOL_SATA 0x01 | |
730 | #define CSMI_SAS_PROTOCOL_SMP 0x02 | |
731 | #define CSMI_SAS_PROTOCOL_STP 0x04 | |
732 | #define CSMI_SAS_PROTOCOL_SSP 0x08 | |
733 | ||
734 | // Negotiated and hardware link rates | |
735 | // (bNegotiatedLinkRate, bMinimumLinkRate, bMaximumLinkRate) | |
736 | ||
737 | #define CSMI_SAS_LINK_RATE_UNKNOWN 0x00 | |
738 | #define CSMI_SAS_PHY_DISABLED 0x01 | |
739 | #define CSMI_SAS_LINK_RATE_FAILED 0x02 | |
740 | #define CSMI_SAS_SATA_SPINUP_HOLD 0x03 | |
741 | #define CSMI_SAS_SATA_PORT_SELECTOR 0x04 | |
742 | #define CSMI_SAS_LINK_RATE_1_5_GBPS 0x08 | |
743 | #define CSMI_SAS_LINK_RATE_3_0_GBPS 0x09 | |
744 | #define CSMI_SAS_LINK_VIRTUAL 0x10 | |
745 | ||
746 | // Discover state | |
747 | // (bAutoDiscover) | |
748 | ||
749 | #define CSMI_SAS_DISCOVER_NOT_SUPPORTED 0x00 | |
750 | #define CSMI_SAS_DISCOVER_NOT_STARTED 0x01 | |
751 | #define CSMI_SAS_DISCOVER_IN_PROGRESS 0x02 | |
752 | #define CSMI_SAS_DISCOVER_COMPLETE 0x03 | |
753 | #define CSMI_SAS_DISCOVER_ERROR 0x04 | |
754 | ||
755 | // Phy features | |
756 | ||
757 | #define CSMI_SAS_PHY_VIRTUAL_SMP 0x01 | |
758 | ||
759 | // Programmed link rates | |
760 | // (bMinimumLinkRate, bMaximumLinkRate) | |
761 | // (bProgrammedMinimumLinkRate, bProgrammedMaximumLinkRate) | |
762 | ||
763 | #define CSMI_SAS_PROGRAMMED_LINK_RATE_UNCHANGED 0x00 | |
764 | #define CSMI_SAS_PROGRAMMED_LINK_RATE_1_5_GBPS 0x08 | |
765 | #define CSMI_SAS_PROGRAMMED_LINK_RATE_3_0_GBPS 0x09 | |
766 | ||
767 | // Link rate | |
768 | // (bNegotiatedLinkRate in CSMI_SAS_SET_PHY_INFO) | |
769 | ||
770 | #define CSMI_SAS_LINK_RATE_NEGOTIATE 0x00 | |
771 | #define CSMI_SAS_LINK_RATE_PHY_DISABLED 0x01 | |
772 | ||
773 | // Signal class | |
774 | // (bSignalClass in CSMI_SAS_SET_PHY_INFO) | |
775 | ||
776 | #define CSMI_SAS_SIGNAL_CLASS_UNKNOWN 0x00 | |
777 | #define CSMI_SAS_SIGNAL_CLASS_DIRECT 0x01 | |
778 | #define CSMI_SAS_SIGNAL_CLASS_SERVER 0x02 | |
779 | #define CSMI_SAS_SIGNAL_CLASS_ENCLOSURE 0x03 | |
780 | ||
781 | // Link error reset | |
782 | // (bResetCounts) | |
783 | ||
784 | #define CSMI_SAS_LINK_ERROR_DONT_RESET_COUNTS 0x00 | |
785 | #define CSMI_SAS_LINK_ERROR_RESET_COUNTS 0x01 | |
786 | ||
787 | // Phy identifier | |
788 | // (bPhyIdentifier) | |
789 | ||
790 | #define CSMI_SAS_USE_PORT_IDENTIFIER 0xFF | |
791 | ||
792 | // Port identifier | |
793 | // (bPortIdentifier) | |
794 | ||
795 | #define CSMI_SAS_IGNORE_PORT 0xFF | |
796 | ||
797 | // Programmed link rates | |
798 | // (bConnectionRate) | |
799 | ||
800 | #define CSMI_SAS_LINK_RATE_NEGOTIATED 0x00 | |
801 | #define CSMI_SAS_LINK_RATE_1_5_GBPS 0x08 | |
802 | #define CSMI_SAS_LINK_RATE_3_0_GBPS 0x09 | |
803 | ||
804 | // Connection status | |
805 | // (bConnectionStatus) | |
806 | ||
807 | #define CSMI_SAS_OPEN_ACCEPT 0 | |
808 | #define CSMI_SAS_OPEN_REJECT_BAD_DESTINATION 1 | |
809 | #define CSMI_SAS_OPEN_REJECT_RATE_NOT_SUPPORTED 2 | |
810 | #define CSMI_SAS_OPEN_REJECT_NO_DESTINATION 3 | |
811 | #define CSMI_SAS_OPEN_REJECT_PATHWAY_BLOCKED 4 | |
812 | #define CSMI_SAS_OPEN_REJECT_PROTOCOL_NOT_SUPPORTED 5 | |
813 | #define CSMI_SAS_OPEN_REJECT_RESERVE_ABANDON 6 | |
814 | #define CSMI_SAS_OPEN_REJECT_RESERVE_CONTINUE 7 | |
815 | #define CSMI_SAS_OPEN_REJECT_RESERVE_INITIALIZE 8 | |
816 | #define CSMI_SAS_OPEN_REJECT_RESERVE_STOP 9 | |
817 | #define CSMI_SAS_OPEN_REJECT_RETRY 10 | |
818 | #define CSMI_SAS_OPEN_REJECT_STP_RESOURCES_BUSY 11 | |
819 | #define CSMI_SAS_OPEN_REJECT_WRONG_DESTINATION 12 | |
820 | ||
821 | // SSP Status | |
822 | // (bSSPStatus) | |
823 | ||
824 | #define CSMI_SAS_SSP_STATUS_UNKNOWN 0x00 | |
825 | #define CSMI_SAS_SSP_STATUS_WAITING 0x01 | |
826 | #define CSMI_SAS_SSP_STATUS_COMPLETED 0x02 | |
827 | #define CSMI_SAS_SSP_STATUS_FATAL_ERROR 0x03 | |
828 | #define CSMI_SAS_SSP_STATUS_RETRY 0x04 | |
829 | #define CSMI_SAS_SSP_STATUS_NO_TAG 0x05 | |
830 | ||
831 | // SSP Flags | |
832 | // (uFlags) | |
833 | ||
834 | #define CSMI_SAS_SSP_READ 0x00000001 | |
835 | #define CSMI_SAS_SSP_WRITE 0x00000002 | |
836 | #define CSMI_SAS_SSP_UNSPECIFIED 0x00000004 | |
837 | ||
838 | #define CSMI_SAS_SSP_TASK_ATTRIBUTE_SIMPLE 0x00000000 | |
839 | #define CSMI_SAS_SSP_TASK_ATTRIBUTE_HEAD_OF_QUEUE 0x00000010 | |
840 | #define CSMI_SAS_SSP_TASK_ATTRIBUTE_ORDERED 0x00000020 | |
841 | #define CSMI_SAS_SSP_TASK_ATTRIBUTE_ACA 0x00000040 | |
842 | ||
843 | // SSP Data present | |
844 | // (bDataPresent) | |
845 | ||
846 | #define CSMI_SAS_SSP_NO_DATA_PRESENT 0x00 | |
847 | #define CSMI_SAS_SSP_RESPONSE_DATA_PRESENT 0x01 | |
848 | #define CSMI_SAS_SSP_SENSE_DATA_PRESENT 0x02 | |
849 | ||
850 | // STP Flags | |
851 | // (uFlags) | |
852 | ||
853 | #define CSMI_SAS_STP_READ 0x00000001 | |
854 | #define CSMI_SAS_STP_WRITE 0x00000002 | |
855 | #define CSMI_SAS_STP_UNSPECIFIED 0x00000004 | |
856 | #define CSMI_SAS_STP_PIO 0x00000010 | |
857 | #define CSMI_SAS_STP_DMA 0x00000020 | |
858 | #define CSMI_SAS_STP_PACKET 0x00000040 | |
859 | #define CSMI_SAS_STP_DMA_QUEUED 0x00000080 | |
860 | #define CSMI_SAS_STP_EXECUTE_DIAG 0x00000100 | |
861 | #define CSMI_SAS_STP_RESET_DEVICE 0x00000200 | |
862 | ||
863 | // Task Management Flags | |
864 | // (uFlags) | |
865 | ||
866 | #define CSMI_SAS_TASK_IU 0x00000001 | |
867 | #define CSMI_SAS_HARD_RESET_SEQUENCE 0x00000002 | |
868 | #define CSMI_SAS_SUPPRESS_RESULT 0x00000004 | |
869 | ||
870 | // Task Management Functions | |
871 | // (bTaskManagement) | |
872 | ||
873 | #define CSMI_SAS_SSP_ABORT_TASK 0x01 | |
874 | #define CSMI_SAS_SSP_ABORT_TASK_SET 0x02 | |
875 | #define CSMI_SAS_SSP_CLEAR_TASK_SET 0x04 | |
876 | #define CSMI_SAS_SSP_LOGICAL_UNIT_RESET 0x08 | |
877 | #define CSMI_SAS_SSP_CLEAR_ACA 0x40 | |
878 | #define CSMI_SAS_SSP_QUERY_TASK 0x80 | |
879 | ||
880 | // Task Management Information | |
881 | // (uInformation) | |
882 | ||
883 | #define CSMI_SAS_SSP_TEST 1 | |
884 | #define CSMI_SAS_SSP_EXCEEDED 2 | |
885 | #define CSMI_SAS_SSP_DEMAND 3 | |
886 | #define CSMI_SAS_SSP_TRIGGER 4 | |
887 | ||
888 | // Connector Pinout Information | |
889 | // (uPinout) | |
890 | ||
891 | #define CSMI_SAS_CON_UNKNOWN 0x00000001 | |
892 | #define CSMI_SAS_CON_SFF_8482 0x00000002 | |
893 | #define CSMI_SAS_CON_SFF_8470_LANE_1 0x00000100 | |
894 | #define CSMI_SAS_CON_SFF_8470_LANE_2 0x00000200 | |
895 | #define CSMI_SAS_CON_SFF_8470_LANE_3 0x00000400 | |
896 | #define CSMI_SAS_CON_SFF_8470_LANE_4 0x00000800 | |
897 | #define CSMI_SAS_CON_SFF_8484_LANE_1 0x00010000 | |
898 | #define CSMI_SAS_CON_SFF_8484_LANE_2 0x00020000 | |
899 | #define CSMI_SAS_CON_SFF_8484_LANE_3 0x00040000 | |
900 | #define CSMI_SAS_CON_SFF_8484_LANE_4 0x00080000 | |
901 | ||
902 | // Connector Location Information | |
903 | // (bLocation) | |
904 | ||
905 | // same as uPinout above... | |
906 | // #define CSMI_SAS_CON_UNKNOWN 0x01 | |
907 | #define CSMI_SAS_CON_INTERNAL 0x02 | |
908 | #define CSMI_SAS_CON_EXTERNAL 0x04 | |
909 | #define CSMI_SAS_CON_SWITCHABLE 0x08 | |
910 | #define CSMI_SAS_CON_AUTO 0x10 | |
911 | #define CSMI_SAS_CON_NOT_PRESENT 0x20 | |
912 | #define CSMI_SAS_CON_NOT_CONNECTED 0x80 | |
913 | ||
914 | // Device location identification | |
915 | // (bIdentify) | |
916 | ||
917 | #define CSMI_SAS_LOCATE_UNKNOWN 0x00 | |
918 | #define CSMI_SAS_LOCATE_FORCE_OFF 0x01 | |
919 | #define CSMI_SAS_LOCATE_FORCE_ON 0x02 | |
920 | ||
921 | // Location Valid flags | |
922 | // (uLocationFlags) | |
923 | ||
924 | #define CSMI_SAS_LOCATE_SAS_ADDRESS_VALID 0x00000001 | |
925 | #define CSMI_SAS_LOCATE_SAS_LUN_VALID 0x00000002 | |
926 | #define CSMI_SAS_LOCATE_ENCLOSURE_IDENTIFIER_VALID 0x00000004 | |
927 | #define CSMI_SAS_LOCATE_ENCLOSURE_NAME_VALID 0x00000008 | |
928 | #define CSMI_SAS_LOCATE_BAY_PREFIX_VALID 0x00000010 | |
929 | #define CSMI_SAS_LOCATE_BAY_IDENTIFIER_VALID 0x00000020 | |
930 | #define CSMI_SAS_LOCATE_LOCATION_STATE_VALID 0x00000040 | |
931 | ||
932 | /* * * * * * * * SAS Phy Control Class IOCTL Constants * * * * * * * * */ | |
933 | ||
934 | // Return codes for SAS Phy Control IOCTL's | |
935 | // (IoctlHeader.ReturnCode) | |
936 | ||
937 | // Signature value | |
938 | // (IoctlHeader.Signature) | |
939 | ||
940 | #define CSMI_PHY_SIGNATURE "CSMIPHY" | |
941 | ||
942 | // Phy Control Functions | |
943 | // (bFunction) | |
944 | ||
945 | // values 0x00 to 0xFF are consistent in definition with the SMP PHY CONTROL | |
946 | // function defined in the SAS spec | |
947 | #define CSMI_SAS_PC_NOP 0x00000000 | |
948 | #define CSMI_SAS_PC_LINK_RESET 0x00000001 | |
949 | #define CSMI_SAS_PC_HARD_RESET 0x00000002 | |
950 | #define CSMI_SAS_PC_PHY_DISABLE 0x00000003 | |
951 | // 0x04 to 0xFF reserved... | |
952 | #define CSMI_SAS_PC_GET_PHY_SETTINGS 0x00000100 | |
953 | ||
954 | // Link Flags | |
955 | #define CSMI_SAS_PHY_ACTIVATE_CONTROL 0x00000001 | |
956 | #define CSMI_SAS_PHY_UPDATE_SPINUP_RATE 0x00000002 | |
957 | #define CSMI_SAS_PHY_AUTO_COMWAKE 0x00000004 | |
958 | ||
959 | // Device Types for Phy Settings | |
960 | // (bType) | |
961 | #define CSMI_SAS_UNDEFINED 0x00 | |
962 | #define CSMI_SAS_SATA 0x01 | |
963 | #define CSMI_SAS_SAS 0x02 | |
964 | ||
965 | // Transmitter Flags | |
966 | // (uTransmitterFlags) | |
967 | #define CSMI_SAS_PHY_PREEMPHASIS_DISABLED 0x00000001 | |
968 | ||
969 | // Receiver Flags | |
970 | // (uReceiverFlags) | |
971 | #define CSMI_SAS_PHY_EQUALIZATION_DISABLED 0x00000001 | |
972 | ||
973 | // Pattern Flags | |
974 | // (uPatternFlags) | |
975 | // #define CSMI_SAS_PHY_ACTIVATE_CONTROL 0x00000001 | |
976 | #define CSMI_SAS_PHY_DISABLE_SCRAMBLING 0x00000002 | |
977 | #define CSMI_SAS_PHY_DISABLE_ALIGN 0x00000004 | |
978 | #define CSMI_SAS_PHY_DISABLE_SSC 0x00000008 | |
979 | ||
980 | #define CSMI_SAS_PHY_FIXED_PATTERN 0x00000010 | |
981 | #define CSMI_SAS_PHY_USER_PATTERN 0x00000020 | |
982 | ||
983 | // Fixed Patterns | |
984 | // (bFixedPattern) | |
985 | #define CSMI_SAS_PHY_CJPAT 0x00000001 | |
986 | #define CSMI_SAS_PHY_ALIGN 0x00000002 | |
987 | ||
988 | // Type Flags | |
989 | // (bTypeFlags) | |
990 | #define CSMI_SAS_PHY_POSITIVE_DISPARITY 0x01 | |
991 | #define CSMI_SAS_PHY_NEGATIVE_DISPARITY 0x02 | |
992 | #define CSMI_SAS_PHY_CONTROL_CHARACTER 0x04 | |
993 | ||
994 | // Miscellaneous | |
995 | #define SLOT_NUMBER_UNKNOWN 0xFFFF | |
996 | ||
997 | /*************************************************************************/ | |
998 | /* DATA STRUCTURES */ | |
999 | /*************************************************************************/ | |
1000 | ||
1001 | /* * * * * * * * * * Class Independent Structures * * * * * * * * * */ | |
1002 | ||
1003 | // EDM #pragma CSMI_SAS_BEGIN_PACK(8) | |
1004 | #pragma pack(8) | |
1005 | ||
1006 | // CC_CSMI_SAS_DRIVER_INFO | |
1007 | ||
1008 | typedef struct _CSMI_SAS_DRIVER_INFO { | |
1009 | __u8 szName[81]; | |
1010 | __u8 szDescription[81]; | |
1011 | __u16 usMajorRevision; | |
1012 | __u16 usMinorRevision; | |
1013 | __u16 usBuildRevision; | |
1014 | __u16 usReleaseRevision; | |
1015 | __u16 usCSMIMajorRevision; | |
1016 | __u16 usCSMIMinorRevision; | |
1017 | } CSMI_SAS_DRIVER_INFO, | |
1018 | *PCSMI_SAS_DRIVER_INFO; | |
1019 | ||
1020 | typedef struct _CSMI_SAS_DRIVER_INFO_BUFFER { | |
1021 | IOCTL_HEADER IoctlHeader; | |
1022 | CSMI_SAS_DRIVER_INFO Information; | |
1023 | } CSMI_SAS_DRIVER_INFO_BUFFER, | |
1024 | *PCSMI_SAS_DRIVER_INFO_BUFFER; | |
1025 | ||
1026 | // CC_CSMI_SAS_CNTLR_CONFIGURATION | |
1027 | ||
1028 | typedef struct _CSMI_SAS_PCI_BUS_ADDRESS { | |
1029 | __u8 bBusNumber; | |
1030 | __u8 bDeviceNumber; | |
1031 | __u8 bFunctionNumber; | |
1032 | __u8 bReserved; | |
1033 | } CSMI_SAS_PCI_BUS_ADDRESS, | |
1034 | *PCSMI_SAS_PCI_BUS_ADDRESS; | |
1035 | ||
1036 | typedef union _CSMI_SAS_IO_BUS_ADDRESS { | |
1037 | CSMI_SAS_PCI_BUS_ADDRESS PciAddress; | |
1038 | __u8 bReserved[32]; | |
1039 | } CSMI_SAS_IO_BUS_ADDRESS, | |
1040 | *PCSMI_SAS_IO_BUS_ADDRESS; | |
1041 | ||
1042 | typedef struct _CSMI_SAS_CNTLR_CONFIG { | |
1043 | __u32 uBaseIoAddress; | |
1044 | struct { | |
1045 | __u32 uLowPart; | |
1046 | __u32 uHighPart; | |
1047 | } BaseMemoryAddress; | |
1048 | __u32 uBoardID; | |
1049 | __u16 usSlotNumber; | |
1050 | __u8 bControllerClass; | |
1051 | __u8 bIoBusType; | |
1052 | CSMI_SAS_IO_BUS_ADDRESS BusAddress; | |
1053 | __u8 szSerialNumber[81]; | |
1054 | __u16 usMajorRevision; | |
1055 | __u16 usMinorRevision; | |
1056 | __u16 usBuildRevision; | |
1057 | __u16 usReleaseRevision; | |
1058 | __u16 usBIOSMajorRevision; | |
1059 | __u16 usBIOSMinorRevision; | |
1060 | __u16 usBIOSBuildRevision; | |
1061 | __u16 usBIOSReleaseRevision; | |
1062 | __u32 uControllerFlags; | |
1063 | __u16 usRromMajorRevision; | |
1064 | __u16 usRromMinorRevision; | |
1065 | __u16 usRromBuildRevision; | |
1066 | __u16 usRromReleaseRevision; | |
1067 | __u16 usRromBIOSMajorRevision; | |
1068 | __u16 usRromBIOSMinorRevision; | |
1069 | __u16 usRromBIOSBuildRevision; | |
1070 | __u16 usRromBIOSReleaseRevision; | |
1071 | __u8 bReserved[7]; | |
1072 | } CSMI_SAS_CNTLR_CONFIG, | |
1073 | *PCSMI_SAS_CNTLR_CONFIG; | |
1074 | ||
1075 | typedef struct _CSMI_SAS_CNTLR_CONFIG_BUFFER { | |
1076 | IOCTL_HEADER IoctlHeader; | |
1077 | CSMI_SAS_CNTLR_CONFIG Configuration; | |
1078 | } CSMI_SAS_CNTLR_CONFIG_BUFFER, | |
1079 | *PCSMI_SAS_CNTLR_CONFIG_BUFFER; | |
1080 | ||
1081 | // CC_CSMI_SAS_CNTLR_STATUS | |
1082 | ||
1083 | typedef struct _CSMI_SAS_CNTLR_STATUS { | |
1084 | __u32 uStatus; | |
1085 | __u32 uOfflineReason; | |
1086 | __u8 bReserved[28]; | |
1087 | } CSMI_SAS_CNTLR_STATUS, | |
1088 | *PCSMI_SAS_CNTLR_STATUS; | |
1089 | ||
1090 | typedef struct _CSMI_SAS_CNTLR_STATUS_BUFFER { | |
1091 | IOCTL_HEADER IoctlHeader; | |
1092 | CSMI_SAS_CNTLR_STATUS Status; | |
1093 | } CSMI_SAS_CNTLR_STATUS_BUFFER, | |
1094 | *PCSMI_SAS_CNTLR_STATUS_BUFFER; | |
1095 | ||
1096 | // CC_CSMI_SAS_FIRMWARE_DOWNLOAD | |
1097 | ||
1098 | typedef struct _CSMI_SAS_FIRMWARE_DOWNLOAD { | |
1099 | __u32 uBufferLength; | |
1100 | __u32 uDownloadFlags; | |
1101 | __u8 bReserved[32]; | |
1102 | __u16 usStatus; | |
1103 | __u16 usSeverity; | |
1104 | } CSMI_SAS_FIRMWARE_DOWNLOAD, | |
1105 | *PCSMI_SAS_FIRMWARE_DOWNLOAD; | |
1106 | ||
1107 | typedef struct _CSMI_SAS_FIRMWARE_DOWNLOAD_BUFFER { | |
1108 | IOCTL_HEADER IoctlHeader; | |
1109 | CSMI_SAS_FIRMWARE_DOWNLOAD Information; | |
1110 | __u8 bDataBuffer[1]; | |
1111 | } CSMI_SAS_FIRMWARE_DOWNLOAD_BUFFER, | |
1112 | *PCSMI_SAS_FIRMWARE_DOWNLOAD_BUFFER; | |
1113 | ||
1114 | // CC_CSMI_SAS_RAID_INFO | |
1115 | ||
1116 | typedef struct _CSMI_SAS_RAID_INFO { | |
1117 | __u32 uNumRaidSets; | |
1118 | __u32 uMaxDrivesPerSet; | |
1119 | __u32 uMaxRaidSets; | |
1120 | __u8 bMaxRaidTypes; | |
1121 | __u8 bReservedByteFields[7]; | |
1122 | struct | |
1123 | { | |
1124 | __u32 uLowPart; | |
1125 | __u32 uHighPart; | |
1126 | } ulMinRaidSetBlocks; | |
1127 | struct | |
1128 | { | |
1129 | __u32 uLowPart; | |
1130 | __u32 uHighPart; | |
1131 | } ulMaxRaidSetBlocks; | |
1132 | __u32 uMaxPhysicalDrives; | |
1133 | __u32 uMaxExtents; | |
1134 | __u32 uMaxModules; | |
1135 | __u32 uMaxTransformationMemory; | |
1136 | __u32 uChangeCount; | |
1137 | __u8 bReserved[44]; | |
1138 | } CSMI_SAS_RAID_INFO, | |
1139 | *PCSMI_SAS_RAID_INFO; | |
1140 | ||
1141 | typedef struct _CSMI_SAS_RAID_INFO_BUFFER { | |
1142 | IOCTL_HEADER IoctlHeader; | |
1143 | CSMI_SAS_RAID_INFO Information; | |
1144 | } CSMI_SAS_RAID_INFO_BUFFER, | |
1145 | *PCSMI_SAS_RAID_INFO_BUFFER; | |
1146 | ||
1147 | // CC_CSMI_SAS_GET_RAID_CONFIG | |
1148 | ||
1149 | typedef struct _CSMI_SAS_RAID_DRIVES { | |
1150 | __u8 bModel[40]; | |
1151 | __u8 bFirmware[8]; | |
1152 | __u8 bSerialNumber[40]; | |
1153 | __u8 bSASAddress[8]; | |
1154 | __u8 bSASLun[8]; | |
1155 | __u8 bDriveStatus; | |
1156 | __u8 bDriveUsage; | |
1157 | __u16 usBlockSize; | |
1158 | __u8 bDriveType; | |
1159 | __u8 bReserved[15]; | |
1160 | __u32 uDriveIndex; | |
1161 | struct | |
1162 | { | |
1163 | __u32 uLowPart; | |
1164 | __u32 uHighPart; | |
1165 | } ulTotalUserBlocks; | |
1166 | } CSMI_SAS_RAID_DRIVES, | |
1167 | *PCSMI_SAS_RAID_DRIVES; | |
1168 | ||
1169 | typedef struct _CSMI_SAS_RAID_DEVICE_ID { | |
1170 | __u8 bDeviceIdentificationVPDPage[1]; | |
1171 | } CSMI_SAS_RAID_DEVICE_ID, | |
1172 | *PCSMI_SAS_RAID_DEVICE_ID; | |
1173 | ||
1174 | typedef struct _CSMI_SAS_RAID_SET_ADDITIONAL_DATA { | |
1175 | __u8 bLabel[16]; | |
1176 | __u8 bRaidSetLun[8]; | |
1177 | __u8 bWriteProtection; | |
1178 | __u8 bCacheSetting; | |
1179 | __u8 bCacheRatio; | |
1180 | __u16 usBlockSize; | |
1181 | __u8 bReservedBytes[11]; | |
1182 | struct | |
1183 | { | |
1184 | __u32 uLowPart; | |
1185 | __u32 uHighPart; | |
1186 | } ulRaidSetExtentOffset; | |
1187 | struct | |
1188 | { | |
1189 | __u32 uLowPart; | |
1190 | __u32 uHighPart; | |
1191 | } ulRaidSetBlocks; | |
1192 | __u32 uStripeSizeInBlocks; | |
1193 | __u32 uSectorsPerTrack; | |
1194 | __u8 bApplicationScratchPad[16]; | |
1195 | __u32 uNumberOfHeads; | |
1196 | __u32 uNumberOfTracks; | |
1197 | __u8 bReserved[24]; | |
1198 | } CSMI_SAS_RAID_SET_ADDITIONAL_DATA, | |
1199 | *PCSMI_SAS_RAID_SET_ADDITIONAL_DATA; | |
1200 | ||
1201 | typedef struct _CSMI_SAS_RAID_CONFIG { | |
1202 | __u32 uRaidSetIndex; | |
1203 | __u32 uCapacity; | |
1204 | __u32 uStripeSize; | |
1205 | __u8 bRaidType; | |
1206 | __u8 bStatus; | |
1207 | __u8 bInformation; | |
1208 | __u8 bDriveCount; | |
1209 | __u8 bDataType; | |
1210 | __u8 bReserved[11]; | |
1211 | __u32 uFailureCode; | |
1212 | __u32 uChangeCount; | |
1213 | union { | |
1214 | CSMI_SAS_RAID_DRIVES Drives[1]; | |
1215 | CSMI_SAS_RAID_DEVICE_ID DeviceId[1]; | |
1216 | CSMI_SAS_RAID_SET_ADDITIONAL_DATA Data[1]; | |
1217 | }; | |
1218 | } CSMI_SAS_RAID_CONFIG, | |
1219 | *PCSMI_SAS_RAID_CONFIG; | |
1220 | ||
1221 | typedef struct _CSMI_SAS_RAID_CONFIG_BUFFER { | |
1222 | IOCTL_HEADER IoctlHeader; | |
1223 | CSMI_SAS_RAID_CONFIG Configuration; | |
1224 | } CSMI_SAS_RAID_CONFIG_BUFFER, | |
1225 | *PCSMI_SAS_RAID_CONFIG_BUFFER; | |
1226 | ||
1227 | // CC_CSMI_SAS_GET_RAID_FEATURES | |
1228 | ||
1229 | typedef struct _CSMI_SAS_RAID_TYPE_DESCRIPTION { | |
1230 | __u8 bRaidType; | |
1231 | __u8 bReservedBytes[7]; | |
1232 | __u32 uSupportedStripeSizeMap; | |
1233 | __u8 bReserved[24]; | |
1234 | } CSMI_SAS_RAID_TYPE_DESCRIPTION, | |
1235 | *PCSMI_SAS_RAID_TYPE_DESCRIPTION; | |
1236 | ||
1237 | typedef struct _CSMI_SAS_RAID_FEATURES { | |
1238 | __u32 uFeatures; | |
1239 | __u8 bReservedFeatures[32]; | |
1240 | __u8 bDefaultTransformPriority; | |
1241 | __u8 bTransformPriority; | |
1242 | __u8 bDefaultRebuildPriority; | |
1243 | __u8 bRebuildPriority; | |
1244 | __u8 bDefaultSurfaceScanPriority; | |
1245 | __u8 bSurfaceScanPriority; | |
1246 | __u16 usReserved; | |
1247 | __u32 uRaidSetTransformationRules; | |
1248 | __u32 uReserved[11]; | |
1249 | CSMI_SAS_RAID_TYPE_DESCRIPTION RaidType[24]; | |
1250 | __u8 bCacheRatiosSupported[104]; | |
1251 | __u32 uChangeCount; | |
1252 | __u32 uFailureCode; | |
1253 | __u8 bReserved[120]; | |
1254 | } CSMI_SAS_RAID_FEATURES, | |
1255 | *PCSMI_SAS_RAID_FEATURES; | |
1256 | ||
1257 | typedef struct _CSMI_SAS_RAID_FEATURES_BUFFER { | |
1258 | IOCTL_HEADER IoctlHeader; | |
1259 | CSMI_SAS_RAID_FEATURES Information; | |
1260 | } CSMI_SAS_RAID_FEATURES_BUFFER, | |
1261 | *PCSMI_SAS_RAID_FEATURES_BUFFER; | |
1262 | ||
1263 | // CC_CSMI_SAS_SET_RAID_CONTROL | |
1264 | ||
1265 | typedef struct _CSMI_SAS_RAID_CONTROL { | |
1266 | __u8 bTransformPriority; | |
1267 | __u8 bRebuildPriority; | |
1268 | __u8 bCacheRatioFlag; | |
1269 | __u8 bCacheRatio; | |
1270 | __u8 bSurfaceScanPriority; | |
1271 | __u8 bReservedBytes[15]; | |
1272 | __u8 bClearConfiguration[8]; | |
1273 | __u32 uChangeCount; | |
1274 | __u8 bReserved[88]; | |
1275 | __u32 uFailureCode; | |
1276 | __u8 bFailureDescription[80]; | |
1277 | } CSMI_SAS_RAID_CONTROL, | |
1278 | *PCSMI_SAS_RAID_CONTROL; | |
1279 | ||
1280 | typedef struct _CSMI_SAS_RAID_CONTROL_BUFFER { | |
1281 | IOCTL_HEADER IoctlHeader; | |
1282 | CSMI_SAS_RAID_CONTROL Information; | |
1283 | } CSMI_SAS_RAID_CONTROL_BUFFER, | |
1284 | *PCSMI_SAS_RAID_CONTROL_BUFFER; | |
1285 | ||
1286 | // CC_CSMI_SAS_GET_RAID_ELEMENT | |
1287 | ||
1288 | typedef struct _CSMI_SAS_DRIVE_EXTENT_INFO { | |
1289 | __u32 uDriveIndex; | |
1290 | __u8 bExtentType; | |
1291 | __u8 bReservedBytes[7]; | |
1292 | struct | |
1293 | { | |
1294 | __u32 uLowPart; | |
1295 | __u32 uHighPart; | |
1296 | } ulExtentOffset; | |
1297 | struct | |
1298 | { | |
1299 | __u32 uLowPart; | |
1300 | __u32 uHighPart; | |
1301 | } ulExtentBlocks; | |
1302 | __u32 uRaidSetIndex; | |
1303 | __u8 bReserved[96]; | |
1304 | } CSMI_SAS_DRIVE_EXTENT_INFO, | |
1305 | *PCSMI_SAS_DRIVE_EXTENT_INFO; | |
1306 | ||
1307 | typedef struct _CSMI_SAS_RAID_MODULE_INFO { | |
1308 | __u8 bReserved[128]; | |
1309 | } CSMI_SAS_RAID_MODULE_INFO, | |
1310 | *PCSMI_SAS_RAID_MODULE_INFO; | |
1311 | ||
1312 | typedef struct _CSMI_SAS_DRIVE_LOCATION { | |
1313 | __u8 bConnector[16]; | |
1314 | __u8 bBoxName[16]; | |
1315 | __u32 uBay; | |
1316 | __u8 bReservedBytes[4]; | |
1317 | __u8 bAttachedSASAddress[8]; | |
1318 | __u8 bAttachedPhyIdentifier; | |
1319 | __u8 bReserved[79]; | |
1320 | } CSMI_SAS_DRIVE_LOCATION, | |
1321 | *PCSMI_SAS_DRIVE_LOCATION; | |
1322 | ||
1323 | typedef struct _CSMI_SAS_RAID_DRIVES_ADDITIONAL_DATA { | |
1324 | __u8 bNegotiatedLinkRate[2]; | |
1325 | __u8 bReserved[126]; | |
1326 | } CSMI_SAS_RAID_DRIVES_ADDITIONAL_DATA, | |
1327 | *PCSMI_SAS_RAID_DRIVES_ADDITIONAL_DATA; | |
1328 | ||
1329 | typedef struct _CSMI_SAS_DRIVE_INFO { | |
1330 | CSMI_SAS_RAID_DRIVES Device; | |
1331 | CSMI_SAS_RAID_DRIVES_ADDITIONAL_DATA Data; | |
1332 | CSMI_SAS_DRIVE_LOCATION Location; | |
1333 | __u8 bReserved[16]; | |
1334 | } CSMI_SAS_DRIVE_INFO, | |
1335 | *PCSMI_SAS_DRIVE_INFO; | |
1336 | ||
1337 | typedef struct _CSMI_SAS_RAID_ELEMENT { | |
1338 | __u32 uEnumerationType; | |
1339 | __u32 uElementIndex; | |
1340 | __u32 uNumElements; | |
1341 | __u32 uChangeCount; | |
1342 | __u32 uSubElementIndex; | |
1343 | __u8 bReserved[32]; | |
1344 | __u32 uFailureCode; | |
1345 | __u8 bFailureDescription[80]; | |
1346 | union { | |
1347 | CSMI_SAS_DRIVE_INFO Drive; | |
1348 | CSMI_SAS_RAID_MODULE_INFO Module; | |
1349 | CSMI_SAS_DRIVE_EXTENT_INFO Extent; | |
1350 | } Element; | |
1351 | } CSMI_SAS_RAID_ELEMENT, | |
1352 | *PCSMI_SAS_RAID_ELEMENT; | |
1353 | ||
1354 | typedef struct _CSMI_SAS_RAID_ELEMENT_BUFFER { | |
1355 | IOCTL_HEADER IoctlHeader; | |
1356 | CSMI_SAS_RAID_ELEMENT Information; | |
1357 | } CSMI_SAS_RAID_ELEMENT_BUFFER, | |
1358 | *PCSMI_SAS_RAID_ELEMENT_BUFFER; | |
1359 | ||
1360 | // CC_CSMI_SAS_SET_RAID_OPERATION | |
1361 | ||
1362 | typedef struct _CSMI_SAS_RAID_SET_LIST { | |
1363 | __u32 uRaidSetIndex; | |
1364 | __u8 bExistingLun[8]; | |
1365 | __u8 bNewLun[8]; | |
1366 | __u8 bReserved[12]; | |
1367 | } CSMI_SAS_RAID_SET_LIST, | |
1368 | *PCSMI_SAS_RAID_SET_LIST; | |
1369 | ||
1370 | typedef struct _CSMI_SAS_RAID_SET_DRIVE_LIST { | |
1371 | __u32 uDriveIndex; | |
1372 | __u8 bDriveUsage; | |
1373 | __u8 bReserved[27]; | |
1374 | } CSMI_SAS_RAID_SET_DRIVE_LIST, | |
1375 | *PCSMI_SAS_RAID_SET_DRIVE_LIST; | |
1376 | ||
1377 | typedef struct _CSMI_SAS_RAID_SET_SPARE_INFO { | |
1378 | __u32 uRaidSetIndex; | |
1379 | __u32 uDriveCount; | |
1380 | __u8 bApplicationScratchPad[16]; | |
1381 | __u8 bReserved[104]; | |
1382 | } CSMI_SAS_RAID_SET_SPARE_INFO, | |
1383 | *PCSMI_SAS_RAID_SET_SPARE_INFO; | |
1384 | ||
1385 | typedef struct _CSMI_SAS_RAID_SET_ONLINE_STATE_INFO { | |
1386 | __u32 uRaidSetIndex; | |
1387 | __u8 bOnlineState; | |
1388 | __u8 bReserved[123]; | |
1389 | } CSMI_SAS_RAID_SET_ONLINE_STATE_INFO, | |
1390 | *PCSMI_SAS_RAID_SET_ONLINE_STATE_INFO; | |
1391 | ||
1392 | typedef struct _CSMI_SAS_RAID_SET_CACHE_INFO { | |
1393 | __u32 uRaidSetIndex; | |
1394 | __u8 bCacheSetting; | |
1395 | __u8 bCacheRatioFlag; | |
1396 | __u8 bCacheRatio; | |
1397 | __u8 bReserved[121]; | |
1398 | } CSMI_SAS_RAID_SET_CACHE_INFO, | |
1399 | *PCSMI_SAS_RAID_SET_CACHE_INFO; | |
1400 | ||
1401 | typedef struct _CSMI_SAS_RAID_SET_WRITE_PROTECT_INFO { | |
1402 | __u32 uRaidSetIndex; | |
1403 | __u8 bWriteProtectSetting; | |
1404 | __u8 bReserved[123]; | |
1405 | } CSMI_SAS_RAID_SET_WRITE_PROTECT_INFO, | |
1406 | *PCSMI_SAS_RAID_SET_WRITE_PROTECT_INFO; | |
1407 | ||
1408 | typedef struct _CSMI_SAS_RAID_SET_DELETE_INFO { | |
1409 | __u32 uRaidSetIndex; | |
1410 | __u8 bReserved[124]; | |
1411 | } CSMI_SAS_RAID_SET_DELETE_INFO, | |
1412 | *PCSMI_SAS_RAID_SET_DELETE_INFO; | |
1413 | ||
1414 | typedef struct _CSMI_SAS_RAID_SET_MODIFY_INFO { | |
1415 | __u8 bRaidType; | |
1416 | __u8 bReservedBytes[7]; | |
1417 | __u32 uStripeSize; | |
1418 | struct | |
1419 | { | |
1420 | __u32 uLowPart; | |
1421 | __u32 uHighPart; | |
1422 | } ulRaidSetBlocks; | |
1423 | struct | |
1424 | { | |
1425 | __u32 uLowPart; | |
1426 | __u32 uHighPart; | |
1427 | } ulRaidSetExtentOffset; | |
1428 | __u32 uDriveCount; | |
1429 | __u8 bReserved[96]; | |
1430 | } CSMI_SAS_RAID_SET_MODIFY_INFO, | |
1431 | *PCSMI_SAS_RAID_SET_MODIFY_INFO; | |
1432 | ||
1433 | typedef struct _CSMI_SAS_RAID_SET_TRANSFORM_INFO { | |
1434 | __u8 bTransformType; | |
1435 | __u8 bReservedBytes[3]; | |
1436 | __u32 uRaidSetIndex; | |
1437 | __u8 bRaidType; | |
1438 | __u8 bReservedBytes2[11]; | |
1439 | __u32 uAdditionalRaidSetIndex; | |
1440 | __u32 uRaidSetCount; | |
1441 | __u8 bApplicationScratchPad[16]; | |
1442 | CSMI_SAS_RAID_SET_MODIFY_INFO Modify; | |
1443 | __u8 bReserved[80]; | |
1444 | } CSMI_SAS_RAID_SET_TRANSFORM_INFO, | |
1445 | *PCSMI_SAS_RAID_SET_TRANSFORM_INFO; | |
1446 | ||
1447 | typedef struct _CSMI_SAS_RAID_SET_LABEL_INFO { | |
1448 | __u32 uRaidSetIndex; | |
1449 | __u8 bLabel[16]; | |
1450 | __u8 bReserved[108]; | |
1451 | } CSMI_SAS_RAID_SET_LABEL_INFO, | |
1452 | *PCSMI_SAS_RAID_SET_LABEL_INFO; | |
1453 | ||
1454 | typedef struct _CSMI_SAS_RAID_SET_CREATE_INFO { | |
1455 | __u8 bRaidType; | |
1456 | __u8 bReservedBytes[7]; | |
1457 | __u32 uStripeSize; | |
1458 | __u32 uTrackSectorCount; | |
1459 | struct | |
1460 | { | |
1461 | __u32 uLowPart; | |
1462 | __u32 uHighPart; | |
1463 | } ulRaidSetBlocks; | |
1464 | struct | |
1465 | { | |
1466 | __u32 uLowPart; | |
1467 | __u32 uHighPart; | |
1468 | } ulRaidSetExtentOffset; | |
1469 | __u32 uDriveCount; | |
1470 | __u8 bLabel[16]; | |
1471 | __u32 uRaidSetIndex; | |
1472 | __u8 bApplicationScratchPad[16]; | |
1473 | __u32 uNumberOfHeads; | |
1474 | __u32 uNumberOfTracks; | |
1475 | __u8 bReserved[48]; | |
1476 | } CSMI_SAS_RAID_SET_CREATE_INFO, | |
1477 | *PCSMI_SAS_RAID_SET_CREATE_INFO; | |
1478 | ||
1479 | typedef struct _CSMI_SAS_RAID_SET_OPERATION { | |
1480 | __u32 uOperationType; | |
1481 | __u32 uChangeCount; | |
1482 | __u32 uFailureCode; | |
1483 | __u8 bFailureDescription[80]; | |
1484 | __u8 bReserved[28]; | |
1485 | union { | |
1486 | CSMI_SAS_RAID_SET_CREATE_INFO Create; | |
1487 | CSMI_SAS_RAID_SET_LABEL_INFO Label; | |
1488 | CSMI_SAS_RAID_SET_TRANSFORM_INFO Transform; | |
1489 | CSMI_SAS_RAID_SET_DELETE_INFO Delete; | |
1490 | CSMI_SAS_RAID_SET_WRITE_PROTECT_INFO Protect; | |
1491 | CSMI_SAS_RAID_SET_CACHE_INFO Cache; | |
1492 | CSMI_SAS_RAID_SET_ONLINE_STATE_INFO State; | |
1493 | CSMI_SAS_RAID_SET_SPARE_INFO Spare; | |
1494 | } Operation; | |
1495 | union { | |
1496 | CSMI_SAS_RAID_SET_DRIVE_LIST DriveList[1]; | |
1497 | CSMI_SAS_RAID_SET_LIST RaidSetList[1]; | |
1498 | } Parameters; | |
1499 | } CSMI_SAS_RAID_SET_OPERATION, | |
1500 | *PCSMI_SAS_RAID_SET_OPERATION; | |
1501 | ||
1502 | typedef struct _CSMI_SAS_RAID_SET_OPERATION_BUFFER { | |
1503 | IOCTL_HEADER IoctlHeader; | |
1504 | CSMI_SAS_RAID_SET_OPERATION Information; | |
1505 | } CSMI_SAS_RAID_SET_OPERATION_BUFFER, | |
1506 | *PCSMI_SAS_RAID_SET_OPERATION_BUFFER; | |
1507 | ||
1508 | /* * * * * * * * * * SAS HBA Class Structures * * * * * * * * * */ | |
1509 | ||
1510 | // CC_CSMI_SAS_GET_PHY_INFO | |
1511 | ||
1512 | typedef struct _CSMI_SAS_IDENTIFY { | |
1513 | __u8 bDeviceType; | |
1514 | __u8 bRestricted; | |
1515 | __u8 bInitiatorPortProtocol; | |
1516 | __u8 bTargetPortProtocol; | |
1517 | __u8 bRestricted2[8]; | |
1518 | __u8 bSASAddress[8]; | |
1519 | __u8 bPhyIdentifier; | |
1520 | __u8 bSignalClass; | |
1521 | __u8 bReserved[6]; | |
1522 | } CSMI_SAS_IDENTIFY, | |
1523 | *PCSMI_SAS_IDENTIFY; | |
1524 | ||
1525 | typedef struct _CSMI_SAS_PHY_ENTITY { | |
1526 | CSMI_SAS_IDENTIFY Identify; | |
1527 | __u8 bPortIdentifier; | |
1528 | __u8 bNegotiatedLinkRate; | |
1529 | __u8 bMinimumLinkRate; | |
1530 | __u8 bMaximumLinkRate; | |
1531 | __u8 bPhyChangeCount; | |
1532 | __u8 bAutoDiscover; | |
1533 | __u8 bPhyFeatures; | |
1534 | __u8 bReserved; | |
1535 | CSMI_SAS_IDENTIFY Attached; | |
1536 | } CSMI_SAS_PHY_ENTITY, | |
1537 | *PCSMI_SAS_PHY_ENTITY; | |
1538 | ||
1539 | typedef struct _CSMI_SAS_PHY_INFO { | |
1540 | __u8 bNumberOfPhys; | |
1541 | __u8 bReserved[3]; | |
1542 | CSMI_SAS_PHY_ENTITY Phy[32]; | |
1543 | } CSMI_SAS_PHY_INFO, | |
1544 | *PCSMI_SAS_PHY_INFO; | |
1545 | ||
1546 | typedef struct _CSMI_SAS_PHY_INFO_BUFFER { | |
1547 | IOCTL_HEADER IoctlHeader; | |
1548 | CSMI_SAS_PHY_INFO Information; | |
1549 | } CSMI_SAS_PHY_INFO_BUFFER, | |
1550 | *PCSMI_SAS_PHY_INFO_BUFFER; | |
1551 | ||
1552 | // CC_CSMI_SAS_SET_PHY_INFO | |
1553 | ||
1554 | typedef struct _CSMI_SAS_SET_PHY_INFO { | |
1555 | __u8 bPhyIdentifier; | |
1556 | __u8 bNegotiatedLinkRate; | |
1557 | __u8 bProgrammedMinimumLinkRate; | |
1558 | __u8 bProgrammedMaximumLinkRate; | |
1559 | __u8 bSignalClass; | |
1560 | __u8 bReserved[3]; | |
1561 | } CSMI_SAS_SET_PHY_INFO, | |
1562 | *PCSMI_SAS_SET_PHY_INFO; | |
1563 | ||
1564 | typedef struct _CSMI_SAS_SET_PHY_INFO_BUFFER { | |
1565 | IOCTL_HEADER IoctlHeader; | |
1566 | CSMI_SAS_SET_PHY_INFO Information; | |
1567 | } CSMI_SAS_SET_PHY_INFO_BUFFER, | |
1568 | *PCSMI_SAS_SET_PHY_INFO_BUFFER; | |
1569 | ||
1570 | // CC_CSMI_SAS_GET_LINK_ERRORS | |
1571 | ||
1572 | typedef struct _CSMI_SAS_LINK_ERRORS { | |
1573 | __u8 bPhyIdentifier; | |
1574 | __u8 bResetCounts; | |
1575 | __u8 bReserved[2]; | |
1576 | __u32 uInvalidDwordCount; | |
1577 | __u32 uRunningDisparityErrorCount; | |
1578 | __u32 uLossOfDwordSyncCount; | |
1579 | __u32 uPhyResetProblemCount; | |
1580 | } CSMI_SAS_LINK_ERRORS, | |
1581 | *PCSMI_SAS_LINK_ERRORS; | |
1582 | ||
1583 | typedef struct _CSMI_SAS_LINK_ERRORS_BUFFER { | |
1584 | IOCTL_HEADER IoctlHeader; | |
1585 | CSMI_SAS_LINK_ERRORS Information; | |
1586 | } CSMI_SAS_LINK_ERRORS_BUFFER, | |
1587 | *PCSMI_SAS_LINK_ERRORS_BUFFER; | |
1588 | ||
1589 | // CC_CSMI_SAS_SMP_PASSTHRU | |
1590 | ||
1591 | typedef struct _CSMI_SAS_SMP_REQUEST { | |
1592 | __u8 bFrameType; | |
1593 | __u8 bFunction; | |
1594 | __u8 bReserved[2]; | |
1595 | __u8 bAdditionalRequestBytes[1016]; | |
1596 | } CSMI_SAS_SMP_REQUEST, | |
1597 | *PCSMI_SAS_SMP_REQUEST; | |
1598 | ||
1599 | typedef struct _CSMI_SAS_SMP_RESPONSE { | |
1600 | __u8 bFrameType; | |
1601 | __u8 bFunction; | |
1602 | __u8 bFunctionResult; | |
1603 | __u8 bReserved; | |
1604 | __u8 bAdditionalResponseBytes[1016]; | |
1605 | } CSMI_SAS_SMP_RESPONSE, | |
1606 | *PCSMI_SAS_SMP_RESPONSE; | |
1607 | ||
1608 | typedef struct _CSMI_SAS_SMP_PASSTHRU { | |
1609 | __u8 bPhyIdentifier; | |
1610 | __u8 bPortIdentifier; | |
1611 | __u8 bConnectionRate; | |
1612 | __u8 bReserved; | |
1613 | __u8 bDestinationSASAddress[8]; | |
1614 | __u32 uRequestLength; | |
1615 | CSMI_SAS_SMP_REQUEST Request; | |
1616 | __u8 bConnectionStatus; | |
1617 | __u8 bReserved2[3]; | |
1618 | __u32 uResponseBytes; | |
1619 | CSMI_SAS_SMP_RESPONSE Response; | |
1620 | } CSMI_SAS_SMP_PASSTHRU, | |
1621 | *PCSMI_SAS_SMP_PASSTHRU; | |
1622 | ||
1623 | typedef struct _CSMI_SAS_SMP_PASSTHRU_BUFFER { | |
1624 | IOCTL_HEADER IoctlHeader; | |
1625 | CSMI_SAS_SMP_PASSTHRU Parameters; | |
1626 | } CSMI_SAS_SMP_PASSTHRU_BUFFER, | |
1627 | *PCSMI_SAS_SMP_PASSTHRU_BUFFER; | |
1628 | ||
1629 | // CC_CSMI_SAS_SSP_PASSTHRU | |
1630 | ||
1631 | typedef struct _CSMI_SAS_SSP_PASSTHRU { | |
1632 | __u8 bPhyIdentifier; | |
1633 | __u8 bPortIdentifier; | |
1634 | __u8 bConnectionRate; | |
1635 | __u8 bReserved; | |
1636 | __u8 bDestinationSASAddress[8]; | |
1637 | __u8 bLun[8]; | |
1638 | __u8 bCDBLength; | |
1639 | __u8 bAdditionalCDBLength; | |
1640 | __u8 bReserved2[2]; | |
1641 | __u8 bCDB[16]; | |
1642 | __u32 uFlags; | |
1643 | __u8 bAdditionalCDB[24]; | |
1644 | __u32 uDataLength; | |
1645 | } CSMI_SAS_SSP_PASSTHRU, | |
1646 | *PCSMI_SAS_SSP_PASSTHRU; | |
1647 | ||
1648 | typedef struct _CSMI_SAS_SSP_PASSTHRU_STATUS { | |
1649 | __u8 bConnectionStatus; | |
1650 | __u8 bSSPStatus; | |
1651 | __u8 bReserved[2]; | |
1652 | __u8 bDataPresent; | |
1653 | __u8 bStatus; | |
1654 | __u8 bResponseLength[2]; | |
1655 | __u8 bResponse[256]; | |
1656 | __u32 uDataBytes; | |
1657 | } CSMI_SAS_SSP_PASSTHRU_STATUS, | |
1658 | *PCSMI_SAS_SSP_PASSTHRU_STATUS; | |
1659 | ||
1660 | typedef struct _CSMI_SAS_SSP_PASSTHRU_BUFFER { | |
1661 | IOCTL_HEADER IoctlHeader; | |
1662 | CSMI_SAS_SSP_PASSTHRU Parameters; | |
1663 | CSMI_SAS_SSP_PASSTHRU_STATUS Status; | |
1664 | __u8 bDataBuffer[1]; | |
1665 | } CSMI_SAS_SSP_PASSTHRU_BUFFER, | |
1666 | *PCSMI_SAS_SSP_PASSTHRU_BUFFER; | |
1667 | ||
1668 | // CC_CSMI_SAS_STP_PASSTHRU | |
1669 | ||
1670 | typedef struct _CSMI_SAS_STP_PASSTHRU { | |
1671 | __u8 bPhyIdentifier; | |
1672 | __u8 bPortIdentifier; | |
1673 | __u8 bConnectionRate; | |
1674 | __u8 bReserved; | |
1675 | __u8 bDestinationSASAddress[8]; | |
1676 | __u8 bReserved2[4]; | |
1677 | __u8 bCommandFIS[20]; | |
1678 | __u32 uFlags; | |
1679 | __u32 uDataLength; | |
1680 | } CSMI_SAS_STP_PASSTHRU, | |
1681 | *PCSMI_SAS_STP_PASSTHRU; | |
1682 | ||
1683 | typedef struct _CSMI_SAS_STP_PASSTHRU_STATUS { | |
1684 | __u8 bConnectionStatus; | |
1685 | __u8 bReserved[3]; | |
1686 | __u8 bStatusFIS[20]; | |
1687 | __u32 uSCR[16]; | |
1688 | __u32 uDataBytes; | |
1689 | } CSMI_SAS_STP_PASSTHRU_STATUS, | |
1690 | *PCSMI_SAS_STP_PASSTHRU_STATUS; | |
1691 | ||
1692 | typedef struct _CSMI_SAS_STP_PASSTHRU_BUFFER { | |
1693 | IOCTL_HEADER IoctlHeader; | |
1694 | CSMI_SAS_STP_PASSTHRU Parameters; | |
1695 | CSMI_SAS_STP_PASSTHRU_STATUS Status; | |
1696 | __u8 bDataBuffer[1]; | |
1697 | } CSMI_SAS_STP_PASSTHRU_BUFFER, | |
1698 | *PCSMI_SAS_STP_PASSTHRU_BUFFER; | |
1699 | ||
1700 | // CC_CSMI_SAS_GET_SATA_SIGNATURE | |
1701 | ||
1702 | typedef struct _CSMI_SAS_SATA_SIGNATURE { | |
1703 | __u8 bPhyIdentifier; | |
1704 | __u8 bReserved[3]; | |
1705 | __u8 bSignatureFIS[20]; | |
1706 | } CSMI_SAS_SATA_SIGNATURE, | |
1707 | *PCSMI_SAS_SATA_SIGNATURE; | |
1708 | ||
1709 | typedef struct _CSMI_SAS_SATA_SIGNATURE_BUFFER { | |
1710 | IOCTL_HEADER IoctlHeader; | |
1711 | CSMI_SAS_SATA_SIGNATURE Signature; | |
1712 | } CSMI_SAS_SATA_SIGNATURE_BUFFER, | |
1713 | *PCSMI_SAS_SATA_SIGNATURE_BUFFER; | |
1714 | ||
1715 | // CC_CSMI_SAS_GET_SCSI_ADDRESS | |
1716 | ||
1717 | typedef struct _CSMI_SAS_GET_SCSI_ADDRESS_BUFFER { | |
1718 | IOCTL_HEADER IoctlHeader; | |
1719 | __u8 bSASAddress[8]; | |
1720 | __u8 bSASLun[8]; | |
1721 | __u8 bHostIndex; | |
1722 | __u8 bPathId; | |
1723 | __u8 bTargetId; | |
1724 | __u8 bLun; | |
1725 | } CSMI_SAS_GET_SCSI_ADDRESS_BUFFER, | |
1726 | *PCSMI_SAS_GET_SCSI_ADDRESS_BUFFER; | |
1727 | ||
1728 | // CC_CSMI_SAS_GET_DEVICE_ADDRESS | |
1729 | ||
1730 | typedef struct _CSMI_SAS_GET_DEVICE_ADDRESS_BUFFER { | |
1731 | IOCTL_HEADER IoctlHeader; | |
1732 | __u8 bHostIndex; | |
1733 | __u8 bPathId; | |
1734 | __u8 bTargetId; | |
1735 | __u8 bLun; | |
1736 | __u8 bSASAddress[8]; | |
1737 | __u8 bSASLun[8]; | |
1738 | } CSMI_SAS_GET_DEVICE_ADDRESS_BUFFER, | |
1739 | *PCSMI_SAS_GET_DEVICE_ADDRESS_BUFFER; | |
1740 | ||
1741 | // CC_CSMI_SAS_TASK_MANAGEMENT | |
1742 | ||
1743 | typedef struct _CSMI_SAS_SSP_TASK_IU { | |
1744 | __u8 bHostIndex; | |
1745 | __u8 bPathId; | |
1746 | __u8 bTargetId; | |
1747 | __u8 bLun; | |
1748 | __u32 uFlags; | |
1749 | __u32 uQueueTag; | |
1750 | __u32 uReserved; | |
1751 | __u8 bTaskManagementFunction; | |
1752 | __u8 bReserved[7]; | |
1753 | __u32 uInformation; | |
1754 | } CSMI_SAS_SSP_TASK_IU, | |
1755 | *PCSMI_SAS_SSP_TASK_IU; | |
1756 | ||
1757 | typedef struct _CSMI_SAS_SSP_TASK_IU_BUFFER { | |
1758 | IOCTL_HEADER IoctlHeader; | |
1759 | CSMI_SAS_SSP_TASK_IU Parameters; | |
1760 | CSMI_SAS_SSP_PASSTHRU_STATUS Status; | |
1761 | } CSMI_SAS_SSP_TASK_IU_BUFFER, | |
1762 | *PCSMI_SAS_SSP_TASK_IU_BUFFER; | |
1763 | ||
1764 | // CC_CSMI_SAS_GET_CONNECTOR_INFO | |
1765 | ||
1766 | typedef struct _CSMI_SAS_GET_CONNECTOR_INFO { | |
1767 | __u32 uPinout; | |
1768 | __u8 bConnector[16]; | |
1769 | __u8 bLocation; | |
1770 | __u8 bReserved[15]; | |
1771 | } CSMI_SAS_CONNECTOR_INFO, | |
1772 | *PCSMI_SAS_CONNECTOR_INFO; | |
1773 | ||
1774 | typedef struct _CSMI_SAS_CONNECTOR_INFO_BUFFER { | |
1775 | IOCTL_HEADER IoctlHeader; | |
1776 | CSMI_SAS_CONNECTOR_INFO Reference[32]; | |
1777 | } CSMI_SAS_CONNECTOR_INFO_BUFFER, | |
1778 | *PCSMI_SAS_CONNECTOR_INFO_BUFFER; | |
1779 | ||
1780 | // CC_CSMI_SAS_GET_LOCATION | |
1781 | ||
1782 | typedef struct _CSMI_SAS_LOCATION_IDENTIFIER { | |
1783 | __u32 bLocationFlags; | |
1784 | __u8 bSASAddress[8]; | |
1785 | __u8 bSASLun[8]; | |
1786 | __u8 bEnclosureIdentifier[8]; | |
1787 | __u8 bEnclosureName[32]; | |
1788 | __u8 bBayPrefix[32]; | |
1789 | __u8 bBayIdentifier; | |
1790 | __u8 bLocationState; | |
1791 | __u8 bReserved[2]; | |
1792 | } CSMI_SAS_LOCATION_IDENTIFIER, | |
1793 | *PCSMI_SAS_LOCATION_IDENTIFIER; | |
1794 | ||
1795 | typedef struct _CSMI_SAS_GET_LOCATION_BUFFER { | |
1796 | IOCTL_HEADER IoctlHeader; | |
1797 | __u8 bHostIndex; | |
1798 | __u8 bPathId; | |
1799 | __u8 bTargetId; | |
1800 | __u8 bLun; | |
1801 | __u8 bIdentify; | |
1802 | __u8 bNumberOfLocationIdentifiers; | |
1803 | __u8 bLengthOfLocationIdentifier; | |
1804 | CSMI_SAS_LOCATION_IDENTIFIER Location[1]; | |
1805 | } CSMI_SAS_GET_LOCATION_BUFFER, | |
1806 | *PCSMI_SAS_GET_LOCATION_BUFFER; | |
1807 | ||
1808 | // CC_CSMI_SAS_PHY_CONTROL | |
1809 | ||
1810 | typedef struct _CSMI_SAS_CHARACTER { | |
1811 | __u8 bTypeFlags; | |
1812 | __u8 bValue; | |
1813 | } CSMI_SAS_CHARACTER, | |
1814 | *PCSMI_SAS_CHARACTER; | |
1815 | ||
1816 | typedef struct _CSMI_SAS_PHY_CONTROL { | |
1817 | __u8 bType; | |
1818 | __u8 bRate; | |
1819 | __u8 bReserved[6]; | |
1820 | __u32 uVendorUnique[8]; | |
1821 | __u32 uTransmitterFlags; | |
1822 | __i8 bTransmitAmplitude; | |
1823 | __i8 bTransmitterPreemphasis; | |
1824 | __i8 bTransmitterSlewRate; | |
1825 | __i8 bTransmitterReserved[13]; | |
1826 | __u8 bTransmitterVendorUnique[64]; | |
1827 | __u32 uReceiverFlags; | |
1828 | __i8 bReceiverThreshold; | |
1829 | __i8 bReceiverEqualizationGain; | |
1830 | __i8 bReceiverReserved[14]; | |
1831 | __u8 bReceiverVendorUnique[64]; | |
1832 | __u32 uPatternFlags; | |
1833 | __u8 bFixedPattern; | |
1834 | __u8 bUserPatternLength; | |
1835 | __u8 bPatternReserved[6]; | |
1836 | CSMI_SAS_CHARACTER UserPatternBuffer[16]; | |
1837 | } CSMI_SAS_PHY_CONTROL, | |
1838 | *PCSMI_SAS_PHY_CONTROL; | |
1839 | ||
1840 | typedef struct _CSMI_SAS_PHY_CONTROL_BUFFER { | |
1841 | IOCTL_HEADER IoctlHeader; | |
1842 | __u32 uFunction; | |
1843 | __u8 bPhyIdentifier; | |
1844 | __u16 usLengthOfControl; | |
1845 | __u8 bNumberOfControls; | |
1846 | __u8 bReserved[4]; | |
1847 | __u32 uLinkFlags; | |
1848 | __u8 bSpinupRate; | |
1849 | __u8 bLinkReserved[7]; | |
1850 | __u32 uVendorUnique[8]; | |
1851 | CSMI_SAS_PHY_CONTROL Control[1]; | |
1852 | } CSMI_SAS_PHY_CONTROL_BUFFER, | |
1853 | *PCSMI_SAS_PHY_CONTROL_BUFFER; | |
1854 | ||
1855 | //EDM #pragma CSMI_SAS_END_PACK | |
1856 | #pragma pack() | |
1857 | ||
1858 | #endif // _CSMI_SAS_H_ |