1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153#ifndef MPI2_CNFG_H
154#define MPI2_CNFG_H
155
156
157
158
159
160
161typedef struct _MPI2_CONFIG_PAGE_HEADER
162{
163 U8 PageVersion;
164 U8 PageLength;
165 U8 PageNumber;
166 U8 PageType;
167} MPI2_CONFIG_PAGE_HEADER, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_HEADER,
168 Mpi2ConfigPageHeader_t, MPI2_POINTER pMpi2ConfigPageHeader_t;
169
170typedef union _MPI2_CONFIG_PAGE_HEADER_UNION
171{
172 MPI2_CONFIG_PAGE_HEADER Struct;
173 U8 Bytes[4];
174 U16 Word16[2];
175 U32 Word32;
176} MPI2_CONFIG_PAGE_HEADER_UNION, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_HEADER_UNION,
177 Mpi2ConfigPageHeaderUnion, MPI2_POINTER pMpi2ConfigPageHeaderUnion;
178
179
180typedef struct _MPI2_CONFIG_EXTENDED_PAGE_HEADER
181{
182 U8 PageVersion;
183 U8 Reserved1;
184 U8 PageNumber;
185 U8 PageType;
186 U16 ExtPageLength;
187 U8 ExtPageType;
188 U8 Reserved2;
189} MPI2_CONFIG_EXTENDED_PAGE_HEADER,
190 MPI2_POINTER PTR_MPI2_CONFIG_EXTENDED_PAGE_HEADER,
191 Mpi2ConfigExtendedPageHeader_t, MPI2_POINTER pMpi2ConfigExtendedPageHeader_t;
192
193typedef union _MPI2_CONFIG_EXT_PAGE_HEADER_UNION
194{
195 MPI2_CONFIG_PAGE_HEADER Struct;
196 MPI2_CONFIG_EXTENDED_PAGE_HEADER Ext;
197 U8 Bytes[8];
198 U16 Word16[4];
199 U32 Word32[2];
200} MPI2_CONFIG_EXT_PAGE_HEADER_UNION, MPI2_POINTER PTR_MPI2_CONFIG_EXT_PAGE_HEADER_UNION,
201 Mpi2ConfigPageExtendedHeaderUnion, MPI2_POINTER pMpi2ConfigPageExtendedHeaderUnion;
202
203
204
205#define MPI2_CONFIG_PAGEATTR_READ_ONLY (0x00)
206#define MPI2_CONFIG_PAGEATTR_CHANGEABLE (0x10)
207#define MPI2_CONFIG_PAGEATTR_PERSISTENT (0x20)
208#define MPI2_CONFIG_PAGEATTR_MASK (0xF0)
209
210#define MPI2_CONFIG_PAGETYPE_IO_UNIT (0x00)
211#define MPI2_CONFIG_PAGETYPE_IOC (0x01)
212#define MPI2_CONFIG_PAGETYPE_BIOS (0x02)
213#define MPI2_CONFIG_PAGETYPE_RAID_VOLUME (0x08)
214#define MPI2_CONFIG_PAGETYPE_MANUFACTURING (0x09)
215#define MPI2_CONFIG_PAGETYPE_RAID_PHYSDISK (0x0A)
216#define MPI2_CONFIG_PAGETYPE_EXTENDED (0x0F)
217#define MPI2_CONFIG_PAGETYPE_MASK (0x0F)
218
219#define MPI2_CONFIG_TYPENUM_MASK (0x0FFF)
220
221
222
223#define MPI2_CONFIG_EXTPAGETYPE_SAS_IO_UNIT (0x10)
224#define MPI2_CONFIG_EXTPAGETYPE_SAS_EXPANDER (0x11)
225#define MPI2_CONFIG_EXTPAGETYPE_SAS_DEVICE (0x12)
226#define MPI2_CONFIG_EXTPAGETYPE_SAS_PHY (0x13)
227#define MPI2_CONFIG_EXTPAGETYPE_LOG (0x14)
228#define MPI2_CONFIG_EXTPAGETYPE_ENCLOSURE (0x15)
229#define MPI2_CONFIG_EXTPAGETYPE_RAID_CONFIG (0x16)
230#define MPI2_CONFIG_EXTPAGETYPE_DRIVER_MAPPING (0x17)
231#define MPI2_CONFIG_EXTPAGETYPE_SAS_PORT (0x18)
232#define MPI2_CONFIG_EXTPAGETYPE_ETHERNET (0x19)
233#define MPI2_CONFIG_EXTPAGETYPE_EXT_MANUFACTURING (0x1A)
234
235
236
237
238
239
240
241#define MPI2_RAID_VOLUME_PGAD_FORM_MASK (0xF0000000)
242#define MPI2_RAID_VOLUME_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
243#define MPI2_RAID_VOLUME_PGAD_FORM_HANDLE (0x10000000)
244
245#define MPI2_RAID_VOLUME_PGAD_HANDLE_MASK (0x0000FFFF)
246
247
248
249#define MPI2_PHYSDISK_PGAD_FORM_MASK (0xF0000000)
250#define MPI2_PHYSDISK_PGAD_FORM_GET_NEXT_PHYSDISKNUM (0x00000000)
251#define MPI2_PHYSDISK_PGAD_FORM_PHYSDISKNUM (0x10000000)
252#define MPI2_PHYSDISK_PGAD_FORM_DEVHANDLE (0x20000000)
253
254#define MPI2_PHYSDISK_PGAD_PHYSDISKNUM_MASK (0x000000FF)
255#define MPI2_PHYSDISK_PGAD_DEVHANDLE_MASK (0x0000FFFF)
256
257
258
259#define MPI2_SAS_EXPAND_PGAD_FORM_MASK (0xF0000000)
260#define MPI2_SAS_EXPAND_PGAD_FORM_GET_NEXT_HNDL (0x00000000)
261#define MPI2_SAS_EXPAND_PGAD_FORM_HNDL_PHY_NUM (0x10000000)
262#define MPI2_SAS_EXPAND_PGAD_FORM_HNDL (0x20000000)
263
264#define MPI2_SAS_EXPAND_PGAD_HANDLE_MASK (0x0000FFFF)
265#define MPI2_SAS_EXPAND_PGAD_PHYNUM_MASK (0x00FF0000)
266#define MPI2_SAS_EXPAND_PGAD_PHYNUM_SHIFT (16)
267
268
269
270#define MPI2_SAS_DEVICE_PGAD_FORM_MASK (0xF0000000)
271#define MPI2_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
272#define MPI2_SAS_DEVICE_PGAD_FORM_HANDLE (0x20000000)
273
274#define MPI2_SAS_DEVICE_PGAD_HANDLE_MASK (0x0000FFFF)
275
276
277
278#define MPI2_SAS_PHY_PGAD_FORM_MASK (0xF0000000)
279#define MPI2_SAS_PHY_PGAD_FORM_PHY_NUMBER (0x00000000)
280#define MPI2_SAS_PHY_PGAD_FORM_PHY_TBL_INDEX (0x10000000)
281
282#define MPI2_SAS_PHY_PGAD_PHY_NUMBER_MASK (0x000000FF)
283#define MPI2_SAS_PHY_PGAD_PHY_TBL_INDEX_MASK (0x0000FFFF)
284
285
286
287#define MPI2_SASPORT_PGAD_FORM_MASK (0xF0000000)
288#define MPI2_SASPORT_PGAD_FORM_GET_NEXT_PORT (0x00000000)
289#define MPI2_SASPORT_PGAD_FORM_PORT_NUM (0x10000000)
290
291#define MPI2_SASPORT_PGAD_PORTNUMBER_MASK (0x00000FFF)
292
293
294
295#define MPI2_SAS_ENCLOS_PGAD_FORM_MASK (0xF0000000)
296#define MPI2_SAS_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
297#define MPI2_SAS_ENCLOS_PGAD_FORM_HANDLE (0x10000000)
298
299#define MPI2_SAS_ENCLOS_PGAD_HANDLE_MASK (0x0000FFFF)
300
301
302
303#define MPI2_RAID_PGAD_FORM_MASK (0xF0000000)
304#define MPI2_RAID_PGAD_FORM_GET_NEXT_CONFIGNUM (0x00000000)
305#define MPI2_RAID_PGAD_FORM_CONFIGNUM (0x10000000)
306#define MPI2_RAID_PGAD_FORM_ACTIVE_CONFIG (0x20000000)
307
308#define MPI2_RAID_PGAD_CONFIGNUM_MASK (0x000000FF)
309
310
311
312#define MPI2_DPM_PGAD_FORM_MASK (0xF0000000)
313#define MPI2_DPM_PGAD_FORM_ENTRY_RANGE (0x00000000)
314
315#define MPI2_DPM_PGAD_ENTRY_COUNT_MASK (0x0FFF0000)
316#define MPI2_DPM_PGAD_ENTRY_COUNT_SHIFT (16)
317#define MPI2_DPM_PGAD_START_ENTRY_MASK (0x0000FFFF)
318
319
320
321#define MPI2_ETHERNET_PGAD_FORM_MASK (0xF0000000)
322#define MPI2_ETHERNET_PGAD_FORM_IF_NUM (0x00000000)
323
324#define MPI2_ETHERNET_PGAD_IF_NUMBER_MASK (0x000000FF)
325
326
327
328
329
330
331
332
333typedef struct _MPI2_CONFIG_REQUEST
334{
335 U8 Action;
336 U8 SGLFlags;
337 U8 ChainOffset;
338 U8 Function;
339 U16 ExtPageLength;
340 U8 ExtPageType;
341 U8 MsgFlags;
342 U8 VP_ID;
343 U8 VF_ID;
344 U16 Reserved1;
345 U8 Reserved2;
346 U8 ProxyVF_ID;
347 U16 Reserved4;
348 U32 Reserved3;
349 MPI2_CONFIG_PAGE_HEADER Header;
350 U32 PageAddress;
351 MPI2_SGE_IO_UNION PageBufferSGE;
352} MPI2_CONFIG_REQUEST, MPI2_POINTER PTR_MPI2_CONFIG_REQUEST,
353 Mpi2ConfigRequest_t, MPI2_POINTER pMpi2ConfigRequest_t;
354
355
356#define MPI2_CONFIG_ACTION_PAGE_HEADER (0x00)
357#define MPI2_CONFIG_ACTION_PAGE_READ_CURRENT (0x01)
358#define MPI2_CONFIG_ACTION_PAGE_WRITE_CURRENT (0x02)
359#define MPI2_CONFIG_ACTION_PAGE_DEFAULT (0x03)
360#define MPI2_CONFIG_ACTION_PAGE_WRITE_NVRAM (0x04)
361#define MPI2_CONFIG_ACTION_PAGE_READ_DEFAULT (0x05)
362#define MPI2_CONFIG_ACTION_PAGE_READ_NVRAM (0x06)
363#define MPI2_CONFIG_ACTION_PAGE_GET_CHANGEABLE (0x07)
364
365
366
367
368
369typedef struct _MPI2_CONFIG_REPLY
370{
371 U8 Action;
372 U8 SGLFlags;
373 U8 MsgLength;
374 U8 Function;
375 U16 ExtPageLength;
376 U8 ExtPageType;
377 U8 MsgFlags;
378 U8 VP_ID;
379 U8 VF_ID;
380 U16 Reserved1;
381 U16 Reserved2;
382 U16 IOCStatus;
383 U32 IOCLogInfo;
384 MPI2_CONFIG_PAGE_HEADER Header;
385} MPI2_CONFIG_REPLY, MPI2_POINTER PTR_MPI2_CONFIG_REPLY,
386 Mpi2ConfigReply_t, MPI2_POINTER pMpi2ConfigReply_t;
387
388
389
390
391
392
393
394
395
396
397
398
399
400#define MPI2_MFGPAGE_VENDORID_LSI (0x1000)
401
402
403#define MPI2_MFGPAGE_DEVID_SAS2004 (0x0070)
404#define MPI2_MFGPAGE_DEVID_SAS2008 (0x0072)
405#define MPI2_MFGPAGE_DEVID_SAS2108_1 (0x0074)
406#define MPI2_MFGPAGE_DEVID_SAS2108_2 (0x0076)
407#define MPI2_MFGPAGE_DEVID_SAS2108_3 (0x0077)
408#define MPI2_MFGPAGE_DEVID_SAS2116_1 (0x0064)
409#define MPI2_MFGPAGE_DEVID_SAS2116_2 (0x0065)
410
411#define MPI2_MFGPAGE_DEVID_SSS6200 (0x007E)
412
413#define MPI2_MFGPAGE_DEVID_SAS2208_1 (0x0080)
414#define MPI2_MFGPAGE_DEVID_SAS2208_2 (0x0081)
415#define MPI2_MFGPAGE_DEVID_SAS2208_3 (0x0082)
416#define MPI2_MFGPAGE_DEVID_SAS2208_4 (0x0083)
417#define MPI2_MFGPAGE_DEVID_SAS2208_5 (0x0084)
418#define MPI2_MFGPAGE_DEVID_SAS2208_6 (0x0085)
419#define MPI2_MFGPAGE_DEVID_SAS2308_1 (0x0086)
420#define MPI2_MFGPAGE_DEVID_SAS2308_2 (0x0087)
421#define MPI2_MFGPAGE_DEVID_SAS2308_3 (0x006E)
422
423
424
425
426
427
428typedef struct _MPI2_CONFIG_PAGE_MAN_0
429{
430 MPI2_CONFIG_PAGE_HEADER Header;
431 U8 ChipName[16];
432 U8 ChipRevision[8];
433 U8 BoardName[16];
434 U8 BoardAssembly[16];
435 U8 BoardTracerNumber[16];
436} MPI2_CONFIG_PAGE_MAN_0,
437 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_0,
438 Mpi2ManufacturingPage0_t, MPI2_POINTER pMpi2ManufacturingPage0_t;
439
440#define MPI2_MANUFACTURING0_PAGEVERSION (0x00)
441
442
443
444
445typedef struct _MPI2_CONFIG_PAGE_MAN_1
446{
447 MPI2_CONFIG_PAGE_HEADER Header;
448 U8 VPD[256];
449} MPI2_CONFIG_PAGE_MAN_1,
450 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_1,
451 Mpi2ManufacturingPage1_t, MPI2_POINTER pMpi2ManufacturingPage1_t;
452
453#define MPI2_MANUFACTURING1_PAGEVERSION (0x00)
454
455
456typedef struct _MPI2_CHIP_REVISION_ID
457{
458 U16 DeviceID;
459 U8 PCIRevisionID;
460 U8 Reserved;
461} MPI2_CHIP_REVISION_ID, MPI2_POINTER PTR_MPI2_CHIP_REVISION_ID,
462 Mpi2ChipRevisionId_t, MPI2_POINTER pMpi2ChipRevisionId_t;
463
464
465
466
467
468
469
470
471#ifndef MPI2_MAN_PAGE_2_HW_SETTINGS_WORDS
472#define MPI2_MAN_PAGE_2_HW_SETTINGS_WORDS (1)
473#endif
474
475typedef struct _MPI2_CONFIG_PAGE_MAN_2
476{
477 MPI2_CONFIG_PAGE_HEADER Header;
478 MPI2_CHIP_REVISION_ID ChipId;
479 U32 HwSettings[MPI2_MAN_PAGE_2_HW_SETTINGS_WORDS];
480} MPI2_CONFIG_PAGE_MAN_2,
481 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_2,
482 Mpi2ManufacturingPage2_t, MPI2_POINTER pMpi2ManufacturingPage2_t;
483
484#define MPI2_MANUFACTURING2_PAGEVERSION (0x00)
485
486
487
488
489
490
491
492
493#ifndef MPI2_MAN_PAGE_3_INFO_WORDS
494#define MPI2_MAN_PAGE_3_INFO_WORDS (1)
495#endif
496
497typedef struct _MPI2_CONFIG_PAGE_MAN_3
498{
499 MPI2_CONFIG_PAGE_HEADER Header;
500 MPI2_CHIP_REVISION_ID ChipId;
501 U32 Info[MPI2_MAN_PAGE_3_INFO_WORDS];
502} MPI2_CONFIG_PAGE_MAN_3,
503 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_3,
504 Mpi2ManufacturingPage3_t, MPI2_POINTER pMpi2ManufacturingPage3_t;
505
506#define MPI2_MANUFACTURING3_PAGEVERSION (0x00)
507
508
509
510
511typedef struct _MPI2_MANPAGE4_PWR_SAVE_SETTINGS
512{
513 U8 PowerSaveFlags;
514 U8 InternalOperationsSleepTime;
515 U8 InternalOperationsRunTime;
516 U8 HostIdleTime;
517} MPI2_MANPAGE4_PWR_SAVE_SETTINGS,
518 MPI2_POINTER PTR_MPI2_MANPAGE4_PWR_SAVE_SETTINGS,
519 Mpi2ManPage4PwrSaveSettings_t, MPI2_POINTER pMpi2ManPage4PwrSaveSettings_t;
520
521
522#define MPI2_MANPAGE4_MASK_POWERSAVE_MODE (0x03)
523#define MPI2_MANPAGE4_POWERSAVE_MODE_DISABLED (0x00)
524#define MPI2_MANPAGE4_CUSTOM_POWERSAVE_MODE (0x01)
525#define MPI2_MANPAGE4_FULL_POWERSAVE_MODE (0x02)
526
527typedef struct _MPI2_CONFIG_PAGE_MAN_4
528{
529 MPI2_CONFIG_PAGE_HEADER Header;
530 U32 Reserved1;
531 U32 Flags;
532 U8 InquirySize;
533 U8 Reserved2;
534 U16 Reserved3;
535 U8 InquiryData[56];
536 U32 RAID0VolumeSettings;
537 U32 RAID1EVolumeSettings;
538 U32 RAID1VolumeSettings;
539 U32 RAID10VolumeSettings;
540 U32 Reserved4;
541 U32 Reserved5;
542 MPI2_MANPAGE4_PWR_SAVE_SETTINGS PowerSaveSettings;
543 U8 MaxOCEDisks;
544 U8 ResyncRate;
545 U16 DataScrubDuration;
546 U8 MaxHotSpares;
547 U8 MaxPhysDisksPerVol;
548 U8 MaxPhysDisks;
549 U8 MaxVolumes;
550} MPI2_CONFIG_PAGE_MAN_4,
551 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_4,
552 Mpi2ManufacturingPage4_t, MPI2_POINTER pMpi2ManufacturingPage4_t;
553
554#define MPI2_MANUFACTURING4_PAGEVERSION (0x0A)
555
556
557#define MPI2_MANPAGE4_METADATA_SIZE_MASK (0x00030000)
558#define MPI2_MANPAGE4_METADATA_512MB (0x00000000)
559
560#define MPI2_MANPAGE4_MIX_SSD_SAS_SATA (0x00008000)
561#define MPI2_MANPAGE4_MIX_SSD_AND_NON_SSD (0x00004000)
562#define MPI2_MANPAGE4_HIDE_PHYSDISK_NON_IR (0x00002000)
563
564#define MPI2_MANPAGE4_MASK_PHYSDISK_COERCION (0x00001C00)
565#define MPI2_MANPAGE4_PHYSDISK_COERCION_1GB (0x00000000)
566#define MPI2_MANPAGE4_PHYSDISK_128MB_COERCION (0x00000400)
567#define MPI2_MANPAGE4_PHYSDISK_ADAPTIVE_COERCION (0x00000800)
568#define MPI2_MANPAGE4_PHYSDISK_ZERO_COERCION (0x00000C00)
569
570#define MPI2_MANPAGE4_MASK_BAD_BLOCK_MARKING (0x00000300)
571#define MPI2_MANPAGE4_DEFAULT_BAD_BLOCK_MARKING (0x00000000)
572#define MPI2_MANPAGE4_TABLE_BAD_BLOCK_MARKING (0x00000100)
573#define MPI2_MANPAGE4_WRITE_LONG_BAD_BLOCK_MARKING (0x00000200)
574
575#define MPI2_MANPAGE4_FORCE_OFFLINE_FAILOVER (0x00000080)
576#define MPI2_MANPAGE4_RAID10_DISABLE (0x00000040)
577#define MPI2_MANPAGE4_RAID1E_DISABLE (0x00000020)
578#define MPI2_MANPAGE4_RAID1_DISABLE (0x00000010)
579#define MPI2_MANPAGE4_RAID0_DISABLE (0x00000008)
580#define MPI2_MANPAGE4_IR_MODEPAGE8_DISABLE (0x00000004)
581#define MPI2_MANPAGE4_IM_RESYNC_CACHE_ENABLE (0x00000002)
582#define MPI2_MANPAGE4_IR_NO_MIX_SAS_SATA (0x00000001)
583
584
585
586
587
588
589
590
591#ifndef MPI2_MAN_PAGE_5_PHY_ENTRIES
592#define MPI2_MAN_PAGE_5_PHY_ENTRIES (1)
593#endif
594
595typedef struct _MPI2_MANUFACTURING5_ENTRY
596{
597 U64 WWID;
598 U64 DeviceName;
599} MPI2_MANUFACTURING5_ENTRY, MPI2_POINTER PTR_MPI2_MANUFACTURING5_ENTRY,
600 Mpi2Manufacturing5Entry_t, MPI2_POINTER pMpi2Manufacturing5Entry_t;
601
602typedef struct _MPI2_CONFIG_PAGE_MAN_5
603{
604 MPI2_CONFIG_PAGE_HEADER Header;
605 U8 NumPhys;
606 U8 Reserved1;
607 U16 Reserved2;
608 U32 Reserved3;
609 U32 Reserved4;
610 MPI2_MANUFACTURING5_ENTRY Phy[MPI2_MAN_PAGE_5_PHY_ENTRIES];
611} MPI2_CONFIG_PAGE_MAN_5,
612 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_5,
613 Mpi2ManufacturingPage5_t, MPI2_POINTER pMpi2ManufacturingPage5_t;
614
615#define MPI2_MANUFACTURING5_PAGEVERSION (0x03)
616
617
618
619
620typedef struct _MPI2_CONFIG_PAGE_MAN_6
621{
622 MPI2_CONFIG_PAGE_HEADER Header;
623 U32 ProductSpecificInfo;
624} MPI2_CONFIG_PAGE_MAN_6,
625 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_6,
626 Mpi2ManufacturingPage6_t, MPI2_POINTER pMpi2ManufacturingPage6_t;
627
628#define MPI2_MANUFACTURING6_PAGEVERSION (0x00)
629
630
631
632
633typedef struct _MPI2_MANPAGE7_CONNECTOR_INFO
634{
635 U32 Pinout;
636 U8 Connector[16];
637 U8 Location;
638 U8 ReceptacleID;
639 U16 Slot;
640 U32 Reserved2;
641} MPI2_MANPAGE7_CONNECTOR_INFO, MPI2_POINTER PTR_MPI2_MANPAGE7_CONNECTOR_INFO,
642 Mpi2ManPage7ConnectorInfo_t, MPI2_POINTER pMpi2ManPage7ConnectorInfo_t;
643
644
645#define MPI2_MANPAGE7_PINOUT_LANE_MASK (0x0000FF00)
646#define MPI2_MANPAGE7_PINOUT_LANE_SHIFT (8)
647
648#define MPI2_MANPAGE7_PINOUT_TYPE_MASK (0x000000FF)
649#define MPI2_MANPAGE7_PINOUT_TYPE_UNKNOWN (0x00)
650#define MPI2_MANPAGE7_PINOUT_SATA_SINGLE (0x01)
651#define MPI2_MANPAGE7_PINOUT_SFF_8482 (0x02)
652#define MPI2_MANPAGE7_PINOUT_SFF_8486 (0x03)
653#define MPI2_MANPAGE7_PINOUT_SFF_8484 (0x04)
654#define MPI2_MANPAGE7_PINOUT_SFF_8087 (0x05)
655#define MPI2_MANPAGE7_PINOUT_SFF_8643_4I (0x06)
656#define MPI2_MANPAGE7_PINOUT_SFF_8643_8I (0x07)
657#define MPI2_MANPAGE7_PINOUT_SFF_8470 (0x08)
658#define MPI2_MANPAGE7_PINOUT_SFF_8088 (0x09)
659#define MPI2_MANPAGE7_PINOUT_SFF_8644_4X (0x0A)
660#define MPI2_MANPAGE7_PINOUT_SFF_8644_8X (0x0B)
661#define MPI2_MANPAGE7_PINOUT_SFF_8644_16X (0x0C)
662#define MPI2_MANPAGE7_PINOUT_SFF_8436 (0x0D)
663
664
665#define MPI2_MANPAGE7_LOCATION_UNKNOWN (0x01)
666#define MPI2_MANPAGE7_LOCATION_INTERNAL (0x02)
667#define MPI2_MANPAGE7_LOCATION_EXTERNAL (0x04)
668#define MPI2_MANPAGE7_LOCATION_SWITCHABLE (0x08)
669#define MPI2_MANPAGE7_LOCATION_AUTO (0x10)
670#define MPI2_MANPAGE7_LOCATION_NOT_PRESENT (0x20)
671#define MPI2_MANPAGE7_LOCATION_NOT_CONNECTED (0x80)
672
673
674
675
676
677#ifndef MPI2_MANPAGE7_CONNECTOR_INFO_MAX
678#define MPI2_MANPAGE7_CONNECTOR_INFO_MAX (1)
679#endif
680
681typedef struct _MPI2_CONFIG_PAGE_MAN_7
682{
683 MPI2_CONFIG_PAGE_HEADER Header;
684 U32 Reserved1;
685 U32 Reserved2;
686 U32 Flags;
687 U8 EnclosureName[16];
688 U8 NumPhys;
689 U8 Reserved3;
690 U16 Reserved4;
691 MPI2_MANPAGE7_CONNECTOR_INFO ConnectorInfo[MPI2_MANPAGE7_CONNECTOR_INFO_MAX];
692} MPI2_CONFIG_PAGE_MAN_7,
693 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_7,
694 Mpi2ManufacturingPage7_t, MPI2_POINTER pMpi2ManufacturingPage7_t;
695
696#define MPI2_MANUFACTURING7_PAGEVERSION (0x01)
697
698
699#define MPI2_MANPAGE7_FLAG_USE_SLOT_INFO (0x00000001)
700
701
702
703
704
705
706
707typedef struct _MPI2_CONFIG_PAGE_MAN_PS
708{
709 MPI2_CONFIG_PAGE_HEADER Header;
710 U32 ProductSpecificInfo;
711} MPI2_CONFIG_PAGE_MAN_PS,
712 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_PS,
713 Mpi2ManufacturingPagePS_t, MPI2_POINTER pMpi2ManufacturingPagePS_t;
714
715#define MPI2_MANUFACTURING8_PAGEVERSION (0x00)
716#define MPI2_MANUFACTURING9_PAGEVERSION (0x00)
717#define MPI2_MANUFACTURING10_PAGEVERSION (0x00)
718#define MPI2_MANUFACTURING11_PAGEVERSION (0x00)
719#define MPI2_MANUFACTURING12_PAGEVERSION (0x00)
720#define MPI2_MANUFACTURING13_PAGEVERSION (0x00)
721#define MPI2_MANUFACTURING14_PAGEVERSION (0x00)
722#define MPI2_MANUFACTURING15_PAGEVERSION (0x00)
723#define MPI2_MANUFACTURING16_PAGEVERSION (0x00)
724#define MPI2_MANUFACTURING17_PAGEVERSION (0x00)
725#define MPI2_MANUFACTURING18_PAGEVERSION (0x00)
726#define MPI2_MANUFACTURING19_PAGEVERSION (0x00)
727#define MPI2_MANUFACTURING20_PAGEVERSION (0x00)
728#define MPI2_MANUFACTURING21_PAGEVERSION (0x00)
729#define MPI2_MANUFACTURING22_PAGEVERSION (0x00)
730#define MPI2_MANUFACTURING23_PAGEVERSION (0x00)
731#define MPI2_MANUFACTURING24_PAGEVERSION (0x00)
732#define MPI2_MANUFACTURING25_PAGEVERSION (0x00)
733#define MPI2_MANUFACTURING26_PAGEVERSION (0x00)
734#define MPI2_MANUFACTURING27_PAGEVERSION (0x00)
735#define MPI2_MANUFACTURING28_PAGEVERSION (0x00)
736#define MPI2_MANUFACTURING29_PAGEVERSION (0x00)
737#define MPI2_MANUFACTURING30_PAGEVERSION (0x00)
738#define MPI2_MANUFACTURING31_PAGEVERSION (0x00)
739
740
741
742
743
744
745
746
747typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_0
748{
749 MPI2_CONFIG_PAGE_HEADER Header;
750 U64 UniqueValue;
751 MPI2_VERSION_UNION NvdataVersionDefault;
752 MPI2_VERSION_UNION NvdataVersionPersistent;
753} MPI2_CONFIG_PAGE_IO_UNIT_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_0,
754 Mpi2IOUnitPage0_t, MPI2_POINTER pMpi2IOUnitPage0_t;
755
756#define MPI2_IOUNITPAGE0_PAGEVERSION (0x02)
757
758
759
760
761typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_1
762{
763 MPI2_CONFIG_PAGE_HEADER Header;
764 U32 Flags;
765} MPI2_CONFIG_PAGE_IO_UNIT_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_1,
766 Mpi2IOUnitPage1_t, MPI2_POINTER pMpi2IOUnitPage1_t;
767
768#define MPI2_IOUNITPAGE1_PAGEVERSION (0x04)
769
770
771#define MPI2_IOUNITPAGE1_ENABLE_HOST_BASED_DISCOVERY (0x00000800)
772#define MPI2_IOUNITPAGE1_MASK_SATA_WRITE_CACHE (0x00000600)
773#define MPI2_IOUNITPAGE1_SATA_WRITE_CACHE_SHIFT (9)
774#define MPI2_IOUNITPAGE1_ENABLE_SATA_WRITE_CACHE (0x00000000)
775#define MPI2_IOUNITPAGE1_DISABLE_SATA_WRITE_CACHE (0x00000200)
776#define MPI2_IOUNITPAGE1_UNCHANGED_SATA_WRITE_CACHE (0x00000400)
777#define MPI2_IOUNITPAGE1_NATIVE_COMMAND_Q_DISABLE (0x00000100)
778#define MPI2_IOUNITPAGE1_DISABLE_IR (0x00000040)
779#define MPI2_IOUNITPAGE1_DISABLE_TASK_SET_FULL_HANDLING (0x00000020)
780#define MPI2_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID (0x00000004)
781
782
783
784
785
786
787
788
789#ifndef MPI2_IO_UNIT_PAGE_3_GPIO_VAL_MAX
790#define MPI2_IO_UNIT_PAGE_3_GPIO_VAL_MAX (1)
791#endif
792
793typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_3
794{
795 MPI2_CONFIG_PAGE_HEADER Header;
796 U8 GPIOCount;
797 U8 Reserved1;
798 U16 Reserved2;
799 U16 GPIOVal[MPI2_IO_UNIT_PAGE_3_GPIO_VAL_MAX];
800} MPI2_CONFIG_PAGE_IO_UNIT_3, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_3,
801 Mpi2IOUnitPage3_t, MPI2_POINTER pMpi2IOUnitPage3_t;
802
803#define MPI2_IOUNITPAGE3_PAGEVERSION (0x01)
804
805
806#define MPI2_IOUNITPAGE3_GPIO_FUNCTION_MASK (0xFFFC)
807#define MPI2_IOUNITPAGE3_GPIO_FUNCTION_SHIFT (2)
808#define MPI2_IOUNITPAGE3_GPIO_SETTING_OFF (0x0000)
809#define MPI2_IOUNITPAGE3_GPIO_SETTING_ON (0x0001)
810
811
812
813
814
815
816
817
818#ifndef MPI2_IOUNITPAGE5_DMAENGINE_ENTRIES
819#define MPI2_IOUNITPAGE5_DMAENGINE_ENTRIES (1)
820#endif
821
822typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_5 {
823 MPI2_CONFIG_PAGE_HEADER Header;
824 U64 RaidAcceleratorBufferBaseAddress;
825 U64 RaidAcceleratorBufferSize;
826 U64 RaidAcceleratorControlBaseAddress;
827 U8 RAControlSize;
828 U8 NumDmaEngines;
829 U8 RAMinControlSize;
830 U8 RAMaxControlSize;
831 U32 Reserved1;
832 U32 Reserved2;
833 U32 Reserved3;
834 U32 DmaEngineCapabilities
835 [MPI2_IOUNITPAGE5_DMAENGINE_ENTRIES];
836} MPI2_CONFIG_PAGE_IO_UNIT_5, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_5,
837 Mpi2IOUnitPage5_t, MPI2_POINTER pMpi2IOUnitPage5_t;
838
839#define MPI2_IOUNITPAGE5_PAGEVERSION (0x00)
840
841
842#define MPI2_IOUNITPAGE5_DMA_CAP_MASK_MAX_REQUESTS (0xFF00)
843#define MPI2_IOUNITPAGE5_DMA_CAP_SHIFT_MAX_REQUESTS (16)
844
845#define MPI2_IOUNITPAGE5_DMA_CAP_EEDP (0x0008)
846#define MPI2_IOUNITPAGE5_DMA_CAP_PARITY_GENERATION (0x0004)
847#define MPI2_IOUNITPAGE5_DMA_CAP_HASHING (0x0002)
848#define MPI2_IOUNITPAGE5_DMA_CAP_ENCRYPTION (0x0001)
849
850
851
852
853typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_6 {
854 MPI2_CONFIG_PAGE_HEADER Header;
855 U16 Flags;
856 U8 RAHostControlSize;
857 U8 Reserved0;
858 U64 RaidAcceleratorHostControlBaseAddress;
859 U32 Reserved1;
860 U32 Reserved2;
861 U32 Reserved3;
862} MPI2_CONFIG_PAGE_IO_UNIT_6, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_6,
863 Mpi2IOUnitPage6_t, MPI2_POINTER pMpi2IOUnitPage6_t;
864
865#define MPI2_IOUNITPAGE6_PAGEVERSION (0x00)
866
867
868#define MPI2_IOUNITPAGE6_FLAGS_ENABLE_RAID_ACCELERATOR (0x0001)
869
870
871
872
873typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_7 {
874 MPI2_CONFIG_PAGE_HEADER Header;
875 U16 Reserved1;
876 U8 PCIeWidth;
877 U8 PCIeSpeed;
878 U32 ProcessorState;
879 U32 PowerManagementCapabilities;
880 U16 IOCTemperature;
881 U8 IOCTemperatureUnits;
882 U8 IOCSpeed;
883 U16 BoardTemperature;
884 U8 BoardTemperatureUnits;
885 U8 Reserved3;
886} MPI2_CONFIG_PAGE_IO_UNIT_7, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_7,
887 Mpi2IOUnitPage7_t, MPI2_POINTER pMpi2IOUnitPage7_t;
888
889#define MPI2_IOUNITPAGE7_PAGEVERSION (0x02)
890
891
892#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X1 (0x01)
893#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X2 (0x02)
894#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X4 (0x04)
895#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X8 (0x08)
896
897
898#define MPI2_IOUNITPAGE7_PCIE_SPEED_2_5_GBPS (0x00)
899#define MPI2_IOUNITPAGE7_PCIE_SPEED_5_0_GBPS (0x01)
900#define MPI2_IOUNITPAGE7_PCIE_SPEED_8_0_GBPS (0x02)
901
902
903#define MPI2_IOUNITPAGE7_PSTATE_MASK_SECOND (0x0000000F)
904#define MPI2_IOUNITPAGE7_PSTATE_SHIFT_SECOND (0)
905
906#define MPI2_IOUNITPAGE7_PSTATE_NOT_PRESENT (0x00)
907#define MPI2_IOUNITPAGE7_PSTATE_DISABLED (0x01)
908#define MPI2_IOUNITPAGE7_PSTATE_ENABLED (0x02)
909
910
911#define MPI2_IOUNITPAGE7_PMCAP_12_5_PCT_IOCSPEED (0x00000400)
912#define MPI2_IOUNITPAGE7_PMCAP_25_0_PCT_IOCSPEED (0x00000200)
913#define MPI2_IOUNITPAGE7_PMCAP_50_0_PCT_IOCSPEED (0x00000100)
914#define MPI2_IOUNITPAGE7_PMCAP_PCIE_WIDTH_CHANGE (0x00000008)
915#define MPI2_IOUNITPAGE7_PMCAP_PCIE_SPEED_CHANGE (0x00000004)
916
917
918#define MPI2_IOUNITPAGE7_IOC_TEMP_NOT_PRESENT (0x00)
919#define MPI2_IOUNITPAGE7_IOC_TEMP_FAHRENHEIT (0x01)
920#define MPI2_IOUNITPAGE7_IOC_TEMP_CELSIUS (0x02)
921
922
923#define MPI2_IOUNITPAGE7_IOC_SPEED_FULL (0x01)
924#define MPI2_IOUNITPAGE7_IOC_SPEED_HALF (0x02)
925#define MPI2_IOUNITPAGE7_IOC_SPEED_QUARTER (0x04)
926#define MPI2_IOUNITPAGE7_IOC_SPEED_EIGHTH (0x08)
927
928
929#define MPI2_IOUNITPAGE7_BOARD_TEMP_NOT_PRESENT (0x00)
930#define MPI2_IOUNITPAGE7_BOARD_TEMP_FAHRENHEIT (0x01)
931#define MPI2_IOUNITPAGE7_BOARD_TEMP_CELSIUS (0x02)
932
933
934
935#define MPI2_IOUNIT8_NUM_THRESHOLDS (4)
936
937typedef struct _MPI2_IOUNIT8_SENSOR {
938 U16 Flags;
939 U16 Reserved1;
940 U16
941 Threshold[MPI2_IOUNIT8_NUM_THRESHOLDS];
942 U32 Reserved2;
943 U32 Reserved3;
944 U32 Reserved4;
945} MPI2_IOUNIT8_SENSOR, MPI2_POINTER PTR_MPI2_IOUNIT8_SENSOR,
946Mpi2IOUnit8Sensor_t, MPI2_POINTER pMpi2IOUnit8Sensor_t;
947
948
949#define MPI2_IOUNIT8_SENSOR_FLAGS_T3_ENABLE (0x0008)
950#define MPI2_IOUNIT8_SENSOR_FLAGS_T2_ENABLE (0x0004)
951#define MPI2_IOUNIT8_SENSOR_FLAGS_T1_ENABLE (0x0002)
952#define MPI2_IOUNIT8_SENSOR_FLAGS_T0_ENABLE (0x0001)
953
954
955
956
957
958#ifndef MPI2_IOUNITPAGE8_SENSOR_ENTRIES
959#define MPI2_IOUNITPAGE8_SENSOR_ENTRIES (1)
960#endif
961
962typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_8 {
963 MPI2_CONFIG_PAGE_HEADER Header;
964 U32 Reserved1;
965 U32 Reserved2;
966 U8 NumSensors;
967 U8 PollingInterval;
968 U16 Reserved3;
969 MPI2_IOUNIT8_SENSOR
970 Sensor[MPI2_IOUNITPAGE8_SENSOR_ENTRIES];
971} MPI2_CONFIG_PAGE_IO_UNIT_8, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_8,
972Mpi2IOUnitPage8_t, MPI2_POINTER pMpi2IOUnitPage8_t;
973
974#define MPI2_IOUNITPAGE8_PAGEVERSION (0x00)
975
976
977
978
979typedef struct _MPI2_IOUNIT9_SENSOR {
980 U16 CurrentTemperature;
981 U16 Reserved1;
982 U8 Flags;
983 U8 Reserved2;
984 U16 Reserved3;
985 U32 Reserved4;
986 U32 Reserved5;
987} MPI2_IOUNIT9_SENSOR, MPI2_POINTER PTR_MPI2_IOUNIT9_SENSOR,
988Mpi2IOUnit9Sensor_t, MPI2_POINTER pMpi2IOUnit9Sensor_t;
989
990
991#define MPI2_IOUNIT9_SENSOR_FLAGS_TEMP_VALID (0x01)
992
993
994
995
996
997#ifndef MPI2_IOUNITPAGE9_SENSOR_ENTRIES
998#define MPI2_IOUNITPAGE9_SENSOR_ENTRIES (1)
999#endif
1000
1001typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_9 {
1002 MPI2_CONFIG_PAGE_HEADER Header;
1003 U32 Reserved1;
1004 U32 Reserved2;
1005 U8 NumSensors;
1006 U8 Reserved4;
1007 U16 Reserved3;
1008 MPI2_IOUNIT9_SENSOR
1009 Sensor[MPI2_IOUNITPAGE9_SENSOR_ENTRIES];
1010} MPI2_CONFIG_PAGE_IO_UNIT_9, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_9,
1011Mpi2IOUnitPage9_t, MPI2_POINTER pMpi2IOUnitPage9_t;
1012
1013#define MPI2_IOUNITPAGE9_PAGEVERSION (0x00)
1014
1015
1016
1017
1018typedef struct _MPI2_IOUNIT10_FUNCTION {
1019 U8 CreditPercent;
1020 U8 Reserved1;
1021 U16 Reserved2;
1022} MPI2_IOUNIT10_FUNCTION, MPI2_POINTER PTR_MPI2_IOUNIT10_FUNCTION,
1023Mpi2IOUnit10Function_t, MPI2_POINTER pMpi2IOUnit10Function_t;
1024
1025
1026
1027
1028
1029#ifndef MPI2_IOUNITPAGE10_FUNCTION_ENTRIES
1030#define MPI2_IOUNITPAGE10_FUNCTION_ENTRIES (1)
1031#endif
1032
1033typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_10 {
1034 MPI2_CONFIG_PAGE_HEADER Header;
1035 U8 NumFunctions;
1036 U8 Reserved1;
1037 U16 Reserved2;
1038 U32 Reserved3;
1039 U32 Reserved4;
1040 MPI2_IOUNIT10_FUNCTION
1041 Function[MPI2_IOUNITPAGE10_FUNCTION_ENTRIES];
1042} MPI2_CONFIG_PAGE_IO_UNIT_10, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_10,
1043Mpi2IOUnitPage10_t, MPI2_POINTER pMpi2IOUnitPage10_t;
1044
1045#define MPI2_IOUNITPAGE10_PAGEVERSION (0x01)
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055typedef struct _MPI2_CONFIG_PAGE_IOC_0
1056{
1057 MPI2_CONFIG_PAGE_HEADER Header;
1058 U32 Reserved1;
1059 U32 Reserved2;
1060 U16 VendorID;
1061 U16 DeviceID;
1062 U8 RevisionID;
1063 U8 Reserved3;
1064 U16 Reserved4;
1065 U32 ClassCode;
1066 U16 SubsystemVendorID;
1067 U16 SubsystemID;
1068} MPI2_CONFIG_PAGE_IOC_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_0,
1069 Mpi2IOCPage0_t, MPI2_POINTER pMpi2IOCPage0_t;
1070
1071#define MPI2_IOCPAGE0_PAGEVERSION (0x02)
1072
1073
1074
1075
1076typedef struct _MPI2_CONFIG_PAGE_IOC_1
1077{
1078 MPI2_CONFIG_PAGE_HEADER Header;
1079 U32 Flags;
1080 U32 CoalescingTimeout;
1081 U8 CoalescingDepth;
1082 U8 PCISlotNum;
1083 U8 PCIBusNum;
1084 U8 PCIDomainSegment;
1085 U32 Reserved1;
1086 U32 Reserved2;
1087} MPI2_CONFIG_PAGE_IOC_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_1,
1088 Mpi2IOCPage1_t, MPI2_POINTER pMpi2IOCPage1_t;
1089
1090#define MPI2_IOCPAGE1_PAGEVERSION (0x05)
1091
1092
1093#define MPI2_IOCPAGE1_REPLY_COALESCING (0x00000001)
1094
1095#define MPI2_IOCPAGE1_PCISLOTNUM_UNKNOWN (0xFF)
1096#define MPI2_IOCPAGE1_PCIBUSNUM_UNKNOWN (0xFF)
1097#define MPI2_IOCPAGE1_PCIDOMAIN_UNKNOWN (0xFF)
1098
1099
1100
1101typedef struct _MPI2_CONFIG_PAGE_IOC_6
1102{
1103 MPI2_CONFIG_PAGE_HEADER Header;
1104 U32 CapabilitiesFlags;
1105 U8 MaxDrivesRAID0;
1106 U8 MaxDrivesRAID1;
1107 U8 MaxDrivesRAID1E;
1108 U8 MaxDrivesRAID10;
1109 U8 MinDrivesRAID0;
1110 U8 MinDrivesRAID1;
1111 U8 MinDrivesRAID1E;
1112 U8 MinDrivesRAID10;
1113 U32 Reserved1;
1114 U8 MaxGlobalHotSpares;
1115 U8 MaxPhysDisks;
1116 U8 MaxVolumes;
1117 U8 MaxConfigs;
1118 U8 MaxOCEDisks;
1119 U8 Reserved2;
1120 U16 Reserved3;
1121 U32 SupportedStripeSizeMapRAID0;
1122 U32 SupportedStripeSizeMapRAID1E;
1123 U32 SupportedStripeSizeMapRAID10;
1124 U32 Reserved4;
1125 U32 Reserved5;
1126 U16 DefaultMetadataSize;
1127 U16 Reserved6;
1128 U16 MaxBadBlockTableEntries;
1129 U16 Reserved7;
1130 U32 IRNvsramVersion;
1131} MPI2_CONFIG_PAGE_IOC_6, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_6,
1132 Mpi2IOCPage6_t, MPI2_POINTER pMpi2IOCPage6_t;
1133
1134#define MPI2_IOCPAGE6_PAGEVERSION (0x04)
1135
1136
1137#define MPI2_IOCPAGE6_CAP_FLAGS_RAID10_SUPPORT (0x00000010)
1138#define MPI2_IOCPAGE6_CAP_FLAGS_RAID1_SUPPORT (0x00000008)
1139#define MPI2_IOCPAGE6_CAP_FLAGS_RAID1E_SUPPORT (0x00000004)
1140#define MPI2_IOCPAGE6_CAP_FLAGS_RAID0_SUPPORT (0x00000002)
1141#define MPI2_IOCPAGE6_CAP_FLAGS_GLOBAL_HOT_SPARE (0x00000001)
1142
1143
1144
1145
1146#define MPI2_IOCPAGE7_EVENTMASK_WORDS (4)
1147
1148typedef struct _MPI2_CONFIG_PAGE_IOC_7
1149{
1150 MPI2_CONFIG_PAGE_HEADER Header;
1151 U32 Reserved1;
1152 U32 EventMasks[MPI2_IOCPAGE7_EVENTMASK_WORDS];
1153 U16 SASBroadcastPrimitiveMasks;
1154 U16 SASNotifyPrimitiveMasks;
1155 U32 Reserved3;
1156} MPI2_CONFIG_PAGE_IOC_7, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_7,
1157 Mpi2IOCPage7_t, MPI2_POINTER pMpi2IOCPage7_t;
1158
1159#define MPI2_IOCPAGE7_PAGEVERSION (0x02)
1160
1161
1162
1163
1164typedef struct _MPI2_CONFIG_PAGE_IOC_8
1165{
1166 MPI2_CONFIG_PAGE_HEADER Header;
1167 U8 NumDevsPerEnclosure;
1168 U8 Reserved1;
1169 U16 Reserved2;
1170 U16 MaxPersistentEntries;
1171 U16 MaxNumPhysicalMappedIDs;
1172 U16 Flags;
1173 U16 Reserved3;
1174 U16 IRVolumeMappingFlags;
1175 U16 Reserved4;
1176 U32 Reserved5;
1177} MPI2_CONFIG_PAGE_IOC_8, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_8,
1178 Mpi2IOCPage8_t, MPI2_POINTER pMpi2IOCPage8_t;
1179
1180#define MPI2_IOCPAGE8_PAGEVERSION (0x00)
1181
1182
1183#define MPI2_IOCPAGE8_FLAGS_DA_START_SLOT_1 (0x00000020)
1184#define MPI2_IOCPAGE8_FLAGS_RESERVED_TARGETID_0 (0x00000010)
1185
1186#define MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE (0x0000000E)
1187#define MPI2_IOCPAGE8_FLAGS_DEVICE_PERSISTENCE_MAPPING (0x00000000)
1188#define MPI2_IOCPAGE8_FLAGS_ENCLOSURE_SLOT_MAPPING (0x00000002)
1189
1190#define MPI2_IOCPAGE8_FLAGS_DISABLE_PERSISTENT_MAPPING (0x00000001)
1191#define MPI2_IOCPAGE8_FLAGS_ENABLE_PERSISTENT_MAPPING (0x00000000)
1192
1193
1194#define MPI2_IOCPAGE8_IRFLAGS_MASK_VOLUME_MAPPING_MODE (0x00000003)
1195#define MPI2_IOCPAGE8_IRFLAGS_LOW_VOLUME_MAPPING (0x00000000)
1196#define MPI2_IOCPAGE8_IRFLAGS_HIGH_VOLUME_MAPPING (0x00000001)
1197
1198
1199
1200
1201
1202
1203
1204
1205typedef struct _MPI2_CONFIG_PAGE_BIOS_1
1206{
1207 MPI2_CONFIG_PAGE_HEADER Header;
1208 U32 BiosOptions;
1209 U32 IOCSettings;
1210 U32 Reserved1;
1211 U32 DeviceSettings;
1212 U16 NumberOfDevices;
1213 U16 Reserved2;
1214 U16 IOTimeoutBlockDevicesNonRM;
1215 U16 IOTimeoutSequential;
1216 U16 IOTimeoutOther;
1217 U16 IOTimeoutBlockDevicesRM;
1218} MPI2_CONFIG_PAGE_BIOS_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_BIOS_1,
1219 Mpi2BiosPage1_t, MPI2_POINTER pMpi2BiosPage1_t;
1220
1221#define MPI2_BIOSPAGE1_PAGEVERSION (0x04)
1222
1223
1224#define MPI2_BIOSPAGE1_OPTIONS_DISABLE_BIOS (0x00000001)
1225
1226
1227#define MPI2_BIOSPAGE1_IOCSET_MASK_BOOT_PREFERENCE (0x00030000)
1228#define MPI2_BIOSPAGE1_IOCSET_ENCLOSURE_SLOT_BOOT (0x00000000)
1229#define MPI2_BIOSPAGE1_IOCSET_SAS_ADDRESS_BOOT (0x00010000)
1230
1231#define MPI2_BIOSPAGE1_IOCSET_MASK_RM_SETTING (0x000000C0)
1232#define MPI2_BIOSPAGE1_IOCSET_NONE_RM_SETTING (0x00000000)
1233#define MPI2_BIOSPAGE1_IOCSET_BOOT_RM_SETTING (0x00000040)
1234#define MPI2_BIOSPAGE1_IOCSET_MEDIA_RM_SETTING (0x00000080)
1235
1236#define MPI2_BIOSPAGE1_IOCSET_MASK_ADAPTER_SUPPORT (0x00000030)
1237#define MPI2_BIOSPAGE1_IOCSET_NO_SUPPORT (0x00000000)
1238#define MPI2_BIOSPAGE1_IOCSET_BIOS_SUPPORT (0x00000010)
1239#define MPI2_BIOSPAGE1_IOCSET_OS_SUPPORT (0x00000020)
1240#define MPI2_BIOSPAGE1_IOCSET_ALL_SUPPORT (0x00000030)
1241
1242#define MPI2_BIOSPAGE1_IOCSET_ALTERNATE_CHS (0x00000008)
1243
1244
1245#define MPI2_BIOSPAGE1_DEVSET_DISABLE_SMART_POLLING (0x00000010)
1246#define MPI2_BIOSPAGE1_DEVSET_DISABLE_SEQ_LUN (0x00000008)
1247#define MPI2_BIOSPAGE1_DEVSET_DISABLE_RM_LUN (0x00000004)
1248#define MPI2_BIOSPAGE1_DEVSET_DISABLE_NON_RM_LUN (0x00000002)
1249#define MPI2_BIOSPAGE1_DEVSET_DISABLE_OTHER_LUN (0x00000001)
1250
1251
1252
1253
1254typedef struct _MPI2_BOOT_DEVICE_ADAPTER_ORDER
1255{
1256 U32 Reserved1;
1257 U32 Reserved2;
1258 U32 Reserved3;
1259 U32 Reserved4;
1260 U32 Reserved5;
1261 U32 Reserved6;
1262} MPI2_BOOT_DEVICE_ADAPTER_ORDER,
1263 MPI2_POINTER PTR_MPI2_BOOT_DEVICE_ADAPTER_ORDER,
1264 Mpi2BootDeviceAdapterOrder_t, MPI2_POINTER pMpi2BootDeviceAdapterOrder_t;
1265
1266typedef struct _MPI2_BOOT_DEVICE_SAS_WWID
1267{
1268 U64 SASAddress;
1269 U8 LUN[8];
1270 U32 Reserved1;
1271 U32 Reserved2;
1272} MPI2_BOOT_DEVICE_SAS_WWID, MPI2_POINTER PTR_MPI2_BOOT_DEVICE_SAS_WWID,
1273 Mpi2BootDeviceSasWwid_t, MPI2_POINTER pMpi2BootDeviceSasWwid_t;
1274
1275typedef struct _MPI2_BOOT_DEVICE_ENCLOSURE_SLOT
1276{
1277 U64 EnclosureLogicalID;
1278 U32 Reserved1;
1279 U32 Reserved2;
1280 U16 SlotNumber;
1281 U16 Reserved3;
1282 U32 Reserved4;
1283} MPI2_BOOT_DEVICE_ENCLOSURE_SLOT,
1284 MPI2_POINTER PTR_MPI2_BOOT_DEVICE_ENCLOSURE_SLOT,
1285 Mpi2BootDeviceEnclosureSlot_t, MPI2_POINTER pMpi2BootDeviceEnclosureSlot_t;
1286
1287typedef struct _MPI2_BOOT_DEVICE_DEVICE_NAME
1288{
1289 U64 DeviceName;
1290 U8 LUN[8];
1291 U32 Reserved1;
1292 U32 Reserved2;
1293} MPI2_BOOT_DEVICE_DEVICE_NAME, MPI2_POINTER PTR_MPI2_BOOT_DEVICE_DEVICE_NAME,
1294 Mpi2BootDeviceDeviceName_t, MPI2_POINTER pMpi2BootDeviceDeviceName_t;
1295
1296typedef union _MPI2_MPI2_BIOSPAGE2_BOOT_DEVICE
1297{
1298 MPI2_BOOT_DEVICE_ADAPTER_ORDER AdapterOrder;
1299 MPI2_BOOT_DEVICE_SAS_WWID SasWwid;
1300 MPI2_BOOT_DEVICE_ENCLOSURE_SLOT EnclosureSlot;
1301 MPI2_BOOT_DEVICE_DEVICE_NAME DeviceName;
1302} MPI2_BIOSPAGE2_BOOT_DEVICE, MPI2_POINTER PTR_MPI2_BIOSPAGE2_BOOT_DEVICE,
1303 Mpi2BiosPage2BootDevice_t, MPI2_POINTER pMpi2BiosPage2BootDevice_t;
1304
1305typedef struct _MPI2_CONFIG_PAGE_BIOS_2
1306{
1307 MPI2_CONFIG_PAGE_HEADER Header;
1308 U32 Reserved1;
1309 U32 Reserved2;
1310 U32 Reserved3;
1311 U32 Reserved4;
1312 U32 Reserved5;
1313 U32 Reserved6;
1314 U8 ReqBootDeviceForm;
1315 U8 Reserved7;
1316 U16 Reserved8;
1317 MPI2_BIOSPAGE2_BOOT_DEVICE RequestedBootDevice;
1318 U8 ReqAltBootDeviceForm;
1319 U8 Reserved9;
1320 U16 Reserved10;
1321 MPI2_BIOSPAGE2_BOOT_DEVICE RequestedAltBootDevice;
1322 U8 CurrentBootDeviceForm;
1323 U8 Reserved11;
1324 U16 Reserved12;
1325 MPI2_BIOSPAGE2_BOOT_DEVICE CurrentBootDevice;
1326} MPI2_CONFIG_PAGE_BIOS_2, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_BIOS_2,
1327 Mpi2BiosPage2_t, MPI2_POINTER pMpi2BiosPage2_t;
1328
1329#define MPI2_BIOSPAGE2_PAGEVERSION (0x04)
1330
1331
1332#define MPI2_BIOSPAGE2_FORM_MASK (0x0F)
1333#define MPI2_BIOSPAGE2_FORM_NO_DEVICE_SPECIFIED (0x00)
1334#define MPI2_BIOSPAGE2_FORM_SAS_WWID (0x05)
1335#define MPI2_BIOSPAGE2_FORM_ENCLOSURE_SLOT (0x06)
1336#define MPI2_BIOSPAGE2_FORM_DEVICE_NAME (0x07)
1337
1338
1339
1340
1341typedef struct _MPI2_ADAPTER_INFO
1342{
1343 U8 PciBusNumber;
1344 U8 PciDeviceAndFunctionNumber;
1345 U16 AdapterFlags;
1346} MPI2_ADAPTER_INFO, MPI2_POINTER PTR_MPI2_ADAPTER_INFO,
1347 Mpi2AdapterInfo_t, MPI2_POINTER pMpi2AdapterInfo_t;
1348
1349#define MPI2_ADAPTER_INFO_FLAGS_EMBEDDED (0x0001)
1350#define MPI2_ADAPTER_INFO_FLAGS_INIT_STATUS (0x0002)
1351
1352typedef struct _MPI2_CONFIG_PAGE_BIOS_3
1353{
1354 MPI2_CONFIG_PAGE_HEADER Header;
1355 U32 GlobalFlags;
1356 U32 BiosVersion;
1357 MPI2_ADAPTER_INFO AdapterOrder[4];
1358 U32 Reserved1;
1359} MPI2_CONFIG_PAGE_BIOS_3, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_BIOS_3,
1360 Mpi2BiosPage3_t, MPI2_POINTER pMpi2BiosPage3_t;
1361
1362#define MPI2_BIOSPAGE3_PAGEVERSION (0x00)
1363
1364
1365#define MPI2_BIOSPAGE3_FLAGS_PAUSE_ON_ERROR (0x00000002)
1366#define MPI2_BIOSPAGE3_FLAGS_VERBOSE_ENABLE (0x00000004)
1367#define MPI2_BIOSPAGE3_FLAGS_HOOK_INT_40_DISABLE (0x00000010)
1368
1369#define MPI2_BIOSPAGE3_FLAGS_DEV_LIST_DISPLAY_MASK (0x000000E0)
1370#define MPI2_BIOSPAGE3_FLAGS_INSTALLED_DEV_DISPLAY (0x00000000)
1371#define MPI2_BIOSPAGE3_FLAGS_ADAPTER_DISPLAY (0x00000020)
1372#define MPI2_BIOSPAGE3_FLAGS_ADAPTER_DEV_DISPLAY (0x00000040)
1373
1374
1375
1376
1377
1378
1379
1380
1381#ifndef MPI2_BIOS_PAGE_4_PHY_ENTRIES
1382#define MPI2_BIOS_PAGE_4_PHY_ENTRIES (1)
1383#endif
1384
1385typedef struct _MPI2_BIOS4_ENTRY
1386{
1387 U64 ReassignmentWWID;
1388 U64 ReassignmentDeviceName;
1389} MPI2_BIOS4_ENTRY, MPI2_POINTER PTR_MPI2_BIOS4_ENTRY,
1390 Mpi2MBios4Entry_t, MPI2_POINTER pMpi2Bios4Entry_t;
1391
1392typedef struct _MPI2_CONFIG_PAGE_BIOS_4
1393{
1394 MPI2_CONFIG_PAGE_HEADER Header;
1395 U8 NumPhys;
1396 U8 Reserved1;
1397 U16 Reserved2;
1398 MPI2_BIOS4_ENTRY Phy[MPI2_BIOS_PAGE_4_PHY_ENTRIES];
1399} MPI2_CONFIG_PAGE_BIOS_4, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_BIOS_4,
1400 Mpi2BiosPage4_t, MPI2_POINTER pMpi2BiosPage4_t;
1401
1402#define MPI2_BIOSPAGE4_PAGEVERSION (0x01)
1403
1404
1405
1406
1407
1408
1409
1410
1411typedef struct _MPI2_RAIDVOL0_PHYS_DISK
1412{
1413 U8 RAIDSetNum;
1414 U8 PhysDiskMap;
1415 U8 PhysDiskNum;
1416 U8 Reserved;
1417} MPI2_RAIDVOL0_PHYS_DISK, MPI2_POINTER PTR_MPI2_RAIDVOL0_PHYS_DISK,
1418 Mpi2RaidVol0PhysDisk_t, MPI2_POINTER pMpi2RaidVol0PhysDisk_t;
1419
1420
1421#define MPI2_RAIDVOL0_PHYSDISK_PRIMARY (0x01)
1422#define MPI2_RAIDVOL0_PHYSDISK_SECONDARY (0x02)
1423
1424typedef struct _MPI2_RAIDVOL0_SETTINGS
1425{
1426 U16 Settings;
1427 U8 HotSparePool;
1428 U8 Reserved;
1429} MPI2_RAIDVOL0_SETTINGS, MPI2_POINTER PTR_MPI2_RAIDVOL0_SETTINGS,
1430 Mpi2RaidVol0Settings_t, MPI2_POINTER pMpi2RaidVol0Settings_t;
1431
1432
1433#define MPI2_RAID_HOT_SPARE_POOL_0 (0x01)
1434#define MPI2_RAID_HOT_SPARE_POOL_1 (0x02)
1435#define MPI2_RAID_HOT_SPARE_POOL_2 (0x04)
1436#define MPI2_RAID_HOT_SPARE_POOL_3 (0x08)
1437#define MPI2_RAID_HOT_SPARE_POOL_4 (0x10)
1438#define MPI2_RAID_HOT_SPARE_POOL_5 (0x20)
1439#define MPI2_RAID_HOT_SPARE_POOL_6 (0x40)
1440#define MPI2_RAID_HOT_SPARE_POOL_7 (0x80)
1441
1442
1443#define MPI2_RAIDVOL0_SETTING_USE_PRODUCT_ID_SUFFIX (0x0008)
1444#define MPI2_RAIDVOL0_SETTING_AUTO_CONFIG_HSWAP_DISABLE (0x0004)
1445
1446#define MPI2_RAIDVOL0_SETTING_MASK_WRITE_CACHING (0x0003)
1447#define MPI2_RAIDVOL0_SETTING_UNCHANGED (0x0000)
1448#define MPI2_RAIDVOL0_SETTING_DISABLE_WRITE_CACHING (0x0001)
1449#define MPI2_RAIDVOL0_SETTING_ENABLE_WRITE_CACHING (0x0002)
1450
1451
1452
1453
1454
1455#ifndef MPI2_RAID_VOL_PAGE_0_PHYSDISK_MAX
1456#define MPI2_RAID_VOL_PAGE_0_PHYSDISK_MAX (1)
1457#endif
1458
1459typedef struct _MPI2_CONFIG_PAGE_RAID_VOL_0
1460{
1461 MPI2_CONFIG_PAGE_HEADER Header;
1462 U16 DevHandle;
1463 U8 VolumeState;
1464 U8 VolumeType;
1465 U32 VolumeStatusFlags;
1466 MPI2_RAIDVOL0_SETTINGS VolumeSettings;
1467 U64 MaxLBA;
1468 U32 StripeSize;
1469 U16 BlockSize;
1470 U16 Reserved1;
1471 U8 SupportedPhysDisks;
1472 U8 ResyncRate;
1473 U16 DataScrubDuration;
1474 U8 NumPhysDisks;
1475 U8 Reserved2;
1476 U8 Reserved3;
1477 U8 InactiveStatus;
1478 MPI2_RAIDVOL0_PHYS_DISK PhysDisk[MPI2_RAID_VOL_PAGE_0_PHYSDISK_MAX];
1479} MPI2_CONFIG_PAGE_RAID_VOL_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_RAID_VOL_0,
1480 Mpi2RaidVolPage0_t, MPI2_POINTER pMpi2RaidVolPage0_t;
1481
1482#define MPI2_RAIDVOLPAGE0_PAGEVERSION (0x0A)
1483
1484
1485#define MPI2_RAID_VOL_STATE_MISSING (0x00)
1486#define MPI2_RAID_VOL_STATE_FAILED (0x01)
1487#define MPI2_RAID_VOL_STATE_INITIALIZING (0x02)
1488#define MPI2_RAID_VOL_STATE_ONLINE (0x03)
1489#define MPI2_RAID_VOL_STATE_DEGRADED (0x04)
1490#define MPI2_RAID_VOL_STATE_OPTIMAL (0x05)
1491
1492
1493#define MPI2_RAID_VOL_TYPE_RAID0 (0x00)
1494#define MPI2_RAID_VOL_TYPE_RAID1E (0x01)
1495#define MPI2_RAID_VOL_TYPE_RAID1 (0x02)
1496#define MPI2_RAID_VOL_TYPE_RAID10 (0x05)
1497#define MPI2_RAID_VOL_TYPE_UNKNOWN (0xFF)
1498
1499
1500#define MPI2_RAIDVOL0_STATUS_FLAG_PENDING_RESYNC (0x02000000)
1501#define MPI2_RAIDVOL0_STATUS_FLAG_BACKG_INIT_PENDING (0x01000000)
1502#define MPI2_RAIDVOL0_STATUS_FLAG_MDC_PENDING (0x00800000)
1503#define MPI2_RAIDVOL0_STATUS_FLAG_USER_CONSIST_PENDING (0x00400000)
1504#define MPI2_RAIDVOL0_STATUS_FLAG_MAKE_DATA_CONSISTENT (0x00200000)
1505#define MPI2_RAIDVOL0_STATUS_FLAG_DATA_SCRUB (0x00100000)
1506#define MPI2_RAIDVOL0_STATUS_FLAG_CONSISTENCY_CHECK (0x00080000)
1507#define MPI2_RAIDVOL0_STATUS_FLAG_CAPACITY_EXPANSION (0x00040000)
1508#define MPI2_RAIDVOL0_STATUS_FLAG_BACKGROUND_INIT (0x00020000)
1509#define MPI2_RAIDVOL0_STATUS_FLAG_RESYNC_IN_PROGRESS (0x00010000)
1510#define MPI2_RAIDVOL0_STATUS_FLAG_VOL_NOT_CONSISTENT (0x00000080)
1511#define MPI2_RAIDVOL0_STATUS_FLAG_OCE_ALLOWED (0x00000040)
1512#define MPI2_RAIDVOL0_STATUS_FLAG_BGI_COMPLETE (0x00000020)
1513#define MPI2_RAIDVOL0_STATUS_FLAG_1E_OFFSET_MIRROR (0x00000000)
1514#define MPI2_RAIDVOL0_STATUS_FLAG_1E_ADJACENT_MIRROR (0x00000010)
1515#define MPI2_RAIDVOL0_STATUS_FLAG_BAD_BLOCK_TABLE_FULL (0x00000008)
1516#define MPI2_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE (0x00000004)
1517#define MPI2_RAIDVOL0_STATUS_FLAG_QUIESCED (0x00000002)
1518#define MPI2_RAIDVOL0_STATUS_FLAG_ENABLED (0x00000001)
1519
1520
1521#define MPI2_RAIDVOL0_SUPPORT_SOLID_STATE_DISKS (0x08)
1522#define MPI2_RAIDVOL0_SUPPORT_HARD_DISKS (0x04)
1523#define MPI2_RAIDVOL0_SUPPORT_SAS_PROTOCOL (0x02)
1524#define MPI2_RAIDVOL0_SUPPORT_SATA_PROTOCOL (0x01)
1525
1526
1527#define MPI2_RAIDVOLPAGE0_UNKNOWN_INACTIVE (0x00)
1528#define MPI2_RAIDVOLPAGE0_STALE_METADATA_INACTIVE (0x01)
1529#define MPI2_RAIDVOLPAGE0_FOREIGN_VOLUME_INACTIVE (0x02)
1530#define MPI2_RAIDVOLPAGE0_INSUFFICIENT_RESOURCE_INACTIVE (0x03)
1531#define MPI2_RAIDVOLPAGE0_CLONE_VOLUME_INACTIVE (0x04)
1532#define MPI2_RAIDVOLPAGE0_INSUFFICIENT_METADATA_INACTIVE (0x05)
1533#define MPI2_RAIDVOLPAGE0_PREVIOUSLY_DELETED (0x06)
1534
1535
1536
1537
1538typedef struct _MPI2_CONFIG_PAGE_RAID_VOL_1
1539{
1540 MPI2_CONFIG_PAGE_HEADER Header;
1541 U16 DevHandle;
1542 U16 Reserved0;
1543 U8 GUID[24];
1544 U8 Name[16];
1545 U64 WWID;
1546 U32 Reserved1;
1547 U32 Reserved2;
1548} MPI2_CONFIG_PAGE_RAID_VOL_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_RAID_VOL_1,
1549 Mpi2RaidVolPage1_t, MPI2_POINTER pMpi2RaidVolPage1_t;
1550
1551#define MPI2_RAIDVOLPAGE1_PAGEVERSION (0x03)
1552
1553
1554
1555
1556
1557
1558
1559
1560typedef struct _MPI2_RAIDPHYSDISK0_SETTINGS
1561{
1562 U16 Reserved1;
1563 U8 HotSparePool;
1564 U8 Reserved2;
1565} MPI2_RAIDPHYSDISK0_SETTINGS, MPI2_POINTER PTR_MPI2_RAIDPHYSDISK0_SETTINGS,
1566 Mpi2RaidPhysDisk0Settings_t, MPI2_POINTER pMpi2RaidPhysDisk0Settings_t;
1567
1568
1569
1570typedef struct _MPI2_RAIDPHYSDISK0_INQUIRY_DATA
1571{
1572 U8 VendorID[8];
1573 U8 ProductID[16];
1574 U8 ProductRevLevel[4];
1575 U8 SerialNum[32];
1576} MPI2_RAIDPHYSDISK0_INQUIRY_DATA,
1577 MPI2_POINTER PTR_MPI2_RAIDPHYSDISK0_INQUIRY_DATA,
1578 Mpi2RaidPhysDisk0InquiryData_t, MPI2_POINTER pMpi2RaidPhysDisk0InquiryData_t;
1579
1580typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_0
1581{
1582 MPI2_CONFIG_PAGE_HEADER Header;
1583 U16 DevHandle;
1584 U8 Reserved1;
1585 U8 PhysDiskNum;
1586 MPI2_RAIDPHYSDISK0_SETTINGS PhysDiskSettings;
1587 U32 Reserved2;
1588 MPI2_RAIDPHYSDISK0_INQUIRY_DATA InquiryData;
1589 U32 Reserved3;
1590 U8 PhysDiskState;
1591 U8 OfflineReason;
1592 U8 IncompatibleReason;
1593 U8 PhysDiskAttributes;
1594 U32 PhysDiskStatusFlags;
1595 U64 DeviceMaxLBA;
1596 U64 HostMaxLBA;
1597 U64 CoercedMaxLBA;
1598 U16 BlockSize;
1599 U16 Reserved5;
1600 U32 Reserved6;
1601} MPI2_CONFIG_PAGE_RD_PDISK_0,
1602 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_RD_PDISK_0,
1603 Mpi2RaidPhysDiskPage0_t, MPI2_POINTER pMpi2RaidPhysDiskPage0_t;
1604
1605#define MPI2_RAIDPHYSDISKPAGE0_PAGEVERSION (0x05)
1606
1607
1608#define MPI2_RAID_PD_STATE_NOT_CONFIGURED (0x00)
1609#define MPI2_RAID_PD_STATE_NOT_COMPATIBLE (0x01)
1610#define MPI2_RAID_PD_STATE_OFFLINE (0x02)
1611#define MPI2_RAID_PD_STATE_ONLINE (0x03)
1612#define MPI2_RAID_PD_STATE_HOT_SPARE (0x04)
1613#define MPI2_RAID_PD_STATE_DEGRADED (0x05)
1614#define MPI2_RAID_PD_STATE_REBUILDING (0x06)
1615#define MPI2_RAID_PD_STATE_OPTIMAL (0x07)
1616
1617
1618#define MPI2_PHYSDISK0_ONLINE (0x00)
1619#define MPI2_PHYSDISK0_OFFLINE_MISSING (0x01)
1620#define MPI2_PHYSDISK0_OFFLINE_FAILED (0x03)
1621#define MPI2_PHYSDISK0_OFFLINE_INITIALIZING (0x04)
1622#define MPI2_PHYSDISK0_OFFLINE_REQUESTED (0x05)
1623#define MPI2_PHYSDISK0_OFFLINE_FAILED_REQUESTED (0x06)
1624#define MPI2_PHYSDISK0_OFFLINE_OTHER (0xFF)
1625
1626
1627#define MPI2_PHYSDISK0_COMPATIBLE (0x00)
1628#define MPI2_PHYSDISK0_INCOMPATIBLE_PROTOCOL (0x01)
1629#define MPI2_PHYSDISK0_INCOMPATIBLE_BLOCKSIZE (0x02)
1630#define MPI2_PHYSDISK0_INCOMPATIBLE_MAX_LBA (0x03)
1631#define MPI2_PHYSDISK0_INCOMPATIBLE_SATA_EXTENDED_CMD (0x04)
1632#define MPI2_PHYSDISK0_INCOMPATIBLE_REMOVEABLE_MEDIA (0x05)
1633#define MPI2_PHYSDISK0_INCOMPATIBLE_MEDIA_TYPE (0x06)
1634#define MPI2_PHYSDISK0_INCOMPATIBLE_UNKNOWN (0xFF)
1635
1636
1637#define MPI2_PHYSDISK0_ATTRIB_MEDIA_MASK (0x0C)
1638#define MPI2_PHYSDISK0_ATTRIB_SOLID_STATE_DRIVE (0x08)
1639#define MPI2_PHYSDISK0_ATTRIB_HARD_DISK_DRIVE (0x04)
1640
1641#define MPI2_PHYSDISK0_ATTRIB_PROTOCOL_MASK (0x03)
1642#define MPI2_PHYSDISK0_ATTRIB_SAS_PROTOCOL (0x02)
1643#define MPI2_PHYSDISK0_ATTRIB_SATA_PROTOCOL (0x01)
1644
1645
1646#define MPI2_PHYSDISK0_STATUS_FLAG_NOT_CERTIFIED (0x00000040)
1647#define MPI2_PHYSDISK0_STATUS_FLAG_OCE_TARGET (0x00000020)
1648#define MPI2_PHYSDISK0_STATUS_FLAG_WRITE_CACHE_ENABLED (0x00000010)
1649#define MPI2_PHYSDISK0_STATUS_FLAG_OPTIMAL_PREVIOUS (0x00000000)
1650#define MPI2_PHYSDISK0_STATUS_FLAG_NOT_OPTIMAL_PREVIOUS (0x00000008)
1651#define MPI2_PHYSDISK0_STATUS_FLAG_INACTIVE_VOLUME (0x00000004)
1652#define MPI2_PHYSDISK0_STATUS_FLAG_QUIESCED (0x00000002)
1653#define MPI2_PHYSDISK0_STATUS_FLAG_OUT_OF_SYNC (0x00000001)
1654
1655
1656
1657
1658
1659
1660
1661
1662#ifndef MPI2_RAID_PHYS_DISK1_PATH_MAX
1663#define MPI2_RAID_PHYS_DISK1_PATH_MAX (1)
1664#endif
1665
1666typedef struct _MPI2_RAIDPHYSDISK1_PATH
1667{
1668 U16 DevHandle;
1669 U16 Reserved1;
1670 U64 WWID;
1671 U64 OwnerWWID;
1672 U8 OwnerIdentifier;
1673 U8 Reserved2;
1674 U16 Flags;
1675} MPI2_RAIDPHYSDISK1_PATH, MPI2_POINTER PTR_MPI2_RAIDPHYSDISK1_PATH,
1676 Mpi2RaidPhysDisk1Path_t, MPI2_POINTER pMpi2RaidPhysDisk1Path_t;
1677
1678
1679#define MPI2_RAID_PHYSDISK1_FLAG_PRIMARY (0x0004)
1680#define MPI2_RAID_PHYSDISK1_FLAG_BROKEN (0x0002)
1681#define MPI2_RAID_PHYSDISK1_FLAG_INVALID (0x0001)
1682
1683typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_1
1684{
1685 MPI2_CONFIG_PAGE_HEADER Header;
1686 U8 NumPhysDiskPaths;
1687 U8 PhysDiskNum;
1688 U16 Reserved1;
1689 U32 Reserved2;
1690 MPI2_RAIDPHYSDISK1_PATH PhysicalDiskPath[MPI2_RAID_PHYS_DISK1_PATH_MAX];
1691} MPI2_CONFIG_PAGE_RD_PDISK_1,
1692 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_RD_PDISK_1,
1693 Mpi2RaidPhysDiskPage1_t, MPI2_POINTER pMpi2RaidPhysDiskPage1_t;
1694
1695#define MPI2_RAIDPHYSDISKPAGE1_PAGEVERSION (0x02)
1696
1697
1698
1699
1700
1701
1702
1703#define MPI2_SAS_NEG_LINK_RATE_MASK_LOGICAL (0xF0)
1704#define MPI2_SAS_NEG_LINK_RATE_SHIFT_LOGICAL (4)
1705#define MPI2_SAS_NEG_LINK_RATE_MASK_PHYSICAL (0x0F)
1706
1707#define MPI2_SAS_NEG_LINK_RATE_UNKNOWN_LINK_RATE (0x00)
1708#define MPI2_SAS_NEG_LINK_RATE_PHY_DISABLED (0x01)
1709#define MPI2_SAS_NEG_LINK_RATE_NEGOTIATION_FAILED (0x02)
1710#define MPI2_SAS_NEG_LINK_RATE_SATA_OOB_COMPLETE (0x03)
1711#define MPI2_SAS_NEG_LINK_RATE_PORT_SELECTOR (0x04)
1712#define MPI2_SAS_NEG_LINK_RATE_SMP_RESET_IN_PROGRESS (0x05)
1713#define MPI2_SAS_NEG_LINK_RATE_UNSUPPORTED_PHY (0x06)
1714#define MPI2_SAS_NEG_LINK_RATE_1_5 (0x08)
1715#define MPI2_SAS_NEG_LINK_RATE_3_0 (0x09)
1716#define MPI2_SAS_NEG_LINK_RATE_6_0 (0x0A)
1717
1718
1719
1720#define MPI2_SAS_APHYINFO_INSIDE_ZPSDS_PERSISTENT (0x00000040)
1721#define MPI2_SAS_APHYINFO_REQUESTED_INSIDE_ZPSDS (0x00000020)
1722#define MPI2_SAS_APHYINFO_BREAK_REPLY_CAPABLE (0x00000010)
1723
1724#define MPI2_SAS_APHYINFO_REASON_MASK (0x0000000F)
1725#define MPI2_SAS_APHYINFO_REASON_UNKNOWN (0x00000000)
1726#define MPI2_SAS_APHYINFO_REASON_POWER_ON (0x00000001)
1727#define MPI2_SAS_APHYINFO_REASON_HARD_RESET (0x00000002)
1728#define MPI2_SAS_APHYINFO_REASON_SMP_PHY_CONTROL (0x00000003)
1729#define MPI2_SAS_APHYINFO_REASON_LOSS_OF_SYNC (0x00000004)
1730#define MPI2_SAS_APHYINFO_REASON_MULTIPLEXING_SEQ (0x00000005)
1731#define MPI2_SAS_APHYINFO_REASON_IT_NEXUS_LOSS_TIMER (0x00000006)
1732#define MPI2_SAS_APHYINFO_REASON_BREAK_TIMEOUT (0x00000007)
1733#define MPI2_SAS_APHYINFO_REASON_PHY_TEST_STOPPED (0x00000008)
1734
1735
1736
1737#define MPI2_SAS_PHYINFO_PHY_VACANT (0x80000000)
1738
1739#define MPI2_SAS_PHYINFO_PHY_POWER_CONDITION_MASK (0x18000000)
1740#define MPI2_SAS_PHYINFO_SHIFT_PHY_POWER_CONDITION (27)
1741#define MPI2_SAS_PHYINFO_PHY_POWER_ACTIVE (0x00000000)
1742#define MPI2_SAS_PHYINFO_PHY_POWER_PARTIAL (0x08000000)
1743#define MPI2_SAS_PHYINFO_PHY_POWER_SLUMBER (0x10000000)
1744
1745#define MPI2_SAS_PHYINFO_CHANGED_REQ_INSIDE_ZPSDS (0x04000000)
1746#define MPI2_SAS_PHYINFO_INSIDE_ZPSDS_PERSISTENT (0x02000000)
1747#define MPI2_SAS_PHYINFO_REQ_INSIDE_ZPSDS (0x01000000)
1748#define MPI2_SAS_PHYINFO_ZONE_GROUP_PERSISTENT (0x00400000)
1749#define MPI2_SAS_PHYINFO_INSIDE_ZPSDS (0x00200000)
1750#define MPI2_SAS_PHYINFO_ZONING_ENABLED (0x00100000)
1751
1752#define MPI2_SAS_PHYINFO_REASON_MASK (0x000F0000)
1753#define MPI2_SAS_PHYINFO_REASON_UNKNOWN (0x00000000)
1754#define MPI2_SAS_PHYINFO_REASON_POWER_ON (0x00010000)
1755#define MPI2_SAS_PHYINFO_REASON_HARD_RESET (0x00020000)
1756#define MPI2_SAS_PHYINFO_REASON_SMP_PHY_CONTROL (0x00030000)
1757#define MPI2_SAS_PHYINFO_REASON_LOSS_OF_SYNC (0x00040000)
1758#define MPI2_SAS_PHYINFO_REASON_MULTIPLEXING_SEQ (0x00050000)
1759#define MPI2_SAS_PHYINFO_REASON_IT_NEXUS_LOSS_TIMER (0x00060000)
1760#define MPI2_SAS_PHYINFO_REASON_BREAK_TIMEOUT (0x00070000)
1761#define MPI2_SAS_PHYINFO_REASON_PHY_TEST_STOPPED (0x00080000)
1762
1763#define MPI2_SAS_PHYINFO_MULTIPLEXING_SUPPORTED (0x00008000)
1764#define MPI2_SAS_PHYINFO_SATA_PORT_ACTIVE (0x00004000)
1765#define MPI2_SAS_PHYINFO_SATA_PORT_SELECTOR_PRESENT (0x00002000)
1766#define MPI2_SAS_PHYINFO_VIRTUAL_PHY (0x00001000)
1767
1768#define MPI2_SAS_PHYINFO_MASK_PARTIAL_PATHWAY_TIME (0x00000F00)
1769#define MPI2_SAS_PHYINFO_SHIFT_PARTIAL_PATHWAY_TIME (8)
1770
1771#define MPI2_SAS_PHYINFO_MASK_ROUTING_ATTRIBUTE (0x000000F0)
1772#define MPI2_SAS_PHYINFO_DIRECT_ROUTING (0x00000000)
1773#define MPI2_SAS_PHYINFO_SUBTRACTIVE_ROUTING (0x00000010)
1774#define MPI2_SAS_PHYINFO_TABLE_ROUTING (0x00000020)
1775
1776
1777
1778#define MPI2_SAS_PRATE_MAX_RATE_MASK (0xF0)
1779#define MPI2_SAS_PRATE_MAX_RATE_NOT_PROGRAMMABLE (0x00)
1780#define MPI2_SAS_PRATE_MAX_RATE_1_5 (0x80)
1781#define MPI2_SAS_PRATE_MAX_RATE_3_0 (0x90)
1782#define MPI2_SAS_PRATE_MAX_RATE_6_0 (0xA0)
1783#define MPI2_SAS_PRATE_MIN_RATE_MASK (0x0F)
1784#define MPI2_SAS_PRATE_MIN_RATE_NOT_PROGRAMMABLE (0x00)
1785#define MPI2_SAS_PRATE_MIN_RATE_1_5 (0x08)
1786#define MPI2_SAS_PRATE_MIN_RATE_3_0 (0x09)
1787#define MPI2_SAS_PRATE_MIN_RATE_6_0 (0x0A)
1788
1789
1790
1791#define MPI2_SAS_HWRATE_MAX_RATE_MASK (0xF0)
1792#define MPI2_SAS_HWRATE_MAX_RATE_1_5 (0x80)
1793#define MPI2_SAS_HWRATE_MAX_RATE_3_0 (0x90)
1794#define MPI2_SAS_HWRATE_MAX_RATE_6_0 (0xA0)
1795#define MPI2_SAS_HWRATE_MIN_RATE_MASK (0x0F)
1796#define MPI2_SAS_HWRATE_MIN_RATE_1_5 (0x08)
1797#define MPI2_SAS_HWRATE_MIN_RATE_3_0 (0x09)
1798#define MPI2_SAS_HWRATE_MIN_RATE_6_0 (0x0A)
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808typedef struct _MPI2_SAS_IO_UNIT0_PHY_DATA
1809{
1810 U8 Port;
1811 U8 PortFlags;
1812 U8 PhyFlags;
1813 U8 NegotiatedLinkRate;
1814 U32 ControllerPhyDeviceInfo;
1815 U16 AttachedDevHandle;
1816 U16 ControllerDevHandle;
1817 U32 DiscoveryStatus;
1818 U32 Reserved;
1819} MPI2_SAS_IO_UNIT0_PHY_DATA, MPI2_POINTER PTR_MPI2_SAS_IO_UNIT0_PHY_DATA,
1820 Mpi2SasIOUnit0PhyData_t, MPI2_POINTER pMpi2SasIOUnit0PhyData_t;
1821
1822
1823
1824
1825
1826#ifndef MPI2_SAS_IOUNIT0_PHY_MAX
1827#define MPI2_SAS_IOUNIT0_PHY_MAX (1)
1828#endif
1829
1830typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_0
1831{
1832 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
1833 U32 Reserved1;
1834 U8 NumPhys;
1835 U8 Reserved2;
1836 U16 Reserved3;
1837 MPI2_SAS_IO_UNIT0_PHY_DATA PhyData[MPI2_SAS_IOUNIT0_PHY_MAX];
1838} MPI2_CONFIG_PAGE_SASIOUNIT_0,
1839 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_0,
1840 Mpi2SasIOUnitPage0_t, MPI2_POINTER pMpi2SasIOUnitPage0_t;
1841
1842#define MPI2_SASIOUNITPAGE0_PAGEVERSION (0x05)
1843
1844
1845#define MPI2_SASIOUNIT0_PORTFLAGS_DISCOVERY_IN_PROGRESS (0x08)
1846#define MPI2_SASIOUNIT0_PORTFLAGS_AUTO_PORT_CONFIG (0x01)
1847
1848
1849#define MPI2_SASIOUNIT0_PHYFLAGS_ZONING_ENABLED (0x10)
1850#define MPI2_SASIOUNIT0_PHYFLAGS_PHY_DISABLED (0x08)
1851
1852
1853
1854
1855
1856
1857#define MPI2_SASIOUNIT0_DS_MAX_ENCLOSURES_EXCEED (0x80000000)
1858#define MPI2_SASIOUNIT0_DS_MAX_EXPANDERS_EXCEED (0x40000000)
1859#define MPI2_SASIOUNIT0_DS_MAX_DEVICES_EXCEED (0x20000000)
1860#define MPI2_SASIOUNIT0_DS_MAX_TOPO_PHYS_EXCEED (0x10000000)
1861#define MPI2_SASIOUNIT0_DS_DOWNSTREAM_INITIATOR (0x08000000)
1862#define MPI2_SASIOUNIT0_DS_MULTI_SUBTRACTIVE_SUBTRACTIVE (0x00008000)
1863#define MPI2_SASIOUNIT0_DS_EXP_MULTI_SUBTRACTIVE (0x00004000)
1864#define MPI2_SASIOUNIT0_DS_MULTI_PORT_DOMAIN (0x00002000)
1865#define MPI2_SASIOUNIT0_DS_TABLE_TO_SUBTRACTIVE_LINK (0x00001000)
1866#define MPI2_SASIOUNIT0_DS_UNSUPPORTED_DEVICE (0x00000800)
1867#define MPI2_SASIOUNIT0_DS_TABLE_LINK (0x00000400)
1868#define MPI2_SASIOUNIT0_DS_SUBTRACTIVE_LINK (0x00000200)
1869#define MPI2_SASIOUNIT0_DS_SMP_CRC_ERROR (0x00000100)
1870#define MPI2_SASIOUNIT0_DS_SMP_FUNCTION_FAILED (0x00000080)
1871#define MPI2_SASIOUNIT0_DS_INDEX_NOT_EXIST (0x00000040)
1872#define MPI2_SASIOUNIT0_DS_OUT_ROUTE_ENTRIES (0x00000020)
1873#define MPI2_SASIOUNIT0_DS_SMP_TIMEOUT (0x00000010)
1874#define MPI2_SASIOUNIT0_DS_MULTIPLE_PORTS (0x00000004)
1875#define MPI2_SASIOUNIT0_DS_UNADDRESSABLE_DEVICE (0x00000002)
1876#define MPI2_SASIOUNIT0_DS_LOOP_DETECTED (0x00000001)
1877
1878
1879
1880
1881typedef struct _MPI2_SAS_IO_UNIT1_PHY_DATA
1882{
1883 U8 Port;
1884 U8 PortFlags;
1885 U8 PhyFlags;
1886 U8 MaxMinLinkRate;
1887 U32 ControllerPhyDeviceInfo;
1888 U16 MaxTargetPortConnectTime;
1889 U16 Reserved1;
1890} MPI2_SAS_IO_UNIT1_PHY_DATA, MPI2_POINTER PTR_MPI2_SAS_IO_UNIT1_PHY_DATA,
1891 Mpi2SasIOUnit1PhyData_t, MPI2_POINTER pMpi2SasIOUnit1PhyData_t;
1892
1893
1894
1895
1896
1897#ifndef MPI2_SAS_IOUNIT1_PHY_MAX
1898#define MPI2_SAS_IOUNIT1_PHY_MAX (1)
1899#endif
1900
1901typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_1
1902{
1903 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
1904 U16 ControlFlags;
1905 U16 SASNarrowMaxQueueDepth;
1906 U16 AdditionalControlFlags;
1907 U16 SASWideMaxQueueDepth;
1908 U8 NumPhys;
1909 U8 SATAMaxQDepth;
1910 U8 ReportDeviceMissingDelay;
1911 U8 IODeviceMissingDelay;
1912 MPI2_SAS_IO_UNIT1_PHY_DATA PhyData[MPI2_SAS_IOUNIT1_PHY_MAX];
1913} MPI2_CONFIG_PAGE_SASIOUNIT_1,
1914 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_1,
1915 Mpi2SasIOUnitPage1_t, MPI2_POINTER pMpi2SasIOUnitPage1_t;
1916
1917#define MPI2_SASIOUNITPAGE1_PAGEVERSION (0x09)
1918
1919
1920#define MPI2_SASIOUNIT1_CONTROL_DEVICE_SELF_TEST (0x8000)
1921#define MPI2_SASIOUNIT1_CONTROL_SATA_3_0_MAX (0x4000)
1922#define MPI2_SASIOUNIT1_CONTROL_SATA_1_5_MAX (0x2000)
1923#define MPI2_SASIOUNIT1_CONTROL_SATA_SW_PRESERVE (0x1000)
1924
1925#define MPI2_SASIOUNIT1_CONTROL_MASK_DEV_SUPPORT (0x0600)
1926#define MPI2_SASIOUNIT1_CONTROL_SHIFT_DEV_SUPPORT (9)
1927#define MPI2_SASIOUNIT1_CONTROL_DEV_SUPPORT_BOTH (0x0)
1928#define MPI2_SASIOUNIT1_CONTROL_DEV_SAS_SUPPORT (0x1)
1929#define MPI2_SASIOUNIT1_CONTROL_DEV_SATA_SUPPORT (0x2)
1930
1931#define MPI2_SASIOUNIT1_CONTROL_SATA_48BIT_LBA_REQUIRED (0x0080)
1932#define MPI2_SASIOUNIT1_CONTROL_SATA_SMART_REQUIRED (0x0040)
1933#define MPI2_SASIOUNIT1_CONTROL_SATA_NCQ_REQUIRED (0x0020)
1934#define MPI2_SASIOUNIT1_CONTROL_SATA_FUA_REQUIRED (0x0010)
1935#define MPI2_SASIOUNIT1_CONTROL_TABLE_SUBTRACTIVE_ILLEGAL (0x0008)
1936#define MPI2_SASIOUNIT1_CONTROL_SUBTRACTIVE_ILLEGAL (0x0004)
1937#define MPI2_SASIOUNIT1_CONTROL_FIRST_LVL_DISC_ONLY (0x0002)
1938#define MPI2_SASIOUNIT1_CONTROL_CLEAR_AFFILIATION (0x0001)
1939
1940
1941#define MPI2_SASIOUNIT1_ACONTROL_MULTI_PORT_DOMAIN_ILLEGAL (0x0080)
1942#define MPI2_SASIOUNIT1_ACONTROL_SATA_ASYNCHROUNOUS_NOTIFICATION (0x0040)
1943#define MPI2_SASIOUNIT1_ACONTROL_INVALID_TOPOLOGY_CORRECTION (0x0020)
1944#define MPI2_SASIOUNIT1_ACONTROL_PORT_ENABLE_ONLY_SATA_LINK_RESET (0x0010)
1945#define MPI2_SASIOUNIT1_ACONTROL_OTHER_AFFILIATION_SATA_LINK_RESET (0x0008)
1946#define MPI2_SASIOUNIT1_ACONTROL_SELF_AFFILIATION_SATA_LINK_RESET (0x0004)
1947#define MPI2_SASIOUNIT1_ACONTROL_NO_AFFILIATION_SATA_LINK_RESET (0x0002)
1948#define MPI2_SASIOUNIT1_ACONTROL_ALLOW_TABLE_TO_TABLE (0x0001)
1949
1950
1951#define MPI2_SASIOUNIT1_REPORT_MISSING_TIMEOUT_MASK (0x7F)
1952#define MPI2_SASIOUNIT1_REPORT_MISSING_UNIT_16 (0x80)
1953
1954
1955#define MPI2_SASIOUNIT1_PORT_FLAGS_AUTO_PORT_CONFIG (0x01)
1956
1957
1958#define MPI2_SASIOUNIT1_PHYFLAGS_ZONING_ENABLE (0x10)
1959#define MPI2_SASIOUNIT1_PHYFLAGS_PHY_DISABLE (0x08)
1960
1961
1962#define MPI2_SASIOUNIT1_MAX_RATE_MASK (0xF0)
1963#define MPI2_SASIOUNIT1_MAX_RATE_1_5 (0x80)
1964#define MPI2_SASIOUNIT1_MAX_RATE_3_0 (0x90)
1965#define MPI2_SASIOUNIT1_MAX_RATE_6_0 (0xA0)
1966#define MPI2_SASIOUNIT1_MIN_RATE_MASK (0x0F)
1967#define MPI2_SASIOUNIT1_MIN_RATE_1_5 (0x08)
1968#define MPI2_SASIOUNIT1_MIN_RATE_3_0 (0x09)
1969#define MPI2_SASIOUNIT1_MIN_RATE_6_0 (0x0A)
1970
1971
1972
1973
1974
1975
1976typedef struct _MPI2_SAS_IOUNIT4_SPINUP_GROUP
1977{
1978 U8 MaxTargetSpinup;
1979 U8 SpinupDelay;
1980 U8 SpinupFlags;
1981 U8 Reserved1;
1982} MPI2_SAS_IOUNIT4_SPINUP_GROUP, MPI2_POINTER PTR_MPI2_SAS_IOUNIT4_SPINUP_GROUP,
1983 Mpi2SasIOUnit4SpinupGroup_t, MPI2_POINTER pMpi2SasIOUnit4SpinupGroup_t;
1984
1985
1986#define MPI2_SASIOUNIT4_SPINUP_DISABLE_FLAG (0x01)
1987
1988
1989
1990
1991
1992#ifndef MPI2_SAS_IOUNIT4_PHY_MAX
1993#define MPI2_SAS_IOUNIT4_PHY_MAX (4)
1994#endif
1995
1996typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_4
1997{
1998 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
1999 MPI2_SAS_IOUNIT4_SPINUP_GROUP SpinupGroupParameters[4];
2000 U32 Reserved1;
2001 U32 Reserved2;
2002 U32 Reserved3;
2003 U8 BootDeviceWaitTime;
2004 U8 Reserved4;
2005 U16 Reserved5;
2006 U8 NumPhys;
2007 U8 PEInitialSpinupDelay;
2008 U8 PEReplyDelay;
2009 U8 Flags;
2010 U8 PHY[MPI2_SAS_IOUNIT4_PHY_MAX];
2011} MPI2_CONFIG_PAGE_SASIOUNIT_4,
2012 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_4,
2013 Mpi2SasIOUnitPage4_t, MPI2_POINTER pMpi2SasIOUnitPage4_t;
2014
2015#define MPI2_SASIOUNITPAGE4_PAGEVERSION (0x02)
2016
2017
2018#define MPI2_SASIOUNIT4_FLAGS_AUTO_PORTENABLE (0x01)
2019
2020
2021#define MPI2_SASIOUNIT4_PHY_SPINUP_GROUP_MASK (0x03)
2022
2023
2024
2025
2026typedef struct _MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS {
2027 U8 ControlFlags;
2028 U8 PortWidthModGroup;
2029 U16 InactivityTimerExponent;
2030 U8 SATAPartialTimeout;
2031 U8 Reserved2;
2032 U8 SATASlumberTimeout;
2033 U8 Reserved3;
2034 U8 SASPartialTimeout;
2035 U8 Reserved4;
2036 U8 SASSlumberTimeout;
2037 U8 Reserved5;
2038} MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS,
2039 MPI2_POINTER PTR_MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS,
2040 Mpi2SasIOUnit5PhyPmSettings_t, MPI2_POINTER pMpi2SasIOUnit5PhyPmSettings_t;
2041
2042
2043#define MPI2_SASIOUNIT5_CONTROL_SAS_SLUMBER_ENABLE (0x08)
2044#define MPI2_SASIOUNIT5_CONTROL_SAS_PARTIAL_ENABLE (0x04)
2045#define MPI2_SASIOUNIT5_CONTROL_SATA_SLUMBER_ENABLE (0x02)
2046#define MPI2_SASIOUNIT5_CONTROL_SATA_PARTIAL_ENABLE (0x01)
2047
2048
2049#define MPI2_SASIOUNIT5_PWMG_DISABLE (0xFF)
2050
2051
2052#define MPI2_SASIOUNIT5_ITE_MASK_SAS_SLUMBER (0x7000)
2053#define MPI2_SASIOUNIT5_ITE_SHIFT_SAS_SLUMBER (12)
2054#define MPI2_SASIOUNIT5_ITE_MASK_SAS_PARTIAL (0x0700)
2055#define MPI2_SASIOUNIT5_ITE_SHIFT_SAS_PARTIAL (8)
2056#define MPI2_SASIOUNIT5_ITE_MASK_SATA_SLUMBER (0x0070)
2057#define MPI2_SASIOUNIT5_ITE_SHIFT_SATA_SLUMBER (4)
2058#define MPI2_SASIOUNIT5_ITE_MASK_SATA_PARTIAL (0x0007)
2059#define MPI2_SASIOUNIT5_ITE_SHIFT_SATA_PARTIAL (0)
2060
2061#define MPI2_SASIOUNIT5_ITE_TEN_SECONDS (7)
2062#define MPI2_SASIOUNIT5_ITE_ONE_SECOND (6)
2063#define MPI2_SASIOUNIT5_ITE_HUNDRED_MILLISECONDS (5)
2064#define MPI2_SASIOUNIT5_ITE_TEN_MILLISECONDS (4)
2065#define MPI2_SASIOUNIT5_ITE_ONE_MILLISECOND (3)
2066#define MPI2_SASIOUNIT5_ITE_HUNDRED_MICROSECONDS (2)
2067#define MPI2_SASIOUNIT5_ITE_TEN_MICROSECONDS (1)
2068#define MPI2_SASIOUNIT5_ITE_ONE_MICROSECOND (0)
2069
2070
2071
2072
2073
2074#ifndef MPI2_SAS_IOUNIT5_PHY_MAX
2075#define MPI2_SAS_IOUNIT5_PHY_MAX (1)
2076#endif
2077
2078typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_5 {
2079 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2080 U8 NumPhys;
2081 U8 Reserved1;
2082 U16 Reserved2;
2083 U32 Reserved3;
2084 MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS SASPhyPowerManagementSettings
2085 [MPI2_SAS_IOUNIT5_PHY_MAX];
2086} MPI2_CONFIG_PAGE_SASIOUNIT_5,
2087 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_5,
2088 Mpi2SasIOUnitPage5_t, MPI2_POINTER pMpi2SasIOUnitPage5_t;
2089
2090#define MPI2_SASIOUNITPAGE5_PAGEVERSION (0x01)
2091
2092
2093
2094
2095typedef struct _MPI2_SAS_IO_UNIT6_PORT_WIDTH_MOD_GROUP_STATUS {
2096 U8 CurrentStatus;
2097 U8 CurrentModulation;
2098 U8 CurrentUtilization;
2099 U8 Reserved1;
2100 U32 Reserved2;
2101} MPI2_SAS_IO_UNIT6_PORT_WIDTH_MOD_GROUP_STATUS,
2102 MPI2_POINTER PTR_MPI2_SAS_IO_UNIT6_PORT_WIDTH_MOD_GROUP_STATUS,
2103 Mpi2SasIOUnit6PortWidthModGroupStatus_t,
2104 MPI2_POINTER pMpi2SasIOUnit6PortWidthModGroupStatus_t;
2105
2106
2107#define MPI2_SASIOUNIT6_STATUS_UNAVAILABLE (0x00)
2108#define MPI2_SASIOUNIT6_STATUS_UNCONFIGURED (0x01)
2109#define MPI2_SASIOUNIT6_STATUS_INVALID_CONFIG (0x02)
2110#define MPI2_SASIOUNIT6_STATUS_LINK_DOWN (0x03)
2111#define MPI2_SASIOUNIT6_STATUS_OBSERVATION_ONLY (0x04)
2112#define MPI2_SASIOUNIT6_STATUS_INACTIVE (0x05)
2113#define MPI2_SASIOUNIT6_STATUS_ACTIVE_IOUNIT (0x06)
2114#define MPI2_SASIOUNIT6_STATUS_ACTIVE_HOST (0x07)
2115
2116
2117#define MPI2_SASIOUNIT6_MODULATION_25_PERCENT (0x00)
2118#define MPI2_SASIOUNIT6_MODULATION_50_PERCENT (0x01)
2119#define MPI2_SASIOUNIT6_MODULATION_75_PERCENT (0x02)
2120#define MPI2_SASIOUNIT6_MODULATION_100_PERCENT (0x03)
2121
2122
2123
2124
2125
2126#ifndef MPI2_SAS_IOUNIT6_GROUP_MAX
2127#define MPI2_SAS_IOUNIT6_GROUP_MAX (1)
2128#endif
2129
2130typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_6 {
2131 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2132 U32 Reserved1;
2133 U32 Reserved2;
2134 U8 NumGroups;
2135 U8 Reserved3;
2136 U16 Reserved4;
2137 MPI2_SAS_IO_UNIT6_PORT_WIDTH_MOD_GROUP_STATUS
2138 PortWidthModulationGroupStatus[MPI2_SAS_IOUNIT6_GROUP_MAX];
2139} MPI2_CONFIG_PAGE_SASIOUNIT_6,
2140 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_6,
2141 Mpi2SasIOUnitPage6_t, MPI2_POINTER pMpi2SasIOUnitPage6_t;
2142
2143#define MPI2_SASIOUNITPAGE6_PAGEVERSION (0x00)
2144
2145
2146
2147
2148typedef struct _MPI2_SAS_IO_UNIT7_PORT_WIDTH_MOD_GROUP_SETTINGS {
2149 U8 Flags;
2150 U8 Reserved1;
2151 U16 Reserved2;
2152 U8 Threshold75Pct;
2153 U8 Threshold50Pct;
2154 U8 Threshold25Pct;
2155 U8 Reserved3;
2156} MPI2_SAS_IO_UNIT7_PORT_WIDTH_MOD_GROUP_SETTINGS,
2157 MPI2_POINTER PTR_MPI2_SAS_IO_UNIT7_PORT_WIDTH_MOD_GROUP_SETTINGS,
2158 Mpi2SasIOUnit7PortWidthModGroupSettings_t,
2159 MPI2_POINTER pMpi2SasIOUnit7PortWidthModGroupSettings_t;
2160
2161
2162#define MPI2_SASIOUNIT7_FLAGS_ENABLE_PORT_WIDTH_MODULATION (0x01)
2163
2164
2165
2166
2167
2168
2169#ifndef MPI2_SAS_IOUNIT7_GROUP_MAX
2170#define MPI2_SAS_IOUNIT7_GROUP_MAX (1)
2171#endif
2172
2173typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_7 {
2174 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2175 U8 SamplingInterval;
2176 U8 WindowLength;
2177 U16 Reserved1;
2178 U32 Reserved2;
2179 U32 Reserved3;
2180 U8 NumGroups;
2181 U8 Reserved4;
2182 U16 Reserved5;
2183 MPI2_SAS_IO_UNIT7_PORT_WIDTH_MOD_GROUP_SETTINGS
2184 PortWidthModulationGroupSettings[MPI2_SAS_IOUNIT7_GROUP_MAX];
2185} MPI2_CONFIG_PAGE_SASIOUNIT_7,
2186 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_7,
2187 Mpi2SasIOUnitPage7_t, MPI2_POINTER pMpi2SasIOUnitPage7_t;
2188
2189#define MPI2_SASIOUNITPAGE7_PAGEVERSION (0x00)
2190
2191
2192
2193
2194typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_8 {
2195 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2196 U32 Reserved1;
2197 U32 PowerManagementCapabilities;
2198 U32 Reserved2;
2199} MPI2_CONFIG_PAGE_SASIOUNIT_8,
2200 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_8,
2201 Mpi2SasIOUnitPage8_t, MPI2_POINTER pMpi2SasIOUnitPage8_t;
2202
2203#define MPI2_SASIOUNITPAGE8_PAGEVERSION (0x00)
2204
2205
2206#define MPI2_SASIOUNIT8_PM_HOST_PORT_WIDTH_MOD (0x00001000)
2207#define MPI2_SASIOUNIT8_PM_HOST_SAS_SLUMBER_MODE (0x00000800)
2208#define MPI2_SASIOUNIT8_PM_HOST_SAS_PARTIAL_MODE (0x00000400)
2209#define MPI2_SASIOUNIT8_PM_HOST_SATA_SLUMBER_MODE (0x00000200)
2210#define MPI2_SASIOUNIT8_PM_HOST_SATA_PARTIAL_MODE (0x00000100)
2211#define MPI2_SASIOUNIT8_PM_IOUNIT_PORT_WIDTH_MOD (0x00000010)
2212#define MPI2_SASIOUNIT8_PM_IOUNIT_SAS_SLUMBER_MODE (0x00000008)
2213#define MPI2_SASIOUNIT8_PM_IOUNIT_SAS_PARTIAL_MODE (0x00000004)
2214#define MPI2_SASIOUNIT8_PM_IOUNIT_SATA_SLUMBER_MODE (0x00000002)
2215#define MPI2_SASIOUNIT8_PM_IOUNIT_SATA_PARTIAL_MODE (0x00000001)
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226typedef struct _MPI2_CONFIG_PAGE_EXPANDER_0
2227{
2228 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2229 U8 PhysicalPort;
2230 U8 ReportGenLength;
2231 U16 EnclosureHandle;
2232 U64 SASAddress;
2233 U32 DiscoveryStatus;
2234 U16 DevHandle;
2235 U16 ParentDevHandle;
2236 U16 ExpanderChangeCount;
2237 U16 ExpanderRouteIndexes;
2238 U8 NumPhys;
2239 U8 SASLevel;
2240 U16 Flags;
2241 U16 STPBusInactivityTimeLimit;
2242 U16 STPMaxConnectTimeLimit;
2243 U16 STP_SMP_NexusLossTime;
2244 U16 MaxNumRoutedSasAddresses;
2245 U64 ActiveZoneManagerSASAddress;
2246 U16 ZoneLockInactivityLimit;
2247 U16 Reserved1;
2248 U8 TimeToReducedFunc;
2249 U8 InitialTimeToReducedFunc;
2250 U8 MaxReducedFuncTime;
2251 U8 Reserved2;
2252} MPI2_CONFIG_PAGE_EXPANDER_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_EXPANDER_0,
2253 Mpi2ExpanderPage0_t, MPI2_POINTER pMpi2ExpanderPage0_t;
2254
2255#define MPI2_SASEXPANDER0_PAGEVERSION (0x06)
2256
2257
2258#define MPI2_SAS_EXPANDER0_DS_MAX_ENCLOSURES_EXCEED (0x80000000)
2259#define MPI2_SAS_EXPANDER0_DS_MAX_EXPANDERS_EXCEED (0x40000000)
2260#define MPI2_SAS_EXPANDER0_DS_MAX_DEVICES_EXCEED (0x20000000)
2261#define MPI2_SAS_EXPANDER0_DS_MAX_TOPO_PHYS_EXCEED (0x10000000)
2262#define MPI2_SAS_EXPANDER0_DS_DOWNSTREAM_INITIATOR (0x08000000)
2263#define MPI2_SAS_EXPANDER0_DS_MULTI_SUBTRACTIVE_SUBTRACTIVE (0x00008000)
2264#define MPI2_SAS_EXPANDER0_DS_EXP_MULTI_SUBTRACTIVE (0x00004000)
2265#define MPI2_SAS_EXPANDER0_DS_MULTI_PORT_DOMAIN (0x00002000)
2266#define MPI2_SAS_EXPANDER0_DS_TABLE_TO_SUBTRACTIVE_LINK (0x00001000)
2267#define MPI2_SAS_EXPANDER0_DS_UNSUPPORTED_DEVICE (0x00000800)
2268#define MPI2_SAS_EXPANDER0_DS_TABLE_LINK (0x00000400)
2269#define MPI2_SAS_EXPANDER0_DS_SUBTRACTIVE_LINK (0x00000200)
2270#define MPI2_SAS_EXPANDER0_DS_SMP_CRC_ERROR (0x00000100)
2271#define MPI2_SAS_EXPANDER0_DS_SMP_FUNCTION_FAILED (0x00000080)
2272#define MPI2_SAS_EXPANDER0_DS_INDEX_NOT_EXIST (0x00000040)
2273#define MPI2_SAS_EXPANDER0_DS_OUT_ROUTE_ENTRIES (0x00000020)
2274#define MPI2_SAS_EXPANDER0_DS_SMP_TIMEOUT (0x00000010)
2275#define MPI2_SAS_EXPANDER0_DS_MULTIPLE_PORTS (0x00000004)
2276#define MPI2_SAS_EXPANDER0_DS_UNADDRESSABLE_DEVICE (0x00000002)
2277#define MPI2_SAS_EXPANDER0_DS_LOOP_DETECTED (0x00000001)
2278
2279
2280#define MPI2_SAS_EXPANDER0_FLAGS_REDUCED_FUNCTIONALITY (0x2000)
2281#define MPI2_SAS_EXPANDER0_FLAGS_ZONE_LOCKED (0x1000)
2282#define MPI2_SAS_EXPANDER0_FLAGS_SUPPORTED_PHYSICAL_PRES (0x0800)
2283#define MPI2_SAS_EXPANDER0_FLAGS_ASSERTED_PHYSICAL_PRES (0x0400)
2284#define MPI2_SAS_EXPANDER0_FLAGS_ZONING_SUPPORT (0x0200)
2285#define MPI2_SAS_EXPANDER0_FLAGS_ENABLED_ZONING (0x0100)
2286#define MPI2_SAS_EXPANDER0_FLAGS_TABLE_TO_TABLE_SUPPORT (0x0080)
2287#define MPI2_SAS_EXPANDER0_FLAGS_CONNECTOR_END_DEVICE (0x0010)
2288#define MPI2_SAS_EXPANDER0_FLAGS_OTHERS_CONFIG (0x0004)
2289#define MPI2_SAS_EXPANDER0_FLAGS_CONFIG_IN_PROGRESS (0x0002)
2290#define MPI2_SAS_EXPANDER0_FLAGS_ROUTE_TABLE_CONFIG (0x0001)
2291
2292
2293
2294
2295typedef struct _MPI2_CONFIG_PAGE_EXPANDER_1
2296{
2297 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2298 U8 PhysicalPort;
2299 U8 Reserved1;
2300 U16 Reserved2;
2301 U8 NumPhys;
2302 U8 Phy;
2303 U16 NumTableEntriesProgrammed;
2304 U8 ProgrammedLinkRate;
2305 U8 HwLinkRate;
2306 U16 AttachedDevHandle;
2307 U32 PhyInfo;
2308 U32 AttachedDeviceInfo;
2309 U16 ExpanderDevHandle;
2310 U8 ChangeCount;
2311 U8 NegotiatedLinkRate;
2312 U8 PhyIdentifier;
2313 U8 AttachedPhyIdentifier;
2314 U8 Reserved3;
2315 U8 DiscoveryInfo;
2316 U32 AttachedPhyInfo;
2317 U8 ZoneGroup;
2318 U8 SelfConfigStatus;
2319 U16 Reserved4;
2320} MPI2_CONFIG_PAGE_EXPANDER_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_EXPANDER_1,
2321 Mpi2ExpanderPage1_t, MPI2_POINTER pMpi2ExpanderPage1_t;
2322
2323#define MPI2_SASEXPANDER1_PAGEVERSION (0x02)
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336#define MPI2_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED (0x04)
2337#define MPI2_SAS_EXPANDER1_DISCINFO_LINK_STATUS_CHANGE (0x02)
2338#define MPI2_SAS_EXPANDER1_DISCINFO_NO_ROUTING_ENTRIES (0x01)
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348typedef struct _MPI2_CONFIG_PAGE_SAS_DEV_0
2349{
2350 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2351 U16 Slot;
2352 U16 EnclosureHandle;
2353 U64 SASAddress;
2354 U16 ParentDevHandle;
2355 U8 PhyNum;
2356 U8 AccessStatus;
2357 U16 DevHandle;
2358 U8 AttachedPhyIdentifier;
2359 U8 ZoneGroup;
2360 U32 DeviceInfo;
2361 U16 Flags;
2362 U8 PhysicalPort;
2363 U8 MaxPortConnections;
2364 U64 DeviceName;
2365 U8 PortGroups;
2366 U8 DmaGroup;
2367 U8 ControlGroup;
2368 U8 Reserved1;
2369 U32 Reserved2;
2370 U32 Reserved3;
2371} MPI2_CONFIG_PAGE_SAS_DEV_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_DEV_0,
2372 Mpi2SasDevicePage0_t, MPI2_POINTER pMpi2SasDevicePage0_t;
2373
2374#define MPI2_SASDEVICE0_PAGEVERSION (0x08)
2375
2376
2377#define MPI2_SAS_DEVICE0_ASTATUS_NO_ERRORS (0x00)
2378#define MPI2_SAS_DEVICE0_ASTATUS_SATA_INIT_FAILED (0x01)
2379#define MPI2_SAS_DEVICE0_ASTATUS_SATA_CAPABILITY_FAILED (0x02)
2380#define MPI2_SAS_DEVICE0_ASTATUS_SATA_AFFILIATION_CONFLICT (0x03)
2381#define MPI2_SAS_DEVICE0_ASTATUS_SATA_NEEDS_INITIALIZATION (0x04)
2382#define MPI2_SAS_DEVICE0_ASTATUS_ROUTE_NOT_ADDRESSABLE (0x05)
2383#define MPI2_SAS_DEVICE0_ASTATUS_SMP_ERROR_NOT_ADDRESSABLE (0x06)
2384#define MPI2_SAS_DEVICE0_ASTATUS_DEVICE_BLOCKED (0x07)
2385
2386#define MPI2_SAS_DEVICE0_ASTATUS_SIF_UNKNOWN (0x10)
2387#define MPI2_SAS_DEVICE0_ASTATUS_SIF_AFFILIATION_CONFLICT (0x11)
2388#define MPI2_SAS_DEVICE0_ASTATUS_SIF_DIAG (0x12)
2389#define MPI2_SAS_DEVICE0_ASTATUS_SIF_IDENTIFICATION (0x13)
2390#define MPI2_SAS_DEVICE0_ASTATUS_SIF_CHECK_POWER (0x14)
2391#define MPI2_SAS_DEVICE0_ASTATUS_SIF_PIO_SN (0x15)
2392#define MPI2_SAS_DEVICE0_ASTATUS_SIF_MDMA_SN (0x16)
2393#define MPI2_SAS_DEVICE0_ASTATUS_SIF_UDMA_SN (0x17)
2394#define MPI2_SAS_DEVICE0_ASTATUS_SIF_ZONING_VIOLATION (0x18)
2395#define MPI2_SAS_DEVICE0_ASTATUS_SIF_NOT_ADDRESSABLE (0x19)
2396#define MPI2_SAS_DEVICE0_ASTATUS_SIF_MAX (0x1F)
2397
2398
2399
2400
2401#define MPI2_SAS_DEVICE0_FLAGS_UNAUTHORIZED_DEVICE (0x8000)
2402#define MPI2_SAS_DEVICE0_FLAGS_SLUMBER_PM_CAPABLE (0x1000)
2403#define MPI2_SAS_DEVICE0_FLAGS_PARTIAL_PM_CAPABLE (0x0800)
2404#define MPI2_SAS_DEVICE0_FLAGS_SATA_ASYNCHRONOUS_NOTIFY (0x0400)
2405#define MPI2_SAS_DEVICE0_FLAGS_SATA_SW_PRESERVE (0x0200)
2406#define MPI2_SAS_DEVICE0_FLAGS_UNSUPPORTED_DEVICE (0x0100)
2407#define MPI2_SAS_DEVICE0_FLAGS_SATA_48BIT_LBA_SUPPORTED (0x0080)
2408#define MPI2_SAS_DEVICE0_FLAGS_SATA_SMART_SUPPORTED (0x0040)
2409#define MPI2_SAS_DEVICE0_FLAGS_SATA_NCQ_SUPPORTED (0x0020)
2410#define MPI2_SAS_DEVICE0_FLAGS_SATA_FUA_SUPPORTED (0x0010)
2411#define MPI2_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH (0x0008)
2412#define MPI2_SAS_DEVICE0_FLAGS_DEVICE_PRESENT (0x0001)
2413
2414
2415
2416
2417typedef struct _MPI2_CONFIG_PAGE_SAS_DEV_1
2418{
2419 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2420 U32 Reserved1;
2421 U64 SASAddress;
2422 U32 Reserved2;
2423 U16 DevHandle;
2424 U16 Reserved3;
2425 U8 InitialRegDeviceFIS[20];
2426} MPI2_CONFIG_PAGE_SAS_DEV_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_DEV_1,
2427 Mpi2SasDevicePage1_t, MPI2_POINTER pMpi2SasDevicePage1_t;
2428
2429#define MPI2_SASDEVICE1_PAGEVERSION (0x01)
2430
2431
2432
2433
2434
2435
2436
2437
2438typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_0
2439{
2440 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2441 U16 OwnerDevHandle;
2442 U16 Reserved1;
2443 U16 AttachedDevHandle;
2444 U8 AttachedPhyIdentifier;
2445 U8 Reserved2;
2446 U32 AttachedPhyInfo;
2447 U8 ProgrammedLinkRate;
2448 U8 HwLinkRate;
2449 U8 ChangeCount;
2450 U8 Flags;
2451 U32 PhyInfo;
2452 U8 NegotiatedLinkRate;
2453 U8 Reserved3;
2454 U16 Reserved4;
2455} MPI2_CONFIG_PAGE_SAS_PHY_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PHY_0,
2456 Mpi2SasPhyPage0_t, MPI2_POINTER pMpi2SasPhyPage0_t;
2457
2458#define MPI2_SASPHY0_PAGEVERSION (0x03)
2459
2460
2461
2462
2463
2464
2465
2466
2467#define MPI2_SAS_PHY0_FLAGS_SGPIO_DIRECT_ATTACH_ENC (0x01)
2468
2469
2470
2471
2472
2473
2474
2475
2476typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_1
2477{
2478 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2479 U32 Reserved1;
2480 U32 InvalidDwordCount;
2481 U32 RunningDisparityErrorCount;
2482 U32 LossDwordSynchCount;
2483 U32 PhyResetProblemCount;
2484} MPI2_CONFIG_PAGE_SAS_PHY_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PHY_1,
2485 Mpi2SasPhyPage1_t, MPI2_POINTER pMpi2SasPhyPage1_t;
2486
2487#define MPI2_SASPHY1_PAGEVERSION (0x01)
2488
2489
2490
2491
2492typedef struct _MPI2_SASPHY2_PHY_EVENT {
2493 U8 PhyEventCode;
2494 U8 Reserved1;
2495 U16 Reserved2;
2496 U32 PhyEventInfo;
2497} MPI2_SASPHY2_PHY_EVENT, MPI2_POINTER PTR_MPI2_SASPHY2_PHY_EVENT,
2498 Mpi2SasPhy2PhyEvent_t, MPI2_POINTER pMpi2SasPhy2PhyEvent_t;
2499
2500
2501
2502
2503
2504
2505
2506
2507#ifndef MPI2_SASPHY2_PHY_EVENT_MAX
2508#define MPI2_SASPHY2_PHY_EVENT_MAX (1)
2509#endif
2510
2511typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_2 {
2512 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2513 U32 Reserved1;
2514 U8 NumPhyEvents;
2515 U8 Reserved2;
2516 U16 Reserved3;
2517 MPI2_SASPHY2_PHY_EVENT PhyEvent[MPI2_SASPHY2_PHY_EVENT_MAX];
2518
2519} MPI2_CONFIG_PAGE_SAS_PHY_2, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PHY_2,
2520 Mpi2SasPhyPage2_t, MPI2_POINTER pMpi2SasPhyPage2_t;
2521
2522#define MPI2_SASPHY2_PAGEVERSION (0x00)
2523
2524
2525
2526
2527typedef struct _MPI2_SASPHY3_PHY_EVENT_CONFIG {
2528 U8 PhyEventCode;
2529 U8 Reserved1;
2530 U16 Reserved2;
2531 U8 CounterType;
2532 U8 ThresholdWindow;
2533 U8 TimeUnits;
2534 U8 Reserved3;
2535 U32 EventThreshold;
2536 U16 ThresholdFlags;
2537 U16 Reserved4;
2538} MPI2_SASPHY3_PHY_EVENT_CONFIG, MPI2_POINTER PTR_MPI2_SASPHY3_PHY_EVENT_CONFIG,
2539 Mpi2SasPhy3PhyEventConfig_t, MPI2_POINTER pMpi2SasPhy3PhyEventConfig_t;
2540
2541
2542#define MPI2_SASPHY3_EVENT_CODE_NO_EVENT (0x00)
2543#define MPI2_SASPHY3_EVENT_CODE_INVALID_DWORD (0x01)
2544#define MPI2_SASPHY3_EVENT_CODE_RUNNING_DISPARITY_ERROR (0x02)
2545#define MPI2_SASPHY3_EVENT_CODE_LOSS_DWORD_SYNC (0x03)
2546#define MPI2_SASPHY3_EVENT_CODE_PHY_RESET_PROBLEM (0x04)
2547#define MPI2_SASPHY3_EVENT_CODE_ELASTICITY_BUF_OVERFLOW (0x05)
2548#define MPI2_SASPHY3_EVENT_CODE_RX_ERROR (0x06)
2549#define MPI2_SASPHY3_EVENT_CODE_RX_ADDR_FRAME_ERROR (0x20)
2550#define MPI2_SASPHY3_EVENT_CODE_TX_AC_OPEN_REJECT (0x21)
2551#define MPI2_SASPHY3_EVENT_CODE_RX_AC_OPEN_REJECT (0x22)
2552#define MPI2_SASPHY3_EVENT_CODE_TX_RC_OPEN_REJECT (0x23)
2553#define MPI2_SASPHY3_EVENT_CODE_RX_RC_OPEN_REJECT (0x24)
2554#define MPI2_SASPHY3_EVENT_CODE_RX_AIP_PARTIAL_WAITING_ON (0x25)
2555#define MPI2_SASPHY3_EVENT_CODE_RX_AIP_CONNECT_WAITING_ON (0x26)
2556#define MPI2_SASPHY3_EVENT_CODE_TX_BREAK (0x27)
2557#define MPI2_SASPHY3_EVENT_CODE_RX_BREAK (0x28)
2558#define MPI2_SASPHY3_EVENT_CODE_BREAK_TIMEOUT (0x29)
2559#define MPI2_SASPHY3_EVENT_CODE_CONNECTION (0x2A)
2560#define MPI2_SASPHY3_EVENT_CODE_PEAKTX_PATHWAY_BLOCKED (0x2B)
2561#define MPI2_SASPHY3_EVENT_CODE_PEAKTX_ARB_WAIT_TIME (0x2C)
2562#define MPI2_SASPHY3_EVENT_CODE_PEAK_ARB_WAIT_TIME (0x2D)
2563#define MPI2_SASPHY3_EVENT_CODE_PEAK_CONNECT_TIME (0x2E)
2564#define MPI2_SASPHY3_EVENT_CODE_TX_SSP_FRAMES (0x40)
2565#define MPI2_SASPHY3_EVENT_CODE_RX_SSP_FRAMES (0x41)
2566#define MPI2_SASPHY3_EVENT_CODE_TX_SSP_ERROR_FRAMES (0x42)
2567#define MPI2_SASPHY3_EVENT_CODE_RX_SSP_ERROR_FRAMES (0x43)
2568#define MPI2_SASPHY3_EVENT_CODE_TX_CREDIT_BLOCKED (0x44)
2569#define MPI2_SASPHY3_EVENT_CODE_RX_CREDIT_BLOCKED (0x45)
2570#define MPI2_SASPHY3_EVENT_CODE_TX_SATA_FRAMES (0x50)
2571#define MPI2_SASPHY3_EVENT_CODE_RX_SATA_FRAMES (0x51)
2572#define MPI2_SASPHY3_EVENT_CODE_SATA_OVERFLOW (0x52)
2573#define MPI2_SASPHY3_EVENT_CODE_TX_SMP_FRAMES (0x60)
2574#define MPI2_SASPHY3_EVENT_CODE_RX_SMP_FRAMES (0x61)
2575#define MPI2_SASPHY3_EVENT_CODE_RX_SMP_ERROR_FRAMES (0x63)
2576#define MPI2_SASPHY3_EVENT_CODE_HOTPLUG_TIMEOUT (0xD0)
2577#define MPI2_SASPHY3_EVENT_CODE_MISALIGNED_MUX_PRIMITIVE (0xD1)
2578#define MPI2_SASPHY3_EVENT_CODE_RX_AIP (0xD2)
2579
2580
2581#define MPI2_SASPHY3_COUNTER_TYPE_WRAPPING (0x00)
2582#define MPI2_SASPHY3_COUNTER_TYPE_SATURATING (0x01)
2583#define MPI2_SASPHY3_COUNTER_TYPE_PEAK_VALUE (0x02)
2584
2585
2586#define MPI2_SASPHY3_TIME_UNITS_10_MICROSECONDS (0x00)
2587#define MPI2_SASPHY3_TIME_UNITS_100_MICROSECONDS (0x01)
2588#define MPI2_SASPHY3_TIME_UNITS_1_MILLISECOND (0x02)
2589#define MPI2_SASPHY3_TIME_UNITS_10_MILLISECONDS (0x03)
2590
2591
2592#define MPI2_SASPHY3_TFLAGS_PHY_RESET (0x0002)
2593#define MPI2_SASPHY3_TFLAGS_EVENT_NOTIFY (0x0001)
2594
2595
2596
2597
2598
2599#ifndef MPI2_SASPHY3_PHY_EVENT_MAX
2600#define MPI2_SASPHY3_PHY_EVENT_MAX (1)
2601#endif
2602
2603typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_3 {
2604 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2605 U32 Reserved1;
2606 U8 NumPhyEvents;
2607 U8 Reserved2;
2608 U16 Reserved3;
2609 MPI2_SASPHY3_PHY_EVENT_CONFIG PhyEventConfig
2610 [MPI2_SASPHY3_PHY_EVENT_MAX];
2611} MPI2_CONFIG_PAGE_SAS_PHY_3, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PHY_3,
2612 Mpi2SasPhyPage3_t, MPI2_POINTER pMpi2SasPhyPage3_t;
2613
2614#define MPI2_SASPHY3_PAGEVERSION (0x00)
2615
2616
2617
2618
2619typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_4 {
2620 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2621 U16 Reserved1;
2622 U8 Reserved2;
2623 U8 Flags;
2624 U8 InitialFrame[28];
2625} MPI2_CONFIG_PAGE_SAS_PHY_4, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PHY_4,
2626 Mpi2SasPhyPage4_t, MPI2_POINTER pMpi2SasPhyPage4_t;
2627
2628#define MPI2_SASPHY4_PAGEVERSION (0x00)
2629
2630
2631#define MPI2_SASPHY4_FLAGS_FRAME_VALID (0x02)
2632#define MPI2_SASPHY4_FLAGS_SATA_FRAME (0x01)
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643typedef struct _MPI2_CONFIG_PAGE_SAS_PORT_0
2644{
2645 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2646 U8 PortNumber;
2647 U8 PhysicalPort;
2648 U8 PortWidth;
2649 U8 PhysicalPortWidth;
2650 U8 ZoneGroup;
2651 U8 Reserved1;
2652 U16 Reserved2;
2653 U64 SASAddress;
2654 U32 DeviceInfo;
2655 U32 Reserved3;
2656 U32 Reserved4;
2657} MPI2_CONFIG_PAGE_SAS_PORT_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PORT_0,
2658 Mpi2SasPortPage0_t, MPI2_POINTER pMpi2SasPortPage0_t;
2659
2660#define MPI2_SASPORT0_PAGEVERSION (0x00)
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0
2672{
2673 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2674 U32 Reserved1;
2675 U64 EnclosureLogicalID;
2676 U16 Flags;
2677 U16 EnclosureHandle;
2678 U16 NumSlots;
2679 U16 StartSlot;
2680 U16 Reserved2;
2681 U16 SEPDevHandle;
2682 U32 Reserved3;
2683 U32 Reserved4;
2684} MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0,
2685 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0,
2686 Mpi2SasEnclosurePage0_t, MPI2_POINTER pMpi2SasEnclosurePage0_t;
2687
2688#define MPI2_SASENCLOSURE0_PAGEVERSION (0x03)
2689
2690
2691#define MPI2_SAS_ENCLS0_FLAGS_MNG_MASK (0x000F)
2692#define MPI2_SAS_ENCLS0_FLAGS_MNG_UNKNOWN (0x0000)
2693#define MPI2_SAS_ENCLS0_FLAGS_MNG_IOC_SES (0x0001)
2694#define MPI2_SAS_ENCLS0_FLAGS_MNG_IOC_SGPIO (0x0002)
2695#define MPI2_SAS_ENCLS0_FLAGS_MNG_EXP_SGPIO (0x0003)
2696#define MPI2_SAS_ENCLS0_FLAGS_MNG_SES_ENCLOSURE (0x0004)
2697#define MPI2_SAS_ENCLS0_FLAGS_MNG_IOC_GPIO (0x0005)
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710#ifndef MPI2_LOG_0_NUM_LOG_ENTRIES
2711#define MPI2_LOG_0_NUM_LOG_ENTRIES (1)
2712#endif
2713
2714#define MPI2_LOG_0_LOG_DATA_LENGTH (0x1C)
2715
2716typedef struct _MPI2_LOG_0_ENTRY
2717{
2718 U64 TimeStamp;
2719 U32 Reserved1;
2720 U16 LogSequence;
2721 U16 LogEntryQualifier;
2722 U8 VP_ID;
2723 U8 VF_ID;
2724 U16 Reserved2;
2725 U8 LogData[MPI2_LOG_0_LOG_DATA_LENGTH];
2726} MPI2_LOG_0_ENTRY, MPI2_POINTER PTR_MPI2_LOG_0_ENTRY,
2727 Mpi2Log0Entry_t, MPI2_POINTER pMpi2Log0Entry_t;
2728
2729
2730#define MPI2_LOG_0_ENTRY_QUAL_ENTRY_UNUSED (0x0000)
2731#define MPI2_LOG_0_ENTRY_QUAL_POWER_ON_RESET (0x0001)
2732#define MPI2_LOG_0_ENTRY_QUAL_TIMESTAMP_UPDATE (0x0002)
2733#define MPI2_LOG_0_ENTRY_QUAL_MIN_IMPLEMENT_SPEC (0x8000)
2734#define MPI2_LOG_0_ENTRY_QUAL_MAX_IMPLEMENT_SPEC (0xFFFF)
2735
2736typedef struct _MPI2_CONFIG_PAGE_LOG_0
2737{
2738 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2739 U32 Reserved1;
2740 U32 Reserved2;
2741 U16 NumLogEntries;
2742 U16 Reserved3;
2743 MPI2_LOG_0_ENTRY LogEntry[MPI2_LOG_0_NUM_LOG_ENTRIES];
2744} MPI2_CONFIG_PAGE_LOG_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_LOG_0,
2745 Mpi2LogPage0_t, MPI2_POINTER pMpi2LogPage0_t;
2746
2747#define MPI2_LOG_0_PAGEVERSION (0x02)
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760#ifndef MPI2_RAIDCONFIG0_MAX_ELEMENTS
2761#define MPI2_RAIDCONFIG0_MAX_ELEMENTS (1)
2762#endif
2763
2764typedef struct _MPI2_RAIDCONFIG0_CONFIG_ELEMENT
2765{
2766 U16 ElementFlags;
2767 U16 VolDevHandle;
2768 U8 HotSparePool;
2769 U8 PhysDiskNum;
2770 U16 PhysDiskDevHandle;
2771} MPI2_RAIDCONFIG0_CONFIG_ELEMENT,
2772 MPI2_POINTER PTR_MPI2_RAIDCONFIG0_CONFIG_ELEMENT,
2773 Mpi2RaidConfig0ConfigElement_t, MPI2_POINTER pMpi2RaidConfig0ConfigElement_t;
2774
2775
2776#define MPI2_RAIDCONFIG0_EFLAGS_MASK_ELEMENT_TYPE (0x000F)
2777#define MPI2_RAIDCONFIG0_EFLAGS_VOLUME_ELEMENT (0x0000)
2778#define MPI2_RAIDCONFIG0_EFLAGS_VOL_PHYS_DISK_ELEMENT (0x0001)
2779#define MPI2_RAIDCONFIG0_EFLAGS_HOT_SPARE_ELEMENT (0x0002)
2780#define MPI2_RAIDCONFIG0_EFLAGS_OCE_ELEMENT (0x0003)
2781
2782
2783typedef struct _MPI2_CONFIG_PAGE_RAID_CONFIGURATION_0
2784{
2785 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2786 U8 NumHotSpares;
2787 U8 NumPhysDisks;
2788 U8 NumVolumes;
2789 U8 ConfigNum;
2790 U32 Flags;
2791 U8 ConfigGUID[24];
2792 U32 Reserved1;
2793 U8 NumElements;
2794 U8 Reserved2;
2795 U16 Reserved3;
2796 MPI2_RAIDCONFIG0_CONFIG_ELEMENT ConfigElement[MPI2_RAIDCONFIG0_MAX_ELEMENTS];
2797} MPI2_CONFIG_PAGE_RAID_CONFIGURATION_0,
2798 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_RAID_CONFIGURATION_0,
2799 Mpi2RaidConfigurationPage0_t, MPI2_POINTER pMpi2RaidConfigurationPage0_t;
2800
2801#define MPI2_RAIDCONFIG0_PAGEVERSION (0x00)
2802
2803
2804#define MPI2_RAIDCONFIG0_FLAG_FOREIGN_CONFIG (0x00000001)
2805
2806
2807
2808
2809
2810
2811
2812
2813typedef struct _MPI2_CONFIG_PAGE_DRIVER_MAP0_ENTRY
2814{
2815 U64 PhysicalIdentifier;
2816 U16 MappingInformation;
2817 U16 DeviceIndex;
2818 U32 PhysicalBitsMapping;
2819 U32 Reserved1;
2820} MPI2_CONFIG_PAGE_DRIVER_MAP0_ENTRY,
2821 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_DRIVER_MAP0_ENTRY,
2822 Mpi2DriverMap0Entry_t, MPI2_POINTER pMpi2DriverMap0Entry_t;
2823
2824typedef struct _MPI2_CONFIG_PAGE_DRIVER_MAPPING_0
2825{
2826 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2827 MPI2_CONFIG_PAGE_DRIVER_MAP0_ENTRY Entry;
2828} MPI2_CONFIG_PAGE_DRIVER_MAPPING_0,
2829 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_DRIVER_MAPPING_0,
2830 Mpi2DriverMappingPage0_t, MPI2_POINTER pMpi2DriverMappingPage0_t;
2831
2832#define MPI2_DRIVERMAPPING0_PAGEVERSION (0x00)
2833
2834
2835#define MPI2_DRVMAP0_MAPINFO_SLOT_MASK (0x07F0)
2836#define MPI2_DRVMAP0_MAPINFO_SLOT_SHIFT (4)
2837#define MPI2_DRVMAP0_MAPINFO_MISSING_MASK (0x000F)
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847typedef union _MPI2_ETHERNET_IP_ADDR {
2848 U32 IPv4Addr;
2849 U32 IPv6Addr[4];
2850} MPI2_ETHERNET_IP_ADDR, MPI2_POINTER PTR_MPI2_ETHERNET_IP_ADDR,
2851 Mpi2EthernetIpAddr_t, MPI2_POINTER pMpi2EthernetIpAddr_t;
2852
2853#define MPI2_ETHERNET_HOST_NAME_LENGTH (32)
2854
2855typedef struct _MPI2_CONFIG_PAGE_ETHERNET_0 {
2856 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2857 U8 NumInterfaces;
2858 U8 Reserved0;
2859 U16 Reserved1;
2860 U32 Status;
2861 U8 MediaState;
2862 U8 Reserved2;
2863 U16 Reserved3;
2864 U8 MacAddress[6];
2865 U8 Reserved4;
2866 U8 Reserved5;
2867 MPI2_ETHERNET_IP_ADDR IpAddress;
2868 MPI2_ETHERNET_IP_ADDR SubnetMask;
2869 MPI2_ETHERNET_IP_ADDR GatewayIpAddress;
2870 MPI2_ETHERNET_IP_ADDR DNS1IpAddress;
2871 MPI2_ETHERNET_IP_ADDR DNS2IpAddress;
2872 MPI2_ETHERNET_IP_ADDR DhcpIpAddress;
2873 U8 HostName
2874 [MPI2_ETHERNET_HOST_NAME_LENGTH];
2875} MPI2_CONFIG_PAGE_ETHERNET_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_ETHERNET_0,
2876 Mpi2EthernetPage0_t, MPI2_POINTER pMpi2EthernetPage0_t;
2877
2878#define MPI2_ETHERNETPAGE0_PAGEVERSION (0x00)
2879
2880
2881#define MPI2_ETHPG0_STATUS_IPV6_CAPABLE (0x80000000)
2882#define MPI2_ETHPG0_STATUS_IPV4_CAPABLE (0x40000000)
2883#define MPI2_ETHPG0_STATUS_CONSOLE_CONNECTED (0x20000000)
2884#define MPI2_ETHPG0_STATUS_DEFAULT_IF (0x00000100)
2885#define MPI2_ETHPG0_STATUS_FW_DWNLD_ENABLED (0x00000080)
2886#define MPI2_ETHPG0_STATUS_TELNET_ENABLED (0x00000040)
2887#define MPI2_ETHPG0_STATUS_SSH2_ENABLED (0x00000020)
2888#define MPI2_ETHPG0_STATUS_DHCP_CLIENT_ENABLED (0x00000010)
2889#define MPI2_ETHPG0_STATUS_IPV6_ENABLED (0x00000008)
2890#define MPI2_ETHPG0_STATUS_IPV4_ENABLED (0x00000004)
2891#define MPI2_ETHPG0_STATUS_IPV6_ADDRESSES (0x00000002)
2892#define MPI2_ETHPG0_STATUS_ETH_IF_ENABLED (0x00000001)
2893
2894
2895#define MPI2_ETHPG0_MS_DUPLEX_MASK (0x80)
2896#define MPI2_ETHPG0_MS_HALF_DUPLEX (0x00)
2897#define MPI2_ETHPG0_MS_FULL_DUPLEX (0x80)
2898
2899#define MPI2_ETHPG0_MS_CONNECT_SPEED_MASK (0x07)
2900#define MPI2_ETHPG0_MS_NOT_CONNECTED (0x00)
2901#define MPI2_ETHPG0_MS_10MBIT (0x01)
2902#define MPI2_ETHPG0_MS_100MBIT (0x02)
2903#define MPI2_ETHPG0_MS_1GBIT (0x03)
2904
2905
2906
2907
2908typedef struct _MPI2_CONFIG_PAGE_ETHERNET_1 {
2909 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2910 U32 Reserved0;
2911 U32 Flags;
2912 U8 MediaState;
2913 U8 Reserved1;
2914 U16 Reserved2;
2915 U8 MacAddress[6];
2916 U8 Reserved3;
2917 U8 Reserved4;
2918 MPI2_ETHERNET_IP_ADDR StaticIpAddress;
2919 MPI2_ETHERNET_IP_ADDR StaticSubnetMask;
2920 MPI2_ETHERNET_IP_ADDR StaticGatewayIpAddress;
2921 MPI2_ETHERNET_IP_ADDR StaticDNS1IpAddress;
2922 MPI2_ETHERNET_IP_ADDR StaticDNS2IpAddress;
2923 U32 Reserved5;
2924 U32 Reserved6;
2925 U32 Reserved7;
2926 U32 Reserved8;
2927 U8 HostName
2928 [MPI2_ETHERNET_HOST_NAME_LENGTH];
2929} MPI2_CONFIG_PAGE_ETHERNET_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_ETHERNET_1,
2930 Mpi2EthernetPage1_t, MPI2_POINTER pMpi2EthernetPage1_t;
2931
2932#define MPI2_ETHERNETPAGE1_PAGEVERSION (0x00)
2933
2934
2935#define MPI2_ETHPG1_FLAG_SET_DEFAULT_IF (0x00000100)
2936#define MPI2_ETHPG1_FLAG_ENABLE_FW_DOWNLOAD (0x00000080)
2937#define MPI2_ETHPG1_FLAG_ENABLE_TELNET (0x00000040)
2938#define MPI2_ETHPG1_FLAG_ENABLE_SSH2 (0x00000020)
2939#define MPI2_ETHPG1_FLAG_ENABLE_DHCP_CLIENT (0x00000010)
2940#define MPI2_ETHPG1_FLAG_ENABLE_IPV6 (0x00000008)
2941#define MPI2_ETHPG1_FLAG_ENABLE_IPV4 (0x00000004)
2942#define MPI2_ETHPG1_FLAG_USE_IPV6_ADDRESSES (0x00000002)
2943#define MPI2_ETHPG1_FLAG_ENABLE_ETH_IF (0x00000001)
2944
2945
2946#define MPI2_ETHPG1_MS_DUPLEX_MASK (0x80)
2947#define MPI2_ETHPG1_MS_HALF_DUPLEX (0x00)
2948#define MPI2_ETHPG1_MS_FULL_DUPLEX (0x80)
2949
2950#define MPI2_ETHPG1_MS_DATA_RATE_MASK (0x07)
2951#define MPI2_ETHPG1_MS_DATA_RATE_AUTO (0x00)
2952#define MPI2_ETHPG1_MS_DATA_RATE_10MBIT (0x01)
2953#define MPI2_ETHPG1_MS_DATA_RATE_100MBIT (0x02)
2954#define MPI2_ETHPG1_MS_DATA_RATE_1GBIT (0x03)
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967typedef struct _MPI2_CONFIG_PAGE_EXT_MAN_PS {
2968 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2969 U32 ProductSpecificInfo;
2970} MPI2_CONFIG_PAGE_EXT_MAN_PS,
2971 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_EXT_MAN_PS,
2972 Mpi2ExtManufacturingPagePS_t,
2973 MPI2_POINTER pMpi2ExtManufacturingPagePS_t;
2974
2975
2976
2977#endif
2978
2979