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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328#ifndef MPI_CNFG_H
329#define MPI_CNFG_H
330
331
332
333
334
335
336
337
338typedef struct _CONFIG_PAGE_HEADER
339{
340 U8 PageVersion;
341 U8 PageLength;
342 U8 PageNumber;
343 U8 PageType;
344} CONFIG_PAGE_HEADER, MPI_POINTER PTR_CONFIG_PAGE_HEADER,
345 ConfigPageHeader_t, MPI_POINTER pConfigPageHeader_t;
346
347typedef union _CONFIG_PAGE_HEADER_UNION
348{
349 ConfigPageHeader_t Struct;
350 U8 Bytes[4];
351 U16 Word16[2];
352 U32 Word32;
353} ConfigPageHeaderUnion, MPI_POINTER pConfigPageHeaderUnion,
354 CONFIG_PAGE_HEADER_UNION, MPI_POINTER PTR_CONFIG_PAGE_HEADER_UNION;
355
356typedef struct _CONFIG_EXTENDED_PAGE_HEADER
357{
358 U8 PageVersion;
359 U8 Reserved1;
360 U8 PageNumber;
361 U8 PageType;
362 U16 ExtPageLength;
363 U8 ExtPageType;
364 U8 Reserved2;
365} CONFIG_EXTENDED_PAGE_HEADER, MPI_POINTER PTR_CONFIG_EXTENDED_PAGE_HEADER,
366 ConfigExtendedPageHeader_t, MPI_POINTER pConfigExtendedPageHeader_t;
367
368
369
370
371
372
373#define MPI_CONFIG_PAGEATTR_READ_ONLY (0x00)
374#define MPI_CONFIG_PAGEATTR_CHANGEABLE (0x10)
375#define MPI_CONFIG_PAGEATTR_PERSISTENT (0x20)
376#define MPI_CONFIG_PAGEATTR_RO_PERSISTENT (0x30)
377#define MPI_CONFIG_PAGEATTR_MASK (0xF0)
378
379#define MPI_CONFIG_PAGETYPE_IO_UNIT (0x00)
380#define MPI_CONFIG_PAGETYPE_IOC (0x01)
381#define MPI_CONFIG_PAGETYPE_BIOS (0x02)
382#define MPI_CONFIG_PAGETYPE_SCSI_PORT (0x03)
383#define MPI_CONFIG_PAGETYPE_SCSI_DEVICE (0x04)
384#define MPI_CONFIG_PAGETYPE_FC_PORT (0x05)
385#define MPI_CONFIG_PAGETYPE_FC_DEVICE (0x06)
386#define MPI_CONFIG_PAGETYPE_LAN (0x07)
387#define MPI_CONFIG_PAGETYPE_RAID_VOLUME (0x08)
388#define MPI_CONFIG_PAGETYPE_MANUFACTURING (0x09)
389#define MPI_CONFIG_PAGETYPE_RAID_PHYSDISK (0x0A)
390#define MPI_CONFIG_PAGETYPE_INBAND (0x0B)
391#define MPI_CONFIG_PAGETYPE_EXTENDED (0x0F)
392#define MPI_CONFIG_PAGETYPE_MASK (0x0F)
393
394#define MPI_CONFIG_TYPENUM_MASK (0x0FFF)
395
396
397
398
399
400#define MPI_CONFIG_EXTPAGETYPE_SAS_IO_UNIT (0x10)
401#define MPI_CONFIG_EXTPAGETYPE_SAS_EXPANDER (0x11)
402#define MPI_CONFIG_EXTPAGETYPE_SAS_DEVICE (0x12)
403#define MPI_CONFIG_EXTPAGETYPE_SAS_PHY (0x13)
404#define MPI_CONFIG_EXTPAGETYPE_LOG (0x14)
405#define MPI_CONFIG_EXTPAGETYPE_ENCLOSURE (0x15)
406
407
408
409
410
411#define MPI_SCSI_PORT_PGAD_PORT_MASK (0x000000FF)
412
413#define MPI_SCSI_DEVICE_FORM_MASK (0xF0000000)
414#define MPI_SCSI_DEVICE_FORM_BUS_TID (0x00000000)
415#define MPI_SCSI_DEVICE_TARGET_ID_MASK (0x000000FF)
416#define MPI_SCSI_DEVICE_TARGET_ID_SHIFT (0)
417#define MPI_SCSI_DEVICE_BUS_MASK (0x0000FF00)
418#define MPI_SCSI_DEVICE_BUS_SHIFT (8)
419#define MPI_SCSI_DEVICE_FORM_TARGET_MODE (0x10000000)
420#define MPI_SCSI_DEVICE_TM_RESPOND_ID_MASK (0x000000FF)
421#define MPI_SCSI_DEVICE_TM_RESPOND_ID_SHIFT (0)
422#define MPI_SCSI_DEVICE_TM_BUS_MASK (0x0000FF00)
423#define MPI_SCSI_DEVICE_TM_BUS_SHIFT (8)
424#define MPI_SCSI_DEVICE_TM_INIT_ID_MASK (0x00FF0000)
425#define MPI_SCSI_DEVICE_TM_INIT_ID_SHIFT (16)
426
427#define MPI_FC_PORT_PGAD_PORT_MASK (0xF0000000)
428#define MPI_FC_PORT_PGAD_PORT_SHIFT (28)
429#define MPI_FC_PORT_PGAD_FORM_MASK (0x0F000000)
430#define MPI_FC_PORT_PGAD_FORM_INDEX (0x01000000)
431#define MPI_FC_PORT_PGAD_INDEX_MASK (0x0000FFFF)
432#define MPI_FC_PORT_PGAD_INDEX_SHIFT (0)
433
434#define MPI_FC_DEVICE_PGAD_PORT_MASK (0xF0000000)
435#define MPI_FC_DEVICE_PGAD_PORT_SHIFT (28)
436#define MPI_FC_DEVICE_PGAD_FORM_MASK (0x0F000000)
437#define MPI_FC_DEVICE_PGAD_FORM_NEXT_DID (0x00000000)
438#define MPI_FC_DEVICE_PGAD_ND_PORT_MASK (0xF0000000)
439#define MPI_FC_DEVICE_PGAD_ND_PORT_SHIFT (28)
440#define MPI_FC_DEVICE_PGAD_ND_DID_MASK (0x00FFFFFF)
441#define MPI_FC_DEVICE_PGAD_ND_DID_SHIFT (0)
442#define MPI_FC_DEVICE_PGAD_FORM_BUS_TID (0x01000000)
443#define MPI_FC_DEVICE_PGAD_BT_BUS_MASK (0x0000FF00)
444#define MPI_FC_DEVICE_PGAD_BT_BUS_SHIFT (8)
445#define MPI_FC_DEVICE_PGAD_BT_TID_MASK (0x000000FF)
446#define MPI_FC_DEVICE_PGAD_BT_TID_SHIFT (0)
447
448#define MPI_PHYSDISK_PGAD_PHYSDISKNUM_MASK (0x000000FF)
449#define MPI_PHYSDISK_PGAD_PHYSDISKNUM_SHIFT (0)
450
451#define MPI_SAS_EXPAND_PGAD_FORM_MASK (0xF0000000)
452#define MPI_SAS_EXPAND_PGAD_FORM_SHIFT (28)
453#define MPI_SAS_EXPAND_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
454#define MPI_SAS_EXPAND_PGAD_FORM_HANDLE_PHY_NUM (0x00000001)
455#define MPI_SAS_EXPAND_PGAD_FORM_HANDLE (0x00000002)
456#define MPI_SAS_EXPAND_PGAD_GNH_MASK_HANDLE (0x0000FFFF)
457#define MPI_SAS_EXPAND_PGAD_GNH_SHIFT_HANDLE (0)
458#define MPI_SAS_EXPAND_PGAD_HPN_MASK_PHY (0x00FF0000)
459#define MPI_SAS_EXPAND_PGAD_HPN_SHIFT_PHY (16)
460#define MPI_SAS_EXPAND_PGAD_HPN_MASK_HANDLE (0x0000FFFF)
461#define MPI_SAS_EXPAND_PGAD_HPN_SHIFT_HANDLE (0)
462#define MPI_SAS_EXPAND_PGAD_H_MASK_HANDLE (0x0000FFFF)
463#define MPI_SAS_EXPAND_PGAD_H_SHIFT_HANDLE (0)
464
465#define MPI_SAS_DEVICE_PGAD_FORM_MASK (0xF0000000)
466#define MPI_SAS_DEVICE_PGAD_FORM_SHIFT (28)
467#define MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
468#define MPI_SAS_DEVICE_PGAD_FORM_BUS_TARGET_ID (0x00000001)
469#define MPI_SAS_DEVICE_PGAD_FORM_HANDLE (0x00000002)
470#define MPI_SAS_DEVICE_PGAD_GNH_HANDLE_MASK (0x0000FFFF)
471#define MPI_SAS_DEVICE_PGAD_GNH_HANDLE_SHIFT (0)
472#define MPI_SAS_DEVICE_PGAD_BT_BUS_MASK (0x0000FF00)
473#define MPI_SAS_DEVICE_PGAD_BT_BUS_SHIFT (8)
474#define MPI_SAS_DEVICE_PGAD_BT_TID_MASK (0x000000FF)
475#define MPI_SAS_DEVICE_PGAD_BT_TID_SHIFT (0)
476#define MPI_SAS_DEVICE_PGAD_H_HANDLE_MASK (0x0000FFFF)
477#define MPI_SAS_DEVICE_PGAD_H_HANDLE_SHIFT (0)
478
479#define MPI_SAS_PHY_PGAD_FORM_MASK (0xF0000000)
480#define MPI_SAS_PHY_PGAD_FORM_SHIFT (28)
481#define MPI_SAS_PHY_PGAD_FORM_PHY_NUMBER (0x0)
482#define MPI_SAS_PHY_PGAD_FORM_PHY_TBL_INDEX (0x1)
483#define MPI_SAS_PHY_PGAD_PHY_NUMBER_MASK (0x000000FF)
484#define MPI_SAS_PHY_PGAD_PHY_NUMBER_SHIFT (0)
485#define MPI_SAS_PHY_PGAD_PHY_TBL_INDEX_MASK (0x0000FFFF)
486#define MPI_SAS_PHY_PGAD_PHY_TBL_INDEX_SHIFT (0)
487
488#define MPI_SAS_ENCLOS_PGAD_FORM_MASK (0xF0000000)
489#define MPI_SAS_ENCLOS_PGAD_FORM_SHIFT (28)
490#define MPI_SAS_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
491#define MPI_SAS_ENCLOS_PGAD_FORM_HANDLE (0x00000001)
492#define MPI_SAS_ENCLOS_PGAD_GNH_HANDLE_MASK (0x0000FFFF)
493#define MPI_SAS_ENCLOS_PGAD_GNH_HANDLE_SHIFT (0)
494#define MPI_SAS_ENCLOS_PGAD_H_HANDLE_MASK (0x0000FFFF)
495#define MPI_SAS_ENCLOS_PGAD_H_HANDLE_SHIFT (0)
496
497
498
499
500
501
502typedef struct _MSG_CONFIG
503{
504 U8 Action;
505 U8 Reserved;
506 U8 ChainOffset;
507 U8 Function;
508 U16 ExtPageLength;
509 U8 ExtPageType;
510 U8 MsgFlags;
511 U32 MsgContext;
512 U8 Reserved2[8];
513 CONFIG_PAGE_HEADER Header;
514 U32 PageAddress;
515 SGE_IO_UNION PageBufferSGE;
516} MSG_CONFIG, MPI_POINTER PTR_MSG_CONFIG,
517 Config_t, MPI_POINTER pConfig_t;
518
519
520
521
522
523#define MPI_CONFIG_ACTION_PAGE_HEADER (0x00)
524#define MPI_CONFIG_ACTION_PAGE_READ_CURRENT (0x01)
525#define MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT (0x02)
526#define MPI_CONFIG_ACTION_PAGE_DEFAULT (0x03)
527#define MPI_CONFIG_ACTION_PAGE_WRITE_NVRAM (0x04)
528#define MPI_CONFIG_ACTION_PAGE_READ_DEFAULT (0x05)
529#define MPI_CONFIG_ACTION_PAGE_READ_NVRAM (0x06)
530
531
532
533typedef struct _MSG_CONFIG_REPLY
534{
535 U8 Action;
536 U8 Reserved;
537 U8 MsgLength;
538 U8 Function;
539 U16 ExtPageLength;
540 U8 ExtPageType;
541 U8 MsgFlags;
542 U32 MsgContext;
543 U8 Reserved2[2];
544 U16 IOCStatus;
545 U32 IOCLogInfo;
546 CONFIG_PAGE_HEADER Header;
547} MSG_CONFIG_REPLY, MPI_POINTER PTR_MSG_CONFIG_REPLY,
548 ConfigReply_t, MPI_POINTER pConfigReply_t;
549
550
551
552
553
554
555
556
557
558
559
560
561#define MPI_MANUFACTPAGE_VENDORID_LSILOGIC (0x1000)
562
563#define MPI_MANUFACTPAGE_DEVICEID_FC909 (0x0621)
564#define MPI_MANUFACTPAGE_DEVICEID_FC919 (0x0624)
565#define MPI_MANUFACTPAGE_DEVICEID_FC929 (0x0622)
566#define MPI_MANUFACTPAGE_DEVICEID_FC919X (0x0628)
567#define MPI_MANUFACTPAGE_DEVICEID_FC929X (0x0626)
568#define MPI_MANUFACTPAGE_DEVICEID_FC939X (0x0642)
569#define MPI_MANUFACTPAGE_DEVICEID_FC949X (0x0640)
570#define MPI_MANUFACTPAGE_DEVICEID_FC949E (0x0646)
571
572#define MPI_MANUFACTPAGE_DEVID_53C1030 (0x0030)
573#define MPI_MANUFACTPAGE_DEVID_53C1030ZC (0x0031)
574#define MPI_MANUFACTPAGE_DEVID_1030_53C1035 (0x0032)
575#define MPI_MANUFACTPAGE_DEVID_1030ZC_53C1035 (0x0033)
576#define MPI_MANUFACTPAGE_DEVID_53C1035 (0x0040)
577#define MPI_MANUFACTPAGE_DEVID_53C1035ZC (0x0041)
578
579#define MPI_MANUFACTPAGE_DEVID_SAS1064 (0x0050)
580#define MPI_MANUFACTPAGE_DEVID_SAS1064A (0x005C)
581#define MPI_MANUFACTPAGE_DEVID_SAS1064E (0x0056)
582#define MPI_MANUFACTPAGE_DEVID_SAS1066 (0x005E)
583#define MPI_MANUFACTPAGE_DEVID_SAS1066E (0x005A)
584#define MPI_MANUFACTPAGE_DEVID_SAS1068 (0x0054)
585#define MPI_MANUFACTPAGE_DEVID_SAS1068E (0x0058)
586#define MPI_MANUFACTPAGE_DEVID_SAS1078 (0x0062)
587
588
589typedef struct _CONFIG_PAGE_MANUFACTURING_0
590{
591 CONFIG_PAGE_HEADER Header;
592 U8 ChipName[16];
593 U8 ChipRevision[8];
594 U8 BoardName[16];
595 U8 BoardAssembly[16];
596 U8 BoardTracerNumber[16];
597
598} CONFIG_PAGE_MANUFACTURING_0, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_0,
599 ManufacturingPage0_t, MPI_POINTER pManufacturingPage0_t;
600
601#define MPI_MANUFACTURING0_PAGEVERSION (0x00)
602
603
604typedef struct _CONFIG_PAGE_MANUFACTURING_1
605{
606 CONFIG_PAGE_HEADER Header;
607 U8 VPD[256];
608} CONFIG_PAGE_MANUFACTURING_1, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_1,
609 ManufacturingPage1_t, MPI_POINTER pManufacturingPage1_t;
610
611#define MPI_MANUFACTURING1_PAGEVERSION (0x00)
612
613
614typedef struct _MPI_CHIP_REVISION_ID
615{
616 U16 DeviceID;
617 U8 PCIRevisionID;
618 U8 Reserved;
619} MPI_CHIP_REVISION_ID, MPI_POINTER PTR_MPI_CHIP_REVISION_ID,
620 MpiChipRevisionId_t, MPI_POINTER pMpiChipRevisionId_t;
621
622
623
624
625
626
627#ifndef MPI_MAN_PAGE_2_HW_SETTINGS_WORDS
628#define MPI_MAN_PAGE_2_HW_SETTINGS_WORDS (1)
629#endif
630
631typedef struct _CONFIG_PAGE_MANUFACTURING_2
632{
633 CONFIG_PAGE_HEADER Header;
634 MPI_CHIP_REVISION_ID ChipId;
635 U32 HwSettings[MPI_MAN_PAGE_2_HW_SETTINGS_WORDS];
636} CONFIG_PAGE_MANUFACTURING_2, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_2,
637 ManufacturingPage2_t, MPI_POINTER pManufacturingPage2_t;
638
639#define MPI_MANUFACTURING2_PAGEVERSION (0x00)
640
641
642
643
644
645
646#ifndef MPI_MAN_PAGE_3_INFO_WORDS
647#define MPI_MAN_PAGE_3_INFO_WORDS (1)
648#endif
649
650typedef struct _CONFIG_PAGE_MANUFACTURING_3
651{
652 CONFIG_PAGE_HEADER Header;
653 MPI_CHIP_REVISION_ID ChipId;
654 U32 Info[MPI_MAN_PAGE_3_INFO_WORDS];
655} CONFIG_PAGE_MANUFACTURING_3, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_3,
656 ManufacturingPage3_t, MPI_POINTER pManufacturingPage3_t;
657
658#define MPI_MANUFACTURING3_PAGEVERSION (0x00)
659
660
661typedef struct _CONFIG_PAGE_MANUFACTURING_4
662{
663 CONFIG_PAGE_HEADER Header;
664 U32 Reserved1;
665 U8 InfoOffset0;
666 U8 InfoSize0;
667 U8 InfoOffset1;
668 U8 InfoSize1;
669 U8 InquirySize;
670 U8 Flags;
671 U16 ExtFlags;
672 U8 InquiryData[56];
673 U32 ISVolumeSettings;
674 U32 IMEVolumeSettings;
675 U32 IMVolumeSettings;
676 U32 Reserved3;
677 U32 Reserved4;
678 U32 Reserved5;
679 U8 IMEDataScrubRate;
680 U8 IMEResyncRate;
681 U16 Reserved6;
682 U8 IMDataScrubRate;
683 U8 IMResyncRate;
684 U16 Reserved7;
685 U32 Reserved8;
686 U32 Reserved9;
687} CONFIG_PAGE_MANUFACTURING_4, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_4,
688 ManufacturingPage4_t, MPI_POINTER pManufacturingPage4_t;
689
690#define MPI_MANUFACTURING4_PAGEVERSION (0x05)
691
692
693#define MPI_MANPAGE4_FORCE_BAD_BLOCK_TABLE (0x80)
694#define MPI_MANPAGE4_FORCE_OFFLINE_FAILOVER (0x40)
695#define MPI_MANPAGE4_IME_DISABLE (0x20)
696#define MPI_MANPAGE4_IM_DISABLE (0x10)
697#define MPI_MANPAGE4_IS_DISABLE (0x08)
698#define MPI_MANPAGE4_IR_MODEPAGE8_DISABLE (0x04)
699#define MPI_MANPAGE4_IM_RESYNC_CACHE_ENABLE (0x02)
700#define MPI_MANPAGE4_IR_NO_MIX_SAS_SATA (0x01)
701
702
703#define MPI_MANPAGE4_EXTFLAGS_MASK_COERCION_SIZE (0x0180)
704#define MPI_MANPAGE4_EXTFLAGS_SHIFT_COERCION_SIZE (7)
705#define MPI_MANPAGE4_EXTFLAGS_1GB_COERCION_SIZE (0)
706#define MPI_MANPAGE4_EXTFLAGS_128MB_COERCION_SIZE (1)
707
708#define MPI_MANPAGE4_EXTFLAGS_NO_MIX_SSD_SAS_SATA (0x0040)
709#define MPI_MANPAGE4_EXTFLAGS_MIX_SSD_AND_NON_SSD (0x0020)
710#define MPI_MANPAGE4_EXTFLAGS_DUAL_PORT_SUPPORT (0x0010)
711#define MPI_MANPAGE4_EXTFLAGS_HIDE_NON_IR_METADATA (0x0008)
712#define MPI_MANPAGE4_EXTFLAGS_SAS_CACHE_DISABLE (0x0004)
713#define MPI_MANPAGE4_EXTFLAGS_SATA_CACHE_DISABLE (0x0002)
714#define MPI_MANPAGE4_EXTFLAGS_LEGACY_MODE (0x0001)
715
716
717#ifndef MPI_MANPAGE5_NUM_FORCEWWID
718#define MPI_MANPAGE5_NUM_FORCEWWID (1)
719#endif
720
721typedef struct _CONFIG_PAGE_MANUFACTURING_5
722{
723 CONFIG_PAGE_HEADER Header;
724 U64 BaseWWID;
725 U8 Flags;
726 U8 NumForceWWID;
727 U16 Reserved2;
728 U32 Reserved3;
729 U32 Reserved4;
730 U64 ForceWWID[MPI_MANPAGE5_NUM_FORCEWWID];
731} CONFIG_PAGE_MANUFACTURING_5, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_5,
732 ManufacturingPage5_t, MPI_POINTER pManufacturingPage5_t;
733
734#define MPI_MANUFACTURING5_PAGEVERSION (0x02)
735
736
737#define MPI_MANPAGE5_TWO_WWID_PER_PHY (0x01)
738
739
740typedef struct _CONFIG_PAGE_MANUFACTURING_6
741{
742 CONFIG_PAGE_HEADER Header;
743 U32 ProductSpecificInfo;
744} CONFIG_PAGE_MANUFACTURING_6, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_6,
745 ManufacturingPage6_t, MPI_POINTER pManufacturingPage6_t;
746
747#define MPI_MANUFACTURING6_PAGEVERSION (0x00)
748
749
750typedef struct _MPI_MANPAGE7_CONNECTOR_INFO
751{
752 U32 Pinout;
753 U8 Connector[16];
754 U8 Location;
755 U8 Reserved1;
756 U16 Slot;
757 U32 Reserved2;
758} MPI_MANPAGE7_CONNECTOR_INFO, MPI_POINTER PTR_MPI_MANPAGE7_CONNECTOR_INFO,
759 MpiManPage7ConnectorInfo_t, MPI_POINTER pMpiManPage7ConnectorInfo_t;
760
761
762#define MPI_MANPAGE7_PINOUT_SFF_8484_L4 (0x00080000)
763#define MPI_MANPAGE7_PINOUT_SFF_8484_L3 (0x00040000)
764#define MPI_MANPAGE7_PINOUT_SFF_8484_L2 (0x00020000)
765#define MPI_MANPAGE7_PINOUT_SFF_8484_L1 (0x00010000)
766#define MPI_MANPAGE7_PINOUT_SFF_8470_L4 (0x00000800)
767#define MPI_MANPAGE7_PINOUT_SFF_8470_L3 (0x00000400)
768#define MPI_MANPAGE7_PINOUT_SFF_8470_L2 (0x00000200)
769#define MPI_MANPAGE7_PINOUT_SFF_8470_L1 (0x00000100)
770#define MPI_MANPAGE7_PINOUT_SFF_8482 (0x00000002)
771#define MPI_MANPAGE7_PINOUT_CONNECTION_UNKNOWN (0x00000001)
772
773
774#define MPI_MANPAGE7_LOCATION_UNKNOWN (0x01)
775#define MPI_MANPAGE7_LOCATION_INTERNAL (0x02)
776#define MPI_MANPAGE7_LOCATION_EXTERNAL (0x04)
777#define MPI_MANPAGE7_LOCATION_SWITCHABLE (0x08)
778#define MPI_MANPAGE7_LOCATION_AUTO (0x10)
779#define MPI_MANPAGE7_LOCATION_NOT_PRESENT (0x20)
780#define MPI_MANPAGE7_LOCATION_NOT_CONNECTED (0x80)
781
782
783
784
785
786#ifndef MPI_MANPAGE7_CONNECTOR_INFO_MAX
787#define MPI_MANPAGE7_CONNECTOR_INFO_MAX (1)
788#endif
789
790typedef struct _CONFIG_PAGE_MANUFACTURING_7
791{
792 CONFIG_PAGE_HEADER Header;
793 U32 Reserved1;
794 U32 Reserved2;
795 U32 Flags;
796 U8 EnclosureName[16];
797 U8 NumPhys;
798 U8 Reserved3;
799 U16 Reserved4;
800 MPI_MANPAGE7_CONNECTOR_INFO ConnectorInfo[MPI_MANPAGE7_CONNECTOR_INFO_MAX];
801} CONFIG_PAGE_MANUFACTURING_7, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_7,
802 ManufacturingPage7_t, MPI_POINTER pManufacturingPage7_t;
803
804#define MPI_MANUFACTURING7_PAGEVERSION (0x00)
805
806
807#define MPI_MANPAGE7_FLAG_USE_SLOT_INFO (0x00000001)
808
809
810typedef struct _CONFIG_PAGE_MANUFACTURING_8
811{
812 CONFIG_PAGE_HEADER Header;
813 U32 ProductSpecificInfo;
814} CONFIG_PAGE_MANUFACTURING_8, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_8,
815 ManufacturingPage8_t, MPI_POINTER pManufacturingPage8_t;
816
817#define MPI_MANUFACTURING8_PAGEVERSION (0x00)
818
819
820typedef struct _CONFIG_PAGE_MANUFACTURING_9
821{
822 CONFIG_PAGE_HEADER Header;
823 U32 ProductSpecificInfo;
824} CONFIG_PAGE_MANUFACTURING_9, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_9,
825 ManufacturingPage9_t, MPI_POINTER pManufacturingPage9_t;
826
827#define MPI_MANUFACTURING9_PAGEVERSION (0x00)
828
829
830typedef struct _CONFIG_PAGE_MANUFACTURING_10
831{
832 CONFIG_PAGE_HEADER Header;
833 U32 ProductSpecificInfo;
834} CONFIG_PAGE_MANUFACTURING_10, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_10,
835 ManufacturingPage10_t, MPI_POINTER pManufacturingPage10_t;
836
837#define MPI_MANUFACTURING10_PAGEVERSION (0x00)
838
839
840
841
842
843
844typedef struct _CONFIG_PAGE_IO_UNIT_0
845{
846 CONFIG_PAGE_HEADER Header;
847 U64 UniqueValue;
848} CONFIG_PAGE_IO_UNIT_0, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_0,
849 IOUnitPage0_t, MPI_POINTER pIOUnitPage0_t;
850
851#define MPI_IOUNITPAGE0_PAGEVERSION (0x00)
852
853
854typedef struct _CONFIG_PAGE_IO_UNIT_1
855{
856 CONFIG_PAGE_HEADER Header;
857 U32 Flags;
858} CONFIG_PAGE_IO_UNIT_1, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_1,
859 IOUnitPage1_t, MPI_POINTER pIOUnitPage1_t;
860
861#define MPI_IOUNITPAGE1_PAGEVERSION (0x02)
862
863
864#define MPI_IOUNITPAGE1_MULTI_FUNCTION (0x00000000)
865#define MPI_IOUNITPAGE1_SINGLE_FUNCTION (0x00000001)
866#define MPI_IOUNITPAGE1_MULTI_PATHING (0x00000002)
867#define MPI_IOUNITPAGE1_SINGLE_PATHING (0x00000000)
868#define MPI_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID (0x00000004)
869#define MPI_IOUNITPAGE1_DISABLE_QUEUE_FULL_HANDLING (0x00000020)
870#define MPI_IOUNITPAGE1_DISABLE_IR (0x00000040)
871#define MPI_IOUNITPAGE1_FORCE_32 (0x00000080)
872#define MPI_IOUNITPAGE1_NATIVE_COMMAND_Q_DISABLE (0x00000100)
873#define MPI_IOUNITPAGE1_SATA_WRITE_CACHE_DISABLE (0x00000200)
874
875typedef struct _MPI_ADAPTER_INFO
876{
877 U8 PciBusNumber;
878 U8 PciDeviceAndFunctionNumber;
879 U16 AdapterFlags;
880} MPI_ADAPTER_INFO, MPI_POINTER PTR_MPI_ADAPTER_INFO,
881 MpiAdapterInfo_t, MPI_POINTER pMpiAdapterInfo_t;
882
883#define MPI_ADAPTER_INFO_FLAGS_EMBEDDED (0x0001)
884#define MPI_ADAPTER_INFO_FLAGS_INIT_STATUS (0x0002)
885
886typedef struct _CONFIG_PAGE_IO_UNIT_2
887{
888 CONFIG_PAGE_HEADER Header;
889 U32 Flags;
890 U32 BiosVersion;
891 MPI_ADAPTER_INFO AdapterOrder[4];
892 U32 Reserved1;
893} CONFIG_PAGE_IO_UNIT_2, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_2,
894 IOUnitPage2_t, MPI_POINTER pIOUnitPage2_t;
895
896#define MPI_IOUNITPAGE2_PAGEVERSION (0x02)
897
898#define MPI_IOUNITPAGE2_FLAGS_PAUSE_ON_ERROR (0x00000002)
899#define MPI_IOUNITPAGE2_FLAGS_VERBOSE_ENABLE (0x00000004)
900#define MPI_IOUNITPAGE2_FLAGS_COLOR_VIDEO_DISABLE (0x00000008)
901#define MPI_IOUNITPAGE2_FLAGS_DONT_HOOK_INT_40 (0x00000010)
902
903#define MPI_IOUNITPAGE2_FLAGS_DEV_LIST_DISPLAY_MASK (0x000000E0)
904#define MPI_IOUNITPAGE2_FLAGS_INSTALLED_DEV_DISPLAY (0x00000000)
905#define MPI_IOUNITPAGE2_FLAGS_ADAPTER_DISPLAY (0x00000020)
906#define MPI_IOUNITPAGE2_FLAGS_ADAPTER_DEV_DISPLAY (0x00000040)
907
908
909
910
911
912
913#ifndef MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX
914#define MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX (1)
915#endif
916
917typedef struct _CONFIG_PAGE_IO_UNIT_3
918{
919 CONFIG_PAGE_HEADER Header;
920 U8 GPIOCount;
921 U8 Reserved1;
922 U16 Reserved2;
923 U16 GPIOVal[MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX];
924} CONFIG_PAGE_IO_UNIT_3, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_3,
925 IOUnitPage3_t, MPI_POINTER pIOUnitPage3_t;
926
927#define MPI_IOUNITPAGE3_PAGEVERSION (0x01)
928
929#define MPI_IOUNITPAGE3_GPIO_FUNCTION_MASK (0xFC)
930#define MPI_IOUNITPAGE3_GPIO_FUNCTION_SHIFT (2)
931#define MPI_IOUNITPAGE3_GPIO_SETTING_OFF (0x00)
932#define MPI_IOUNITPAGE3_GPIO_SETTING_ON (0x01)
933
934
935typedef struct _CONFIG_PAGE_IO_UNIT_4
936{
937 CONFIG_PAGE_HEADER Header;
938 U32 Reserved1;
939 SGE_SIMPLE_UNION FWImageSGE;
940} CONFIG_PAGE_IO_UNIT_4, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_4,
941 IOUnitPage4_t, MPI_POINTER pIOUnitPage4_t;
942
943#define MPI_IOUNITPAGE4_PAGEVERSION (0x00)
944
945
946
947
948
949
950typedef struct _CONFIG_PAGE_IOC_0
951{
952 CONFIG_PAGE_HEADER Header;
953 U32 TotalNVStore;
954 U32 FreeNVStore;
955 U16 VendorID;
956 U16 DeviceID;
957 U8 RevisionID;
958 U8 Reserved[3];
959 U32 ClassCode;
960 U16 SubsystemVendorID;
961 U16 SubsystemID;
962} CONFIG_PAGE_IOC_0, MPI_POINTER PTR_CONFIG_PAGE_IOC_0,
963 IOCPage0_t, MPI_POINTER pIOCPage0_t;
964
965#define MPI_IOCPAGE0_PAGEVERSION (0x01)
966
967
968typedef struct _CONFIG_PAGE_IOC_1
969{
970 CONFIG_PAGE_HEADER Header;
971 U32 Flags;
972 U32 CoalescingTimeout;
973 U8 CoalescingDepth;
974 U8 PCISlotNum;
975 U8 Reserved[2];
976} CONFIG_PAGE_IOC_1, MPI_POINTER PTR_CONFIG_PAGE_IOC_1,
977 IOCPage1_t, MPI_POINTER pIOCPage1_t;
978
979#define MPI_IOCPAGE1_PAGEVERSION (0x03)
980
981
982#define MPI_IOCPAGE1_EEDP_MODE_MASK (0x07000000)
983#define MPI_IOCPAGE1_EEDP_MODE_OFF (0x00000000)
984#define MPI_IOCPAGE1_EEDP_MODE_T10 (0x01000000)
985#define MPI_IOCPAGE1_EEDP_MODE_LSI_1 (0x02000000)
986#define MPI_IOCPAGE1_INITIATOR_CONTEXT_REPLY_DISABLE (0x00000010)
987#define MPI_IOCPAGE1_REPLY_COALESCING (0x00000001)
988
989#define MPI_IOCPAGE1_PCISLOTNUM_UNKNOWN (0xFF)
990
991
992typedef struct _CONFIG_PAGE_IOC_2_RAID_VOL
993{
994 U8 VolumeID;
995 U8 VolumeBus;
996 U8 VolumeIOC;
997 U8 VolumePageNumber;
998 U8 VolumeType;
999 U8 Flags;
1000 U16 Reserved3;
1001} CONFIG_PAGE_IOC_2_RAID_VOL, MPI_POINTER PTR_CONFIG_PAGE_IOC_2_RAID_VOL,
1002 ConfigPageIoc2RaidVol_t, MPI_POINTER pConfigPageIoc2RaidVol_t;
1003
1004
1005
1006#define MPI_RAID_VOL_TYPE_IS (0x00)
1007#define MPI_RAID_VOL_TYPE_IME (0x01)
1008#define MPI_RAID_VOL_TYPE_IM (0x02)
1009#define MPI_RAID_VOL_TYPE_RAID_5 (0x03)
1010#define MPI_RAID_VOL_TYPE_RAID_6 (0x04)
1011#define MPI_RAID_VOL_TYPE_RAID_10 (0x05)
1012#define MPI_RAID_VOL_TYPE_RAID_50 (0x06)
1013#define MPI_RAID_VOL_TYPE_UNKNOWN (0xFF)
1014
1015
1016
1017#define MPI_IOCPAGE2_FLAG_VOLUME_INACTIVE (0x08)
1018
1019
1020
1021
1022
1023#ifndef MPI_IOC_PAGE_2_RAID_VOLUME_MAX
1024#define MPI_IOC_PAGE_2_RAID_VOLUME_MAX (1)
1025#endif
1026
1027typedef struct _CONFIG_PAGE_IOC_2
1028{
1029 CONFIG_PAGE_HEADER Header;
1030 U32 CapabilitiesFlags;
1031 U8 NumActiveVolumes;
1032 U8 MaxVolumes;
1033 U8 NumActivePhysDisks;
1034 U8 MaxPhysDisks;
1035 CONFIG_PAGE_IOC_2_RAID_VOL RaidVolume[MPI_IOC_PAGE_2_RAID_VOLUME_MAX];
1036} CONFIG_PAGE_IOC_2, MPI_POINTER PTR_CONFIG_PAGE_IOC_2,
1037 IOCPage2_t, MPI_POINTER pIOCPage2_t;
1038
1039#define MPI_IOCPAGE2_PAGEVERSION (0x04)
1040
1041
1042
1043#define MPI_IOCPAGE2_CAP_FLAGS_IS_SUPPORT (0x00000001)
1044#define MPI_IOCPAGE2_CAP_FLAGS_IME_SUPPORT (0x00000002)
1045#define MPI_IOCPAGE2_CAP_FLAGS_IM_SUPPORT (0x00000004)
1046#define MPI_IOCPAGE2_CAP_FLAGS_RAID_5_SUPPORT (0x00000008)
1047#define MPI_IOCPAGE2_CAP_FLAGS_RAID_6_SUPPORT (0x00000010)
1048#define MPI_IOCPAGE2_CAP_FLAGS_RAID_10_SUPPORT (0x00000020)
1049#define MPI_IOCPAGE2_CAP_FLAGS_RAID_50_SUPPORT (0x00000040)
1050#define MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING (0x10000000)
1051#define MPI_IOCPAGE2_CAP_FLAGS_SES_SUPPORT (0x20000000)
1052#define MPI_IOCPAGE2_CAP_FLAGS_SAFTE_SUPPORT (0x40000000)
1053#define MPI_IOCPAGE2_CAP_FLAGS_CROSS_CHANNEL_SUPPORT (0x80000000)
1054
1055
1056typedef struct _IOC_3_PHYS_DISK
1057{
1058 U8 PhysDiskID;
1059 U8 PhysDiskBus;
1060 U8 PhysDiskIOC;
1061 U8 PhysDiskNum;
1062} IOC_3_PHYS_DISK, MPI_POINTER PTR_IOC_3_PHYS_DISK,
1063 Ioc3PhysDisk_t, MPI_POINTER pIoc3PhysDisk_t;
1064
1065
1066
1067
1068
1069#ifndef MPI_IOC_PAGE_3_PHYSDISK_MAX
1070#define MPI_IOC_PAGE_3_PHYSDISK_MAX (1)
1071#endif
1072
1073typedef struct _CONFIG_PAGE_IOC_3
1074{
1075 CONFIG_PAGE_HEADER Header;
1076 U8 NumPhysDisks;
1077 U8 Reserved1;
1078 U16 Reserved2;
1079 IOC_3_PHYS_DISK PhysDisk[MPI_IOC_PAGE_3_PHYSDISK_MAX];
1080} CONFIG_PAGE_IOC_3, MPI_POINTER PTR_CONFIG_PAGE_IOC_3,
1081 IOCPage3_t, MPI_POINTER pIOCPage3_t;
1082
1083#define MPI_IOCPAGE3_PAGEVERSION (0x00)
1084
1085
1086typedef struct _IOC_4_SEP
1087{
1088 U8 SEPTargetID;
1089 U8 SEPBus;
1090 U16 Reserved;
1091} IOC_4_SEP, MPI_POINTER PTR_IOC_4_SEP,
1092 Ioc4Sep_t, MPI_POINTER pIoc4Sep_t;
1093
1094
1095
1096
1097
1098#ifndef MPI_IOC_PAGE_4_SEP_MAX
1099#define MPI_IOC_PAGE_4_SEP_MAX (1)
1100#endif
1101
1102typedef struct _CONFIG_PAGE_IOC_4
1103{
1104 CONFIG_PAGE_HEADER Header;
1105 U8 ActiveSEP;
1106 U8 MaxSEP;
1107 U16 Reserved1;
1108 IOC_4_SEP SEP[MPI_IOC_PAGE_4_SEP_MAX];
1109} CONFIG_PAGE_IOC_4, MPI_POINTER PTR_CONFIG_PAGE_IOC_4,
1110 IOCPage4_t, MPI_POINTER pIOCPage4_t;
1111
1112#define MPI_IOCPAGE4_PAGEVERSION (0x00)
1113
1114
1115typedef struct _IOC_5_HOT_SPARE
1116{
1117 U8 PhysDiskNum;
1118 U8 Reserved;
1119 U8 HotSparePool;
1120 U8 Flags;
1121} IOC_5_HOT_SPARE, MPI_POINTER PTR_IOC_5_HOT_SPARE,
1122 Ioc5HotSpare_t, MPI_POINTER pIoc5HotSpare_t;
1123
1124
1125#define MPI_IOC_PAGE_5_HOT_SPARE_ACTIVE (0x01)
1126
1127
1128
1129
1130
1131#ifndef MPI_IOC_PAGE_5_HOT_SPARE_MAX
1132#define MPI_IOC_PAGE_5_HOT_SPARE_MAX (1)
1133#endif
1134
1135typedef struct _CONFIG_PAGE_IOC_5
1136{
1137 CONFIG_PAGE_HEADER Header;
1138 U32 Reserved1;
1139 U8 NumHotSpares;
1140 U8 Reserved2;
1141 U16 Reserved3;
1142 IOC_5_HOT_SPARE HotSpare[MPI_IOC_PAGE_5_HOT_SPARE_MAX];
1143} CONFIG_PAGE_IOC_5, MPI_POINTER PTR_CONFIG_PAGE_IOC_5,
1144 IOCPage5_t, MPI_POINTER pIOCPage5_t;
1145
1146#define MPI_IOCPAGE5_PAGEVERSION (0x00)
1147
1148typedef struct _CONFIG_PAGE_IOC_6
1149{
1150 CONFIG_PAGE_HEADER Header;
1151 U32 CapabilitiesFlags;
1152 U8 MaxDrivesIS;
1153 U8 MaxDrivesIM;
1154 U8 MaxDrivesIME;
1155 U8 Reserved1;
1156 U8 MinDrivesIS;
1157 U8 MinDrivesIM;
1158 U8 MinDrivesIME;
1159 U8 Reserved2;
1160 U8 MaxGlobalHotSpares;
1161 U8 Reserved3;
1162 U16 Reserved4;
1163 U32 Reserved5;
1164 U32 SupportedStripeSizeMapIS;
1165 U32 SupportedStripeSizeMapIME;
1166 U32 Reserved6;
1167 U8 MetadataSize;
1168 U8 Reserved7;
1169 U16 Reserved8;
1170 U16 MaxBadBlockTableEntries;
1171 U16 Reserved9;
1172 U16 IRNvsramUsage;
1173 U16 Reserved10;
1174 U32 IRNvsramVersion;
1175 U32 Reserved11;
1176 U32 Reserved12;
1177} CONFIG_PAGE_IOC_6, MPI_POINTER PTR_CONFIG_PAGE_IOC_6,
1178 IOCPage6_t, MPI_POINTER pIOCPage6_t;
1179
1180#define MPI_IOCPAGE6_PAGEVERSION (0x01)
1181
1182
1183
1184#define MPI_IOCPAGE6_CAP_FLAGS_SSD_SUPPORT (0x00000020)
1185#define MPI_IOCPAGE6_CAP_FLAGS_MULTIPORT_DRIVE_SUPPORT (0x00000010)
1186#define MPI_IOCPAGE6_CAP_FLAGS_DISABLE_SMART_POLLING (0x00000008)
1187
1188#define MPI_IOCPAGE6_CAP_FLAGS_MASK_METADATA_SIZE (0x00000006)
1189#define MPI_IOCPAGE6_CAP_FLAGS_64MB_METADATA_SIZE (0x00000000)
1190#define MPI_IOCPAGE6_CAP_FLAGS_512MB_METADATA_SIZE (0x00000002)
1191
1192#define MPI_IOCPAGE6_CAP_FLAGS_GLOBAL_HOT_SPARE (0x00000001)
1193
1194
1195
1196
1197
1198
1199typedef struct _CONFIG_PAGE_BIOS_1
1200{
1201 CONFIG_PAGE_HEADER Header;
1202 U32 BiosOptions;
1203 U32 IOCSettings;
1204 U32 Reserved1;
1205 U32 DeviceSettings;
1206 U16 NumberOfDevices;
1207 U8 ExpanderSpinup;
1208 U8 Reserved2;
1209 U16 IOTimeoutBlockDevicesNonRM;
1210 U16 IOTimeoutSequential;
1211 U16 IOTimeoutOther;
1212 U16 IOTimeoutBlockDevicesRM;
1213} CONFIG_PAGE_BIOS_1, MPI_POINTER PTR_CONFIG_PAGE_BIOS_1,
1214 BIOSPage1_t, MPI_POINTER pBIOSPage1_t;
1215
1216#define MPI_BIOSPAGE1_PAGEVERSION (0x03)
1217
1218
1219#define MPI_BIOSPAGE1_OPTIONS_SPI_ENABLE (0x00000400)
1220#define MPI_BIOSPAGE1_OPTIONS_FC_ENABLE (0x00000200)
1221#define MPI_BIOSPAGE1_OPTIONS_SAS_ENABLE (0x00000100)
1222#define MPI_BIOSPAGE1_OPTIONS_DISABLE_BIOS (0x00000001)
1223
1224
1225#define MPI_BIOSPAGE1_IOCSET_MASK_INITIAL_SPINUP_DELAY (0x0F000000)
1226#define MPI_BIOSPAGE1_IOCSET_SHIFT_INITIAL_SPINUP_DELAY (24)
1227
1228#define MPI_BIOSPAGE1_IOCSET_MASK_PORT_ENABLE_DELAY (0x00F00000)
1229#define MPI_BIOSPAGE1_IOCSET_SHIFT_PORT_ENABLE_DELAY (20)
1230
1231#define MPI_BIOSPAGE1_IOCSET_AUTO_PORT_ENABLE (0x00080000)
1232#define MPI_BIOSPAGE1_IOCSET_DIRECT_ATTACH_SPINUP_MODE (0x00040000)
1233
1234#define MPI_BIOSPAGE1_IOCSET_MASK_BOOT_PREFERENCE (0x00030000)
1235#define MPI_BIOSPAGE1_IOCSET_ENCLOSURE_SLOT_BOOT (0x00000000)
1236#define MPI_BIOSPAGE1_IOCSET_SAS_ADDRESS_BOOT (0x00010000)
1237
1238#define MPI_BIOSPAGE1_IOCSET_MASK_MAX_TARGET_SPIN_UP (0x0000F000)
1239#define MPI_BIOSPAGE1_IOCSET_SHIFT_MAX_TARGET_SPIN_UP (12)
1240
1241#define MPI_BIOSPAGE1_IOCSET_MASK_SPINUP_DELAY (0x00000F00)
1242#define MPI_BIOSPAGE1_IOCSET_SHIFT_SPINUP_DELAY (8)
1243
1244#define MPI_BIOSPAGE1_IOCSET_MASK_RM_SETTING (0x000000C0)
1245#define MPI_BIOSPAGE1_IOCSET_NONE_RM_SETTING (0x00000000)
1246#define MPI_BIOSPAGE1_IOCSET_BOOT_RM_SETTING (0x00000040)
1247#define MPI_BIOSPAGE1_IOCSET_MEDIA_RM_SETTING (0x00000080)
1248
1249#define MPI_BIOSPAGE1_IOCSET_MASK_ADAPTER_SUPPORT (0x00000030)
1250#define MPI_BIOSPAGE1_IOCSET_NO_SUPPORT (0x00000000)
1251#define MPI_BIOSPAGE1_IOCSET_BIOS_SUPPORT (0x00000010)
1252#define MPI_BIOSPAGE1_IOCSET_OS_SUPPORT (0x00000020)
1253#define MPI_BIOSPAGE1_IOCSET_ALL_SUPPORT (0x00000030)
1254
1255#define MPI_BIOSPAGE1_IOCSET_ALTERNATE_CHS (0x00000008)
1256
1257
1258#define MPI_BIOSPAGE1_DEVSET_DISABLE_SMART_POLLING (0x00000010)
1259#define MPI_BIOSPAGE1_DEVSET_DISABLE_SEQ_LUN (0x00000008)
1260#define MPI_BIOSPAGE1_DEVSET_DISABLE_RM_LUN (0x00000004)
1261#define MPI_BIOSPAGE1_DEVSET_DISABLE_NON_RM_LUN (0x00000002)
1262#define MPI_BIOSPAGE1_DEVSET_DISABLE_OTHER_LUN (0x00000001)
1263
1264
1265#define MPI_BIOSPAGE1_EXPSPINUP_MASK_MAX_TARGET (0xF0)
1266#define MPI_BIOSPAGE1_EXPSPINUP_SHIFT_MAX_TARGET (4)
1267#define MPI_BIOSPAGE1_EXPSPINUP_MASK_DELAY (0x0F)
1268
1269typedef struct _MPI_BOOT_DEVICE_ADAPTER_ORDER
1270{
1271 U32 Reserved1;
1272 U32 Reserved2;
1273 U32 Reserved3;
1274 U32 Reserved4;
1275 U32 Reserved5;
1276 U32 Reserved6;
1277 U32 Reserved7;
1278 U32 Reserved8;
1279 U32 Reserved9;
1280 U32 Reserved10;
1281 U32 Reserved11;
1282 U32 Reserved12;
1283 U32 Reserved13;
1284 U32 Reserved14;
1285 U32 Reserved15;
1286 U32 Reserved16;
1287 U32 Reserved17;
1288} MPI_BOOT_DEVICE_ADAPTER_ORDER, MPI_POINTER PTR_MPI_BOOT_DEVICE_ADAPTER_ORDER;
1289
1290typedef struct _MPI_BOOT_DEVICE_ADAPTER_NUMBER
1291{
1292 U8 TargetID;
1293 U8 Bus;
1294 U8 AdapterNumber;
1295 U8 Reserved1;
1296 U32 Reserved2;
1297 U32 Reserved3;
1298 U32 Reserved4;
1299 U8 LUN[8];
1300 U32 Reserved5;
1301 U32 Reserved6;
1302 U32 Reserved7;
1303 U32 Reserved8;
1304 U32 Reserved9;
1305 U32 Reserved10;
1306 U32 Reserved11;
1307 U32 Reserved12;
1308 U32 Reserved13;
1309 U32 Reserved14;
1310 U32 Reserved15;
1311} MPI_BOOT_DEVICE_ADAPTER_NUMBER, MPI_POINTER PTR_MPI_BOOT_DEVICE_ADAPTER_NUMBER;
1312
1313typedef struct _MPI_BOOT_DEVICE_PCI_ADDRESS
1314{
1315 U8 TargetID;
1316 U8 Bus;
1317 U16 PCIAddress;
1318 U32 Reserved1;
1319 U32 Reserved2;
1320 U32 Reserved3;
1321 U8 LUN[8];
1322 U32 Reserved4;
1323 U32 Reserved5;
1324 U32 Reserved6;
1325 U32 Reserved7;
1326 U32 Reserved8;
1327 U32 Reserved9;
1328 U32 Reserved10;
1329 U32 Reserved11;
1330 U32 Reserved12;
1331 U32 Reserved13;
1332 U32 Reserved14;
1333} MPI_BOOT_DEVICE_PCI_ADDRESS, MPI_POINTER PTR_MPI_BOOT_DEVICE_PCI_ADDRESS;
1334
1335typedef struct _MPI_BOOT_DEVICE_SLOT_NUMBER
1336{
1337 U8 TargetID;
1338 U8 Bus;
1339 U8 PCISlotNumber;
1340 U8 Reserved1;
1341 U32 Reserved2;
1342 U32 Reserved3;
1343 U32 Reserved4;
1344 U8 LUN[8];
1345 U32 Reserved5;
1346 U32 Reserved6;
1347 U32 Reserved7;
1348 U32 Reserved8;
1349 U32 Reserved9;
1350 U32 Reserved10;
1351 U32 Reserved11;
1352 U32 Reserved12;
1353 U32 Reserved13;
1354 U32 Reserved14;
1355 U32 Reserved15;
1356} MPI_BOOT_DEVICE_PCI_SLOT_NUMBER, MPI_POINTER PTR_MPI_BOOT_DEVICE_PCI_SLOT_NUMBER;
1357
1358typedef struct _MPI_BOOT_DEVICE_FC_WWN
1359{
1360 U64 WWPN;
1361 U32 Reserved1;
1362 U32 Reserved2;
1363 U8 LUN[8];
1364 U32 Reserved3;
1365 U32 Reserved4;
1366 U32 Reserved5;
1367 U32 Reserved6;
1368 U32 Reserved7;
1369 U32 Reserved8;
1370 U32 Reserved9;
1371 U32 Reserved10;
1372 U32 Reserved11;
1373 U32 Reserved12;
1374 U32 Reserved13;
1375} MPI_BOOT_DEVICE_FC_WWN, MPI_POINTER PTR_MPI_BOOT_DEVICE_FC_WWN;
1376
1377typedef struct _MPI_BOOT_DEVICE_SAS_WWN
1378{
1379 U64 SASAddress;
1380 U32 Reserved1;
1381 U32 Reserved2;
1382 U8 LUN[8];
1383 U32 Reserved3;
1384 U32 Reserved4;
1385 U32 Reserved5;
1386 U32 Reserved6;
1387 U32 Reserved7;
1388 U32 Reserved8;
1389 U32 Reserved9;
1390 U32 Reserved10;
1391 U32 Reserved11;
1392 U32 Reserved12;
1393 U32 Reserved13;
1394} MPI_BOOT_DEVICE_SAS_WWN, MPI_POINTER PTR_MPI_BOOT_DEVICE_SAS_WWN;
1395
1396typedef struct _MPI_BOOT_DEVICE_ENCLOSURE_SLOT
1397{
1398 U64 EnclosureLogicalID;
1399 U32 Reserved1;
1400 U32 Reserved2;
1401 U8 LUN[8];
1402 U16 SlotNumber;
1403 U16 Reserved3;
1404 U32 Reserved4;
1405 U32 Reserved5;
1406 U32 Reserved6;
1407 U32 Reserved7;
1408 U32 Reserved8;
1409 U32 Reserved9;
1410 U32 Reserved10;
1411 U32 Reserved11;
1412 U32 Reserved12;
1413 U32 Reserved13;
1414} MPI_BOOT_DEVICE_ENCLOSURE_SLOT,
1415 MPI_POINTER PTR_MPI_BOOT_DEVICE_ENCLOSURE_SLOT;
1416
1417typedef union _MPI_BIOSPAGE2_BOOT_DEVICE
1418{
1419 MPI_BOOT_DEVICE_ADAPTER_ORDER AdapterOrder;
1420 MPI_BOOT_DEVICE_ADAPTER_NUMBER AdapterNumber;
1421 MPI_BOOT_DEVICE_PCI_ADDRESS PCIAddress;
1422 MPI_BOOT_DEVICE_PCI_SLOT_NUMBER PCISlotNumber;
1423 MPI_BOOT_DEVICE_FC_WWN FcWwn;
1424 MPI_BOOT_DEVICE_SAS_WWN SasWwn;
1425 MPI_BOOT_DEVICE_ENCLOSURE_SLOT EnclosureSlot;
1426} MPI_BIOSPAGE2_BOOT_DEVICE, MPI_POINTER PTR_MPI_BIOSPAGE2_BOOT_DEVICE;
1427
1428typedef struct _CONFIG_PAGE_BIOS_2
1429{
1430 CONFIG_PAGE_HEADER Header;
1431 U32 Reserved1;
1432 U32 Reserved2;
1433 U32 Reserved3;
1434 U32 Reserved4;
1435 U32 Reserved5;
1436 U32 Reserved6;
1437 U8 BootDeviceForm;
1438 U8 PrevBootDeviceForm;
1439 U16 Reserved8;
1440 MPI_BIOSPAGE2_BOOT_DEVICE BootDevice;
1441} CONFIG_PAGE_BIOS_2, MPI_POINTER PTR_CONFIG_PAGE_BIOS_2,
1442 BIOSPage2_t, MPI_POINTER pBIOSPage2_t;
1443
1444#define MPI_BIOSPAGE2_PAGEVERSION (0x02)
1445
1446#define MPI_BIOSPAGE2_FORM_MASK (0x0F)
1447#define MPI_BIOSPAGE2_FORM_ADAPTER_ORDER (0x00)
1448#define MPI_BIOSPAGE2_FORM_ADAPTER_NUMBER (0x01)
1449#define MPI_BIOSPAGE2_FORM_PCI_ADDRESS (0x02)
1450#define MPI_BIOSPAGE2_FORM_PCI_SLOT_NUMBER (0x03)
1451#define MPI_BIOSPAGE2_FORM_FC_WWN (0x04)
1452#define MPI_BIOSPAGE2_FORM_SAS_WWN (0x05)
1453#define MPI_BIOSPAGE2_FORM_ENCLOSURE_SLOT (0x06)
1454
1455typedef struct _CONFIG_PAGE_BIOS_4
1456{
1457 CONFIG_PAGE_HEADER Header;
1458 U64 ReassignmentBaseWWID;
1459} CONFIG_PAGE_BIOS_4, MPI_POINTER PTR_CONFIG_PAGE_BIOS_4,
1460 BIOSPage4_t, MPI_POINTER pBIOSPage4_t;
1461
1462#define MPI_BIOSPAGE4_PAGEVERSION (0x00)
1463
1464
1465
1466
1467
1468
1469typedef struct _CONFIG_PAGE_SCSI_PORT_0
1470{
1471 CONFIG_PAGE_HEADER Header;
1472 U32 Capabilities;
1473 U32 PhysicalInterface;
1474} CONFIG_PAGE_SCSI_PORT_0, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_0,
1475 SCSIPortPage0_t, MPI_POINTER pSCSIPortPage0_t;
1476
1477#define MPI_SCSIPORTPAGE0_PAGEVERSION (0x02)
1478
1479#define MPI_SCSIPORTPAGE0_CAP_IU (0x00000001)
1480#define MPI_SCSIPORTPAGE0_CAP_DT (0x00000002)
1481#define MPI_SCSIPORTPAGE0_CAP_QAS (0x00000004)
1482#define MPI_SCSIPORTPAGE0_CAP_MIN_SYNC_PERIOD_MASK (0x0000FF00)
1483#define MPI_SCSIPORTPAGE0_SYNC_ASYNC (0x00)
1484#define MPI_SCSIPORTPAGE0_SYNC_5 (0x32)
1485#define MPI_SCSIPORTPAGE0_SYNC_10 (0x19)
1486#define MPI_SCSIPORTPAGE0_SYNC_20 (0x0C)
1487#define MPI_SCSIPORTPAGE0_SYNC_33_33 (0x0B)
1488#define MPI_SCSIPORTPAGE0_SYNC_40 (0x0A)
1489#define MPI_SCSIPORTPAGE0_SYNC_80 (0x09)
1490#define MPI_SCSIPORTPAGE0_SYNC_160 (0x08)
1491#define MPI_SCSIPORTPAGE0_SYNC_UNKNOWN (0xFF)
1492
1493#define MPI_SCSIPORTPAGE0_CAP_SHIFT_MIN_SYNC_PERIOD (8)
1494#define MPI_SCSIPORTPAGE0_CAP_GET_MIN_SYNC_PERIOD(Cap) \
1495 ( ((Cap) & MPI_SCSIPORTPAGE0_CAP_MIN_SYNC_PERIOD_MASK) \
1496 >> MPI_SCSIPORTPAGE0_CAP_SHIFT_MIN_SYNC_PERIOD \
1497 )
1498#define MPI_SCSIPORTPAGE0_CAP_MAX_SYNC_OFFSET_MASK (0x00FF0000)
1499#define MPI_SCSIPORTPAGE0_CAP_SHIFT_MAX_SYNC_OFFSET (16)
1500#define MPI_SCSIPORTPAGE0_CAP_GET_MAX_SYNC_OFFSET(Cap) \
1501 ( ((Cap) & MPI_SCSIPORTPAGE0_CAP_MAX_SYNC_OFFSET_MASK) \
1502 >> MPI_SCSIPORTPAGE0_CAP_SHIFT_MAX_SYNC_OFFSET \
1503 )
1504#define MPI_SCSIPORTPAGE0_CAP_IDP (0x08000000)
1505#define MPI_SCSIPORTPAGE0_CAP_WIDE (0x20000000)
1506#define MPI_SCSIPORTPAGE0_CAP_AIP (0x80000000)
1507
1508#define MPI_SCSIPORTPAGE0_PHY_SIGNAL_TYPE_MASK (0x00000003)
1509#define MPI_SCSIPORTPAGE0_PHY_SIGNAL_HVD (0x01)
1510#define MPI_SCSIPORTPAGE0_PHY_SIGNAL_SE (0x02)
1511#define MPI_SCSIPORTPAGE0_PHY_SIGNAL_LVD (0x03)
1512#define MPI_SCSIPORTPAGE0_PHY_MASK_CONNECTED_ID (0xFF000000)
1513#define MPI_SCSIPORTPAGE0_PHY_SHIFT_CONNECTED_ID (24)
1514#define MPI_SCSIPORTPAGE0_PHY_BUS_FREE_CONNECTED_ID (0xFE)
1515#define MPI_SCSIPORTPAGE0_PHY_UNKNOWN_CONNECTED_ID (0xFF)
1516
1517
1518typedef struct _CONFIG_PAGE_SCSI_PORT_1
1519{
1520 CONFIG_PAGE_HEADER Header;
1521 U32 Configuration;
1522 U32 OnBusTimerValue;
1523 U8 TargetConfig;
1524 U8 Reserved1;
1525 U16 IDConfig;
1526} CONFIG_PAGE_SCSI_PORT_1, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_1,
1527 SCSIPortPage1_t, MPI_POINTER pSCSIPortPage1_t;
1528
1529#define MPI_SCSIPORTPAGE1_PAGEVERSION (0x03)
1530
1531
1532#define MPI_SCSIPORTPAGE1_CFG_PORT_SCSI_ID_MASK (0x000000FF)
1533#define MPI_SCSIPORTPAGE1_CFG_PORT_RESPONSE_ID_MASK (0xFFFF0000)
1534#define MPI_SCSIPORTPAGE1_CFG_SHIFT_PORT_RESPONSE_ID (16)
1535
1536
1537#define MPI_SCSIPORTPAGE1_TARGCONFIG_TARG_ONLY (0x01)
1538#define MPI_SCSIPORTPAGE1_TARGCONFIG_INIT_TARG (0x02)
1539
1540
1541typedef struct _MPI_DEVICE_INFO
1542{
1543 U8 Timeout;
1544 U8 SyncFactor;
1545 U16 DeviceFlags;
1546} MPI_DEVICE_INFO, MPI_POINTER PTR_MPI_DEVICE_INFO,
1547 MpiDeviceInfo_t, MPI_POINTER pMpiDeviceInfo_t;
1548
1549typedef struct _CONFIG_PAGE_SCSI_PORT_2
1550{
1551 CONFIG_PAGE_HEADER Header;
1552 U32 PortFlags;
1553 U32 PortSettings;
1554 MPI_DEVICE_INFO DeviceSettings[16];
1555} CONFIG_PAGE_SCSI_PORT_2, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_2,
1556 SCSIPortPage2_t, MPI_POINTER pSCSIPortPage2_t;
1557
1558#define MPI_SCSIPORTPAGE2_PAGEVERSION (0x02)
1559
1560
1561#define MPI_SCSIPORTPAGE2_PORT_FLAGS_SCAN_HIGH_TO_LOW (0x00000001)
1562#define MPI_SCSIPORTPAGE2_PORT_FLAGS_AVOID_SCSI_RESET (0x00000004)
1563#define MPI_SCSIPORTPAGE2_PORT_FLAGS_ALTERNATE_CHS (0x00000008)
1564#define MPI_SCSIPORTPAGE2_PORT_FLAGS_TERMINATION_DISABLE (0x00000010)
1565
1566#define MPI_SCSIPORTPAGE2_PORT_FLAGS_DV_MASK (0x00000060)
1567#define MPI_SCSIPORTPAGE2_PORT_FLAGS_FULL_DV (0x00000000)
1568#define MPI_SCSIPORTPAGE2_PORT_FLAGS_BASIC_DV_ONLY (0x00000020)
1569#define MPI_SCSIPORTPAGE2_PORT_FLAGS_OFF_DV (0x00000060)
1570
1571
1572
1573#define MPI_SCSIPORTPAGE2_PORT_HOST_ID_MASK (0x0000000F)
1574#define MPI_SCSIPORTPAGE2_PORT_MASK_INIT_HBA (0x00000030)
1575#define MPI_SCSIPORTPAGE2_PORT_DISABLE_INIT_HBA (0x00000000)
1576#define MPI_SCSIPORTPAGE2_PORT_BIOS_INIT_HBA (0x00000010)
1577#define MPI_SCSIPORTPAGE2_PORT_OS_INIT_HBA (0x00000020)
1578#define MPI_SCSIPORTPAGE2_PORT_BIOS_OS_INIT_HBA (0x00000030)
1579#define MPI_SCSIPORTPAGE2_PORT_REMOVABLE_MEDIA (0x000000C0)
1580#define MPI_SCSIPORTPAGE2_PORT_RM_NONE (0x00000000)
1581#define MPI_SCSIPORTPAGE2_PORT_RM_BOOT_ONLY (0x00000040)
1582#define MPI_SCSIPORTPAGE2_PORT_RM_WITH_MEDIA (0x00000080)
1583#define MPI_SCSIPORTPAGE2_PORT_SPINUP_DELAY_MASK (0x00000F00)
1584#define MPI_SCSIPORTPAGE2_PORT_SHIFT_SPINUP_DELAY (8)
1585#define MPI_SCSIPORTPAGE2_PORT_MASK_NEGO_MASTER_SETTINGS (0x00003000)
1586#define MPI_SCSIPORTPAGE2_PORT_NEGO_MASTER_SETTINGS (0x00000000)
1587#define MPI_SCSIPORTPAGE2_PORT_NONE_MASTER_SETTINGS (0x00001000)
1588#define MPI_SCSIPORTPAGE2_PORT_ALL_MASTER_SETTINGS (0x00003000)
1589
1590#define MPI_SCSIPORTPAGE2_DEVICE_DISCONNECT_ENABLE (0x0001)
1591#define MPI_SCSIPORTPAGE2_DEVICE_ID_SCAN_ENABLE (0x0002)
1592#define MPI_SCSIPORTPAGE2_DEVICE_LUN_SCAN_ENABLE (0x0004)
1593#define MPI_SCSIPORTPAGE2_DEVICE_TAG_QUEUE_ENABLE (0x0008)
1594#define MPI_SCSIPORTPAGE2_DEVICE_WIDE_DISABLE (0x0010)
1595#define MPI_SCSIPORTPAGE2_DEVICE_BOOT_CHOICE (0x0020)
1596
1597
1598
1599
1600
1601
1602typedef struct _CONFIG_PAGE_SCSI_DEVICE_0
1603{
1604 CONFIG_PAGE_HEADER Header;
1605 U32 NegotiatedParameters;
1606 U32 Information;
1607} CONFIG_PAGE_SCSI_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_0,
1608 SCSIDevicePage0_t, MPI_POINTER pSCSIDevicePage0_t;
1609
1610#define MPI_SCSIDEVPAGE0_PAGEVERSION (0x04)
1611
1612#define MPI_SCSIDEVPAGE0_NP_IU (0x00000001)
1613#define MPI_SCSIDEVPAGE0_NP_DT (0x00000002)
1614#define MPI_SCSIDEVPAGE0_NP_QAS (0x00000004)
1615#define MPI_SCSIDEVPAGE0_NP_HOLD_MCS (0x00000008)
1616#define MPI_SCSIDEVPAGE0_NP_WR_FLOW (0x00000010)
1617#define MPI_SCSIDEVPAGE0_NP_RD_STRM (0x00000020)
1618#define MPI_SCSIDEVPAGE0_NP_RTI (0x00000040)
1619#define MPI_SCSIDEVPAGE0_NP_PCOMP_EN (0x00000080)
1620#define MPI_SCSIDEVPAGE0_NP_NEG_SYNC_PERIOD_MASK (0x0000FF00)
1621#define MPI_SCSIDEVPAGE0_NP_SHIFT_SYNC_PERIOD (8)
1622#define MPI_SCSIDEVPAGE0_NP_NEG_SYNC_OFFSET_MASK (0x00FF0000)
1623#define MPI_SCSIDEVPAGE0_NP_SHIFT_SYNC_OFFSET (16)
1624#define MPI_SCSIDEVPAGE0_NP_IDP (0x08000000)
1625#define MPI_SCSIDEVPAGE0_NP_WIDE (0x20000000)
1626#define MPI_SCSIDEVPAGE0_NP_AIP (0x80000000)
1627
1628#define MPI_SCSIDEVPAGE0_INFO_PARAMS_NEGOTIATED (0x00000001)
1629#define MPI_SCSIDEVPAGE0_INFO_SDTR_REJECTED (0x00000002)
1630#define MPI_SCSIDEVPAGE0_INFO_WDTR_REJECTED (0x00000004)
1631#define MPI_SCSIDEVPAGE0_INFO_PPR_REJECTED (0x00000008)
1632
1633
1634typedef struct _CONFIG_PAGE_SCSI_DEVICE_1
1635{
1636 CONFIG_PAGE_HEADER Header;
1637 U32 RequestedParameters;
1638 U32 Reserved;
1639 U32 Configuration;
1640} CONFIG_PAGE_SCSI_DEVICE_1, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_1,
1641 SCSIDevicePage1_t, MPI_POINTER pSCSIDevicePage1_t;
1642
1643#define MPI_SCSIDEVPAGE1_PAGEVERSION (0x05)
1644
1645#define MPI_SCSIDEVPAGE1_RP_IU (0x00000001)
1646#define MPI_SCSIDEVPAGE1_RP_DT (0x00000002)
1647#define MPI_SCSIDEVPAGE1_RP_QAS (0x00000004)
1648#define MPI_SCSIDEVPAGE1_RP_HOLD_MCS (0x00000008)
1649#define MPI_SCSIDEVPAGE1_RP_WR_FLOW (0x00000010)
1650#define MPI_SCSIDEVPAGE1_RP_RD_STRM (0x00000020)
1651#define MPI_SCSIDEVPAGE1_RP_RTI (0x00000040)
1652#define MPI_SCSIDEVPAGE1_RP_PCOMP_EN (0x00000080)
1653#define MPI_SCSIDEVPAGE1_RP_MIN_SYNC_PERIOD_MASK (0x0000FF00)
1654#define MPI_SCSIDEVPAGE1_RP_SHIFT_MIN_SYNC_PERIOD (8)
1655#define MPI_SCSIDEVPAGE1_RP_MAX_SYNC_OFFSET_MASK (0x00FF0000)
1656#define MPI_SCSIDEVPAGE1_RP_SHIFT_MAX_SYNC_OFFSET (16)
1657#define MPI_SCSIDEVPAGE1_RP_IDP (0x08000000)
1658#define MPI_SCSIDEVPAGE1_RP_WIDE (0x20000000)
1659#define MPI_SCSIDEVPAGE1_RP_AIP (0x80000000)
1660
1661#define MPI_SCSIDEVPAGE1_CONF_WDTR_DISALLOWED (0x00000002)
1662#define MPI_SCSIDEVPAGE1_CONF_SDTR_DISALLOWED (0x00000004)
1663#define MPI_SCSIDEVPAGE1_CONF_EXTENDED_PARAMS_ENABLE (0x00000008)
1664#define MPI_SCSIDEVPAGE1_CONF_FORCE_PPR_MSG (0x00000010)
1665
1666
1667typedef struct _CONFIG_PAGE_SCSI_DEVICE_2
1668{
1669 CONFIG_PAGE_HEADER Header;
1670 U32 DomainValidation;
1671 U32 ParityPipeSelect;
1672 U32 DataPipeSelect;
1673} CONFIG_PAGE_SCSI_DEVICE_2, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_2,
1674 SCSIDevicePage2_t, MPI_POINTER pSCSIDevicePage2_t;
1675
1676#define MPI_SCSIDEVPAGE2_PAGEVERSION (0x01)
1677
1678#define MPI_SCSIDEVPAGE2_DV_ISI_ENABLE (0x00000010)
1679#define MPI_SCSIDEVPAGE2_DV_SECONDARY_DRIVER_ENABLE (0x00000020)
1680#define MPI_SCSIDEVPAGE2_DV_SLEW_RATE_CTRL (0x00000380)
1681#define MPI_SCSIDEVPAGE2_DV_PRIM_DRIVE_STR_CTRL (0x00001C00)
1682#define MPI_SCSIDEVPAGE2_DV_SECOND_DRIVE_STR_CTRL (0x0000E000)
1683#define MPI_SCSIDEVPAGE2_DV_XCLKH_ST (0x10000000)
1684#define MPI_SCSIDEVPAGE2_DV_XCLKS_ST (0x20000000)
1685#define MPI_SCSIDEVPAGE2_DV_XCLKH_DT (0x40000000)
1686#define MPI_SCSIDEVPAGE2_DV_XCLKS_DT (0x80000000)
1687
1688#define MPI_SCSIDEVPAGE2_PPS_PPS_MASK (0x00000003)
1689
1690#define MPI_SCSIDEVPAGE2_DPS_BIT_0_PL_SELECT_MASK (0x00000003)
1691#define MPI_SCSIDEVPAGE2_DPS_BIT_1_PL_SELECT_MASK (0x0000000C)
1692#define MPI_SCSIDEVPAGE2_DPS_BIT_2_PL_SELECT_MASK (0x00000030)
1693#define MPI_SCSIDEVPAGE2_DPS_BIT_3_PL_SELECT_MASK (0x000000C0)
1694#define MPI_SCSIDEVPAGE2_DPS_BIT_4_PL_SELECT_MASK (0x00000300)
1695#define MPI_SCSIDEVPAGE2_DPS_BIT_5_PL_SELECT_MASK (0x00000C00)
1696#define MPI_SCSIDEVPAGE2_DPS_BIT_6_PL_SELECT_MASK (0x00003000)
1697#define MPI_SCSIDEVPAGE2_DPS_BIT_7_PL_SELECT_MASK (0x0000C000)
1698#define MPI_SCSIDEVPAGE2_DPS_BIT_8_PL_SELECT_MASK (0x00030000)
1699#define MPI_SCSIDEVPAGE2_DPS_BIT_9_PL_SELECT_MASK (0x000C0000)
1700#define MPI_SCSIDEVPAGE2_DPS_BIT_10_PL_SELECT_MASK (0x00300000)
1701#define MPI_SCSIDEVPAGE2_DPS_BIT_11_PL_SELECT_MASK (0x00C00000)
1702#define MPI_SCSIDEVPAGE2_DPS_BIT_12_PL_SELECT_MASK (0x03000000)
1703#define MPI_SCSIDEVPAGE2_DPS_BIT_13_PL_SELECT_MASK (0x0C000000)
1704#define MPI_SCSIDEVPAGE2_DPS_BIT_14_PL_SELECT_MASK (0x30000000)
1705#define MPI_SCSIDEVPAGE2_DPS_BIT_15_PL_SELECT_MASK (0xC0000000)
1706
1707
1708typedef struct _CONFIG_PAGE_SCSI_DEVICE_3
1709{
1710 CONFIG_PAGE_HEADER Header;
1711 U16 MsgRejectCount;
1712 U16 PhaseErrorCount;
1713 U16 ParityErrorCount;
1714 U16 Reserved;
1715} CONFIG_PAGE_SCSI_DEVICE_3, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_3,
1716 SCSIDevicePage3_t, MPI_POINTER pSCSIDevicePage3_t;
1717
1718#define MPI_SCSIDEVPAGE3_PAGEVERSION (0x00)
1719
1720#define MPI_SCSIDEVPAGE3_MAX_COUNTER (0xFFFE)
1721#define MPI_SCSIDEVPAGE3_UNSUPPORTED_COUNTER (0xFFFF)
1722
1723
1724
1725
1726
1727
1728typedef struct _CONFIG_PAGE_FC_PORT_0
1729{
1730 CONFIG_PAGE_HEADER Header;
1731 U32 Flags;
1732 U8 MPIPortNumber;
1733 U8 LinkType;
1734 U8 PortState;
1735 U8 Reserved;
1736 U32 PortIdentifier;
1737 U64 WWNN;
1738 U64 WWPN;
1739 U32 SupportedServiceClass;
1740 U32 SupportedSpeeds;
1741 U32 CurrentSpeed;
1742 U32 MaxFrameSize;
1743 U64 FabricWWNN;
1744 U64 FabricWWPN;
1745 U32 DiscoveredPortsCount;
1746 U32 MaxInitiators;
1747 U8 MaxAliasesSupported;
1748 U8 MaxHardAliasesSupported;
1749 U8 NumCurrentAliases;
1750 U8 Reserved1;
1751} CONFIG_PAGE_FC_PORT_0, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_0,
1752 FCPortPage0_t, MPI_POINTER pFCPortPage0_t;
1753
1754#define MPI_FCPORTPAGE0_PAGEVERSION (0x02)
1755
1756#define MPI_FCPORTPAGE0_FLAGS_PROT_MASK (0x0000000F)
1757#define MPI_FCPORTPAGE0_FLAGS_PROT_FCP_INIT (MPI_PORTFACTS_PROTOCOL_INITIATOR)
1758#define MPI_FCPORTPAGE0_FLAGS_PROT_FCP_TARG (MPI_PORTFACTS_PROTOCOL_TARGET)
1759#define MPI_FCPORTPAGE0_FLAGS_PROT_LAN (MPI_PORTFACTS_PROTOCOL_LAN)
1760#define MPI_FCPORTPAGE0_FLAGS_PROT_LOGBUSADDR (MPI_PORTFACTS_PROTOCOL_LOGBUSADDR)
1761
1762#define MPI_FCPORTPAGE0_FLAGS_ALIAS_ALPA_SUPPORTED (0x00000010)
1763#define MPI_FCPORTPAGE0_FLAGS_ALIAS_WWN_SUPPORTED (0x00000020)
1764#define MPI_FCPORTPAGE0_FLAGS_FABRIC_WWN_VALID (0x00000040)
1765
1766#define MPI_FCPORTPAGE0_FLAGS_ATTACH_TYPE_MASK (0x00000F00)
1767#define MPI_FCPORTPAGE0_FLAGS_ATTACH_NO_INIT (0x00000000)
1768#define MPI_FCPORTPAGE0_FLAGS_ATTACH_POINT_TO_POINT (0x00000100)
1769#define MPI_FCPORTPAGE0_FLAGS_ATTACH_PRIVATE_LOOP (0x00000200)
1770#define MPI_FCPORTPAGE0_FLAGS_ATTACH_FABRIC_DIRECT (0x00000400)
1771#define MPI_FCPORTPAGE0_FLAGS_ATTACH_PUBLIC_LOOP (0x00000800)
1772
1773#define MPI_FCPORTPAGE0_LTYPE_RESERVED (0x00)
1774#define MPI_FCPORTPAGE0_LTYPE_OTHER (0x01)
1775#define MPI_FCPORTPAGE0_LTYPE_UNKNOWN (0x02)
1776#define MPI_FCPORTPAGE0_LTYPE_COPPER (0x03)
1777#define MPI_FCPORTPAGE0_LTYPE_SINGLE_1300 (0x04)
1778#define MPI_FCPORTPAGE0_LTYPE_SINGLE_1500 (0x05)
1779#define MPI_FCPORTPAGE0_LTYPE_50_LASER_MULTI (0x06)
1780#define MPI_FCPORTPAGE0_LTYPE_50_LED_MULTI (0x07)
1781#define MPI_FCPORTPAGE0_LTYPE_62_LASER_MULTI (0x08)
1782#define MPI_FCPORTPAGE0_LTYPE_62_LED_MULTI (0x09)
1783#define MPI_FCPORTPAGE0_LTYPE_MULTI_LONG_WAVE (0x0A)
1784#define MPI_FCPORTPAGE0_LTYPE_MULTI_SHORT_WAVE (0x0B)
1785#define MPI_FCPORTPAGE0_LTYPE_LASER_SHORT_WAVE (0x0C)
1786#define MPI_FCPORTPAGE0_LTYPE_LED_SHORT_WAVE (0x0D)
1787#define MPI_FCPORTPAGE0_LTYPE_1300_LONG_WAVE (0x0E)
1788#define MPI_FCPORTPAGE0_LTYPE_1500_LONG_WAVE (0x0F)
1789
1790#define MPI_FCPORTPAGE0_PORTSTATE_UNKNOWN (0x01)
1791#define MPI_FCPORTPAGE0_PORTSTATE_ONLINE (0x02)
1792#define MPI_FCPORTPAGE0_PORTSTATE_OFFLINE (0x03)
1793#define MPI_FCPORTPAGE0_PORTSTATE_BYPASSED (0x04)
1794#define MPI_FCPORTPAGE0_PORTSTATE_DIAGNOST (0x05)
1795#define MPI_FCPORTPAGE0_PORTSTATE_LINKDOWN (0x06)
1796#define MPI_FCPORTPAGE0_PORTSTATE_ERROR (0x07)
1797#define MPI_FCPORTPAGE0_PORTSTATE_LOOPBACK (0x08)
1798
1799#define MPI_FCPORTPAGE0_SUPPORT_CLASS_1 (0x00000001)
1800#define MPI_FCPORTPAGE0_SUPPORT_CLASS_2 (0x00000002)
1801#define MPI_FCPORTPAGE0_SUPPORT_CLASS_3 (0x00000004)
1802
1803#define MPI_FCPORTPAGE0_SUPPORT_SPEED_UKNOWN (0x00000000)
1804#define MPI_FCPORTPAGE0_SUPPORT_1GBIT_SPEED (0x00000001)
1805#define MPI_FCPORTPAGE0_SUPPORT_2GBIT_SPEED (0x00000002)
1806#define MPI_FCPORTPAGE0_SUPPORT_10GBIT_SPEED (0x00000004)
1807#define MPI_FCPORTPAGE0_SUPPORT_4GBIT_SPEED (0x00000008)
1808
1809#define MPI_FCPORTPAGE0_CURRENT_SPEED_UKNOWN MPI_FCPORTPAGE0_SUPPORT_SPEED_UKNOWN
1810#define MPI_FCPORTPAGE0_CURRENT_SPEED_1GBIT MPI_FCPORTPAGE0_SUPPORT_1GBIT_SPEED
1811#define MPI_FCPORTPAGE0_CURRENT_SPEED_2GBIT MPI_FCPORTPAGE0_SUPPORT_2GBIT_SPEED
1812#define MPI_FCPORTPAGE0_CURRENT_SPEED_10GBIT MPI_FCPORTPAGE0_SUPPORT_10GBIT_SPEED
1813#define MPI_FCPORTPAGE0_CURRENT_SPEED_4GBIT MPI_FCPORTPAGE0_SUPPORT_4GBIT_SPEED
1814#define MPI_FCPORTPAGE0_CURRENT_SPEED_NOT_NEGOTIATED (0x00008000)
1815
1816
1817typedef struct _CONFIG_PAGE_FC_PORT_1
1818{
1819 CONFIG_PAGE_HEADER Header;
1820 U32 Flags;
1821 U64 NoSEEPROMWWNN;
1822 U64 NoSEEPROMWWPN;
1823 U8 HardALPA;
1824 U8 LinkConfig;
1825 U8 TopologyConfig;
1826 U8 AltConnector;
1827 U8 NumRequestedAliases;
1828 U8 RR_TOV;
1829 U8 InitiatorDeviceTimeout;
1830 U8 InitiatorIoPendTimeout;
1831} CONFIG_PAGE_FC_PORT_1, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_1,
1832 FCPortPage1_t, MPI_POINTER pFCPortPage1_t;
1833
1834#define MPI_FCPORTPAGE1_PAGEVERSION (0x06)
1835
1836#define MPI_FCPORTPAGE1_FLAGS_EXT_FCP_STATUS_EN (0x08000000)
1837#define MPI_FCPORTPAGE1_FLAGS_IMMEDIATE_ERROR_REPLY (0x04000000)
1838#define MPI_FCPORTPAGE1_FLAGS_FORCE_USE_NOSEEPROM_WWNS (0x02000000)
1839#define MPI_FCPORTPAGE1_FLAGS_VERBOSE_RESCAN_EVENTS (0x01000000)
1840#define MPI_FCPORTPAGE1_FLAGS_TARGET_MODE_OXID (0x00800000)
1841#define MPI_FCPORTPAGE1_FLAGS_PORT_OFFLINE (0x00400000)
1842#define MPI_FCPORTPAGE1_FLAGS_SOFT_ALPA_FALLBACK (0x00200000)
1843#define MPI_FCPORTPAGE1_FLAGS_TARGET_LARGE_CDB_ENABLE (0x00000080)
1844#define MPI_FCPORTPAGE1_FLAGS_MASK_RR_TOV_UNITS (0x00000070)
1845#define MPI_FCPORTPAGE1_FLAGS_SUPPRESS_PROT_REG (0x00000008)
1846#define MPI_FCPORTPAGE1_FLAGS_PLOGI_ON_LOGO (0x00000004)
1847#define MPI_FCPORTPAGE1_FLAGS_MAINTAIN_LOGINS (0x00000002)
1848#define MPI_FCPORTPAGE1_FLAGS_SORT_BY_DID (0x00000001)
1849#define MPI_FCPORTPAGE1_FLAGS_SORT_BY_WWN (0x00000000)
1850
1851#define MPI_FCPORTPAGE1_FLAGS_PROT_MASK (0xF0000000)
1852#define MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT (28)
1853#define MPI_FCPORTPAGE1_FLAGS_PROT_FCP_INIT ((U32)MPI_PORTFACTS_PROTOCOL_INITIATOR << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1854#define MPI_FCPORTPAGE1_FLAGS_PROT_FCP_TARG ((U32)MPI_PORTFACTS_PROTOCOL_TARGET << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1855#define MPI_FCPORTPAGE1_FLAGS_PROT_LAN ((U32)MPI_PORTFACTS_PROTOCOL_LAN << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1856#define MPI_FCPORTPAGE1_FLAGS_PROT_LOGBUSADDR ((U32)MPI_PORTFACTS_PROTOCOL_LOGBUSADDR << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1857
1858#define MPI_FCPORTPAGE1_FLAGS_NONE_RR_TOV_UNITS (0x00000000)
1859#define MPI_FCPORTPAGE1_FLAGS_THOUSANDTH_RR_TOV_UNITS (0x00000010)
1860#define MPI_FCPORTPAGE1_FLAGS_TENTH_RR_TOV_UNITS (0x00000030)
1861#define MPI_FCPORTPAGE1_FLAGS_TEN_RR_TOV_UNITS (0x00000050)
1862
1863#define MPI_FCPORTPAGE1_HARD_ALPA_NOT_USED (0xFF)
1864
1865#define MPI_FCPORTPAGE1_LCONFIG_SPEED_MASK (0x0F)
1866#define MPI_FCPORTPAGE1_LCONFIG_SPEED_1GIG (0x00)
1867#define MPI_FCPORTPAGE1_LCONFIG_SPEED_2GIG (0x01)
1868#define MPI_FCPORTPAGE1_LCONFIG_SPEED_4GIG (0x02)
1869#define MPI_FCPORTPAGE1_LCONFIG_SPEED_10GIG (0x03)
1870#define MPI_FCPORTPAGE1_LCONFIG_SPEED_AUTO (0x0F)
1871
1872#define MPI_FCPORTPAGE1_TOPOLOGY_MASK (0x0F)
1873#define MPI_FCPORTPAGE1_TOPOLOGY_NLPORT (0x01)
1874#define MPI_FCPORTPAGE1_TOPOLOGY_NPORT (0x02)
1875#define MPI_FCPORTPAGE1_TOPOLOGY_AUTO (0x0F)
1876
1877#define MPI_FCPORTPAGE1_ALT_CONN_UNKNOWN (0x00)
1878
1879#define MPI_FCPORTPAGE1_INITIATOR_DEV_TIMEOUT_MASK (0x7F)
1880#define MPI_FCPORTPAGE1_INITIATOR_DEV_UNIT_16 (0x80)
1881
1882
1883typedef struct _CONFIG_PAGE_FC_PORT_2
1884{
1885 CONFIG_PAGE_HEADER Header;
1886 U8 NumberActive;
1887 U8 ALPA[127];
1888} CONFIG_PAGE_FC_PORT_2, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_2,
1889 FCPortPage2_t, MPI_POINTER pFCPortPage2_t;
1890
1891#define MPI_FCPORTPAGE2_PAGEVERSION (0x01)
1892
1893
1894typedef struct _WWN_FORMAT
1895{
1896 U64 WWNN;
1897 U64 WWPN;
1898} WWN_FORMAT, MPI_POINTER PTR_WWN_FORMAT,
1899 WWNFormat, MPI_POINTER pWWNFormat;
1900
1901typedef union _FC_PORT_PERSISTENT_PHYSICAL_ID
1902{
1903 WWN_FORMAT WWN;
1904 U32 Did;
1905} FC_PORT_PERSISTENT_PHYSICAL_ID, MPI_POINTER PTR_FC_PORT_PERSISTENT_PHYSICAL_ID,
1906 PersistentPhysicalId_t, MPI_POINTER pPersistentPhysicalId_t;
1907
1908typedef struct _FC_PORT_PERSISTENT
1909{
1910 FC_PORT_PERSISTENT_PHYSICAL_ID PhysicalIdentifier;
1911 U8 TargetID;
1912 U8 Bus;
1913 U16 Flags;
1914} FC_PORT_PERSISTENT, MPI_POINTER PTR_FC_PORT_PERSISTENT,
1915 PersistentData_t, MPI_POINTER pPersistentData_t;
1916
1917#define MPI_PERSISTENT_FLAGS_SHIFT (16)
1918#define MPI_PERSISTENT_FLAGS_ENTRY_VALID (0x0001)
1919#define MPI_PERSISTENT_FLAGS_SCAN_ID (0x0002)
1920#define MPI_PERSISTENT_FLAGS_SCAN_LUNS (0x0004)
1921#define MPI_PERSISTENT_FLAGS_BOOT_DEVICE (0x0008)
1922#define MPI_PERSISTENT_FLAGS_BY_DID (0x0080)
1923
1924
1925
1926
1927
1928#ifndef MPI_FC_PORT_PAGE_3_ENTRY_MAX
1929#define MPI_FC_PORT_PAGE_3_ENTRY_MAX (1)
1930#endif
1931
1932typedef struct _CONFIG_PAGE_FC_PORT_3
1933{
1934 CONFIG_PAGE_HEADER Header;
1935 FC_PORT_PERSISTENT Entry[MPI_FC_PORT_PAGE_3_ENTRY_MAX];
1936} CONFIG_PAGE_FC_PORT_3, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_3,
1937 FCPortPage3_t, MPI_POINTER pFCPortPage3_t;
1938
1939#define MPI_FCPORTPAGE3_PAGEVERSION (0x01)
1940
1941
1942typedef struct _CONFIG_PAGE_FC_PORT_4
1943{
1944 CONFIG_PAGE_HEADER Header;
1945 U32 PortFlags;
1946 U32 PortSettings;
1947} CONFIG_PAGE_FC_PORT_4, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_4,
1948 FCPortPage4_t, MPI_POINTER pFCPortPage4_t;
1949
1950#define MPI_FCPORTPAGE4_PAGEVERSION (0x00)
1951
1952#define MPI_FCPORTPAGE4_PORT_FLAGS_ALTERNATE_CHS (0x00000008)
1953
1954#define MPI_FCPORTPAGE4_PORT_MASK_INIT_HBA (0x00000030)
1955#define MPI_FCPORTPAGE4_PORT_DISABLE_INIT_HBA (0x00000000)
1956#define MPI_FCPORTPAGE4_PORT_BIOS_INIT_HBA (0x00000010)
1957#define MPI_FCPORTPAGE4_PORT_OS_INIT_HBA (0x00000020)
1958#define MPI_FCPORTPAGE4_PORT_BIOS_OS_INIT_HBA (0x00000030)
1959#define MPI_FCPORTPAGE4_PORT_REMOVABLE_MEDIA (0x000000C0)
1960#define MPI_FCPORTPAGE4_PORT_SPINUP_DELAY_MASK (0x00000F00)
1961
1962
1963typedef struct _CONFIG_PAGE_FC_PORT_5_ALIAS_INFO
1964{
1965 U8 Flags;
1966 U8 AliasAlpa;
1967 U16 Reserved;
1968 U64 AliasWWNN;
1969 U64 AliasWWPN;
1970} CONFIG_PAGE_FC_PORT_5_ALIAS_INFO,
1971 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_5_ALIAS_INFO,
1972 FcPortPage5AliasInfo_t, MPI_POINTER pFcPortPage5AliasInfo_t;
1973
1974typedef struct _CONFIG_PAGE_FC_PORT_5
1975{
1976 CONFIG_PAGE_HEADER Header;
1977 CONFIG_PAGE_FC_PORT_5_ALIAS_INFO AliasInfo;
1978} CONFIG_PAGE_FC_PORT_5, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_5,
1979 FCPortPage5_t, MPI_POINTER pFCPortPage5_t;
1980
1981#define MPI_FCPORTPAGE5_PAGEVERSION (0x02)
1982
1983#define MPI_FCPORTPAGE5_FLAGS_ALPA_ACQUIRED (0x01)
1984#define MPI_FCPORTPAGE5_FLAGS_HARD_ALPA (0x02)
1985#define MPI_FCPORTPAGE5_FLAGS_HARD_WWNN (0x04)
1986#define MPI_FCPORTPAGE5_FLAGS_HARD_WWPN (0x08)
1987#define MPI_FCPORTPAGE5_FLAGS_DISABLE (0x10)
1988
1989typedef struct _CONFIG_PAGE_FC_PORT_6
1990{
1991 CONFIG_PAGE_HEADER Header;
1992 U32 Reserved;
1993 U64 TimeSinceReset;
1994 U64 TxFrames;
1995 U64 RxFrames;
1996 U64 TxWords;
1997 U64 RxWords;
1998 U64 LipCount;
1999 U64 NosCount;
2000 U64 ErrorFrames;
2001 U64 DumpedFrames;
2002 U64 LinkFailureCount;
2003 U64 LossOfSyncCount;
2004 U64 LossOfSignalCount;
2005 U64 PrimativeSeqErrCount;
2006 U64 InvalidTxWordCount;
2007 U64 InvalidCrcCount;
2008 U64 FcpInitiatorIoCount;
2009} CONFIG_PAGE_FC_PORT_6, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_6,
2010 FCPortPage6_t, MPI_POINTER pFCPortPage6_t;
2011
2012#define MPI_FCPORTPAGE6_PAGEVERSION (0x00)
2013
2014
2015typedef struct _CONFIG_PAGE_FC_PORT_7
2016{
2017 CONFIG_PAGE_HEADER Header;
2018 U32 Reserved;
2019 U8 PortSymbolicName[256];
2020} CONFIG_PAGE_FC_PORT_7, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_7,
2021 FCPortPage7_t, MPI_POINTER pFCPortPage7_t;
2022
2023#define MPI_FCPORTPAGE7_PAGEVERSION (0x00)
2024
2025
2026typedef struct _CONFIG_PAGE_FC_PORT_8
2027{
2028 CONFIG_PAGE_HEADER Header;
2029 U32 BitVector[8];
2030} CONFIG_PAGE_FC_PORT_8, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_8,
2031 FCPortPage8_t, MPI_POINTER pFCPortPage8_t;
2032
2033#define MPI_FCPORTPAGE8_PAGEVERSION (0x00)
2034
2035
2036typedef struct _CONFIG_PAGE_FC_PORT_9
2037{
2038 CONFIG_PAGE_HEADER Header;
2039 U32 Reserved;
2040 U64 GlobalWWPN;
2041 U64 GlobalWWNN;
2042 U32 UnitType;
2043 U32 PhysicalPortNumber;
2044 U32 NumAttachedNodes;
2045 U16 IPVersion;
2046 U16 UDPPortNumber;
2047 U8 IPAddress[16];
2048 U16 Reserved1;
2049 U16 TopologyDiscoveryFlags;
2050} CONFIG_PAGE_FC_PORT_9, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_9,
2051 FCPortPage9_t, MPI_POINTER pFCPortPage9_t;
2052
2053#define MPI_FCPORTPAGE9_PAGEVERSION (0x00)
2054
2055
2056typedef struct _CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA
2057{
2058 U8 Id;
2059 U8 ExtId;
2060 U8 Connector;
2061 U8 Transceiver[8];
2062 U8 Encoding;
2063 U8 BitRate_100mbs;
2064 U8 Reserved1;
2065 U8 Length9u_km;
2066 U8 Length9u_100m;
2067 U8 Length50u_10m;
2068 U8 Length62p5u_10m;
2069 U8 LengthCopper_m;
2070 U8 Reseverved2;
2071 U8 VendorName[16];
2072 U8 Reserved3;
2073 U8 VendorOUI[3];
2074 U8 VendorPN[16];
2075 U8 VendorRev[4];
2076 U16 Wavelength;
2077 U8 Reserved4;
2078 U8 CC_BASE;
2079} CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA,
2080 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA,
2081 FCPortPage10BaseSfpData_t, MPI_POINTER pFCPortPage10BaseSfpData_t;
2082
2083#define MPI_FCPORT10_BASE_ID_UNKNOWN (0x00)
2084#define MPI_FCPORT10_BASE_ID_GBIC (0x01)
2085#define MPI_FCPORT10_BASE_ID_FIXED (0x02)
2086#define MPI_FCPORT10_BASE_ID_SFP (0x03)
2087#define MPI_FCPORT10_BASE_ID_SFP_MIN (0x04)
2088#define MPI_FCPORT10_BASE_ID_SFP_MAX (0x7F)
2089#define MPI_FCPORT10_BASE_ID_VEND_SPEC_MASK (0x80)
2090
2091#define MPI_FCPORT10_BASE_EXTID_UNKNOWN (0x00)
2092#define MPI_FCPORT10_BASE_EXTID_MODDEF1 (0x01)
2093#define MPI_FCPORT10_BASE_EXTID_MODDEF2 (0x02)
2094#define MPI_FCPORT10_BASE_EXTID_MODDEF3 (0x03)
2095#define MPI_FCPORT10_BASE_EXTID_SEEPROM (0x04)
2096#define MPI_FCPORT10_BASE_EXTID_MODDEF5 (0x05)
2097#define MPI_FCPORT10_BASE_EXTID_MODDEF6 (0x06)
2098#define MPI_FCPORT10_BASE_EXTID_MODDEF7 (0x07)
2099#define MPI_FCPORT10_BASE_EXTID_VNDSPC_MASK (0x80)
2100
2101#define MPI_FCPORT10_BASE_CONN_UNKNOWN (0x00)
2102#define MPI_FCPORT10_BASE_CONN_SC (0x01)
2103#define MPI_FCPORT10_BASE_CONN_COPPER1 (0x02)
2104#define MPI_FCPORT10_BASE_CONN_COPPER2 (0x03)
2105#define MPI_FCPORT10_BASE_CONN_BNC_TNC (0x04)
2106#define MPI_FCPORT10_BASE_CONN_COAXIAL (0x05)
2107#define MPI_FCPORT10_BASE_CONN_FIBERJACK (0x06)
2108#define MPI_FCPORT10_BASE_CONN_LC (0x07)
2109#define MPI_FCPORT10_BASE_CONN_MT_RJ (0x08)
2110#define MPI_FCPORT10_BASE_CONN_MU (0x09)
2111#define MPI_FCPORT10_BASE_CONN_SG (0x0A)
2112#define MPI_FCPORT10_BASE_CONN_OPT_PIGT (0x0B)
2113#define MPI_FCPORT10_BASE_CONN_RSV1_MIN (0x0C)
2114#define MPI_FCPORT10_BASE_CONN_RSV1_MAX (0x1F)
2115#define MPI_FCPORT10_BASE_CONN_HSSDC_II (0x20)
2116#define MPI_FCPORT10_BASE_CONN_CPR_PIGT (0x21)
2117#define MPI_FCPORT10_BASE_CONN_RSV2_MIN (0x22)
2118#define MPI_FCPORT10_BASE_CONN_RSV2_MAX (0x7F)
2119#define MPI_FCPORT10_BASE_CONN_VNDSPC_MASK (0x80)
2120
2121#define MPI_FCPORT10_BASE_ENCODE_UNSPEC (0x00)
2122#define MPI_FCPORT10_BASE_ENCODE_8B10B (0x01)
2123#define MPI_FCPORT10_BASE_ENCODE_4B5B (0x02)
2124#define MPI_FCPORT10_BASE_ENCODE_NRZ (0x03)
2125#define MPI_FCPORT10_BASE_ENCODE_MANCHESTER (0x04)
2126
2127
2128typedef struct _CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA
2129{
2130 U8 Options[2];
2131 U8 BitRateMax;
2132 U8 BitRateMin;
2133 U8 VendorSN[16];
2134 U8 DateCode[8];
2135 U8 DiagMonitoringType;
2136 U8 EnhancedOptions;
2137 U8 SFF8472Compliance;
2138 U8 CC_EXT;
2139} CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA,
2140 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA,
2141 FCPortPage10ExtendedSfpData_t, MPI_POINTER pFCPortPage10ExtendedSfpData_t;
2142
2143#define MPI_FCPORT10_EXT_OPTION1_RATESEL (0x20)
2144#define MPI_FCPORT10_EXT_OPTION1_TX_DISABLE (0x10)
2145#define MPI_FCPORT10_EXT_OPTION1_TX_FAULT (0x08)
2146#define MPI_FCPORT10_EXT_OPTION1_LOS_INVERT (0x04)
2147#define MPI_FCPORT10_EXT_OPTION1_LOS (0x02)
2148
2149
2150typedef struct _CONFIG_PAGE_FC_PORT_10
2151{
2152 CONFIG_PAGE_HEADER Header;
2153 U8 Flags;
2154 U8 Reserved1;
2155 U16 Reserved2;
2156 U32 HwConfig1;
2157 U32 HwConfig2;
2158 CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA Base;
2159 CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA Extended;
2160 U8 VendorSpecific[32];
2161} CONFIG_PAGE_FC_PORT_10, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10,
2162 FCPortPage10_t, MPI_POINTER pFCPortPage10_t;
2163
2164#define MPI_FCPORTPAGE10_PAGEVERSION (0x01)
2165
2166
2167#define MPI_FCPORTPAGE10_FLAGS_MODDEF_MASK (0x00000007)
2168#define MPI_FCPORTPAGE10_FLAGS_MODDEF2 (0x00000001)
2169#define MPI_FCPORTPAGE10_FLAGS_MODDEF1 (0x00000002)
2170#define MPI_FCPORTPAGE10_FLAGS_MODDEF0 (0x00000004)
2171#define MPI_FCPORTPAGE10_FLAGS_MODDEF_NOGBIC (0x00000007)
2172#define MPI_FCPORTPAGE10_FLAGS_MODDEF_CPR_IEEE_CX (0x00000006)
2173#define MPI_FCPORTPAGE10_FLAGS_MODDEF_COPPER (0x00000005)
2174#define MPI_FCPORTPAGE10_FLAGS_MODDEF_OPTICAL_LW (0x00000004)
2175#define MPI_FCPORTPAGE10_FLAGS_MODDEF_SEEPROM (0x00000003)
2176#define MPI_FCPORTPAGE10_FLAGS_MODDEF_SW_OPTICAL (0x00000002)
2177#define MPI_FCPORTPAGE10_FLAGS_MODDEF_LX_IEEE_OPT_LW (0x00000001)
2178#define MPI_FCPORTPAGE10_FLAGS_MODDEF_SX_IEEE_OPT_SW (0x00000000)
2179
2180#define MPI_FCPORTPAGE10_FLAGS_CC_BASE_OK (0x00000010)
2181#define MPI_FCPORTPAGE10_FLAGS_CC_EXT_OK (0x00000020)
2182
2183
2184
2185
2186
2187
2188typedef struct _CONFIG_PAGE_FC_DEVICE_0
2189{
2190 CONFIG_PAGE_HEADER Header;
2191 U64 WWNN;
2192 U64 WWPN;
2193 U32 PortIdentifier;
2194 U8 Protocol;
2195 U8 Flags;
2196 U16 BBCredit;
2197 U16 MaxRxFrameSize;
2198 U8 ADISCHardALPA;
2199 U8 PortNumber;
2200 U8 FcPhLowestVersion;
2201 U8 FcPhHighestVersion;
2202 U8 CurrentTargetID;
2203 U8 CurrentBus;
2204} CONFIG_PAGE_FC_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_FC_DEVICE_0,
2205 FCDevicePage0_t, MPI_POINTER pFCDevicePage0_t;
2206
2207#define MPI_FC_DEVICE_PAGE0_PAGEVERSION (0x03)
2208
2209#define MPI_FC_DEVICE_PAGE0_FLAGS_TARGETID_BUS_VALID (0x01)
2210#define MPI_FC_DEVICE_PAGE0_FLAGS_PLOGI_INVALID (0x02)
2211#define MPI_FC_DEVICE_PAGE0_FLAGS_PRLI_INVALID (0x04)
2212
2213#define MPI_FC_DEVICE_PAGE0_PROT_IP (0x01)
2214#define MPI_FC_DEVICE_PAGE0_PROT_FCP_TARGET (0x02)
2215#define MPI_FC_DEVICE_PAGE0_PROT_FCP_INITIATOR (0x04)
2216#define MPI_FC_DEVICE_PAGE0_PROT_FCP_RETRY (0x08)
2217
2218#define MPI_FC_DEVICE_PAGE0_PGAD_PORT_MASK (MPI_FC_DEVICE_PGAD_PORT_MASK)
2219#define MPI_FC_DEVICE_PAGE0_PGAD_FORM_MASK (MPI_FC_DEVICE_PGAD_FORM_MASK)
2220#define MPI_FC_DEVICE_PAGE0_PGAD_FORM_NEXT_DID (MPI_FC_DEVICE_PGAD_FORM_NEXT_DID)
2221#define MPI_FC_DEVICE_PAGE0_PGAD_FORM_BUS_TID (MPI_FC_DEVICE_PGAD_FORM_BUS_TID)
2222#define MPI_FC_DEVICE_PAGE0_PGAD_DID_MASK (MPI_FC_DEVICE_PGAD_ND_DID_MASK)
2223#define MPI_FC_DEVICE_PAGE0_PGAD_BUS_MASK (MPI_FC_DEVICE_PGAD_BT_BUS_MASK)
2224#define MPI_FC_DEVICE_PAGE0_PGAD_BUS_SHIFT (MPI_FC_DEVICE_PGAD_BT_BUS_SHIFT)
2225#define MPI_FC_DEVICE_PAGE0_PGAD_TID_MASK (MPI_FC_DEVICE_PGAD_BT_TID_MASK)
2226
2227#define MPI_FC_DEVICE_PAGE0_HARD_ALPA_UNKNOWN (0xFF)
2228
2229
2230
2231
2232
2233typedef struct _RAID_VOL0_PHYS_DISK
2234{
2235 U16 Reserved;
2236 U8 PhysDiskMap;
2237 U8 PhysDiskNum;
2238} RAID_VOL0_PHYS_DISK, MPI_POINTER PTR_RAID_VOL0_PHYS_DISK,
2239 RaidVol0PhysDisk_t, MPI_POINTER pRaidVol0PhysDisk_t;
2240
2241#define MPI_RAIDVOL0_PHYSDISK_PRIMARY (0x01)
2242#define MPI_RAIDVOL0_PHYSDISK_SECONDARY (0x02)
2243
2244typedef struct _RAID_VOL0_STATUS
2245{
2246 U8 Flags;
2247 U8 State;
2248 U16 Reserved;
2249} RAID_VOL0_STATUS, MPI_POINTER PTR_RAID_VOL0_STATUS,
2250 RaidVol0Status_t, MPI_POINTER pRaidVol0Status_t;
2251
2252
2253#define MPI_RAIDVOL0_STATUS_FLAG_ENABLED (0x01)
2254#define MPI_RAIDVOL0_STATUS_FLAG_QUIESCED (0x02)
2255#define MPI_RAIDVOL0_STATUS_FLAG_RESYNC_IN_PROGRESS (0x04)
2256#define MPI_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE (0x08)
2257#define MPI_RAIDVOL0_STATUS_FLAG_BAD_BLOCK_TABLE_FULL (0x10)
2258
2259#define MPI_RAIDVOL0_STATUS_STATE_OPTIMAL (0x00)
2260#define MPI_RAIDVOL0_STATUS_STATE_DEGRADED (0x01)
2261#define MPI_RAIDVOL0_STATUS_STATE_FAILED (0x02)
2262#define MPI_RAIDVOL0_STATUS_STATE_MISSING (0x03)
2263
2264typedef struct _RAID_VOL0_SETTINGS
2265{
2266 U16 Settings;
2267 U8 HotSparePool;
2268 U8 Reserved;
2269} RAID_VOL0_SETTINGS, MPI_POINTER PTR_RAID_VOL0_SETTINGS,
2270 RaidVol0Settings, MPI_POINTER pRaidVol0Settings;
2271
2272
2273#define MPI_RAIDVOL0_SETTING_WRITE_CACHING_ENABLE (0x0001)
2274#define MPI_RAIDVOL0_SETTING_OFFLINE_ON_SMART (0x0002)
2275#define MPI_RAIDVOL0_SETTING_AUTO_CONFIGURE (0x0004)
2276#define MPI_RAIDVOL0_SETTING_PRIORITY_RESYNC (0x0008)
2277#define MPI_RAIDVOL0_SETTING_FAST_DATA_SCRUBBING_0102 (0x0020)
2278
2279#define MPI_RAIDVOL0_SETTING_MASK_METADATA_SIZE (0x00C0)
2280#define MPI_RAIDVOL0_SETTING_64MB_METADATA_SIZE (0x0000)
2281#define MPI_RAIDVOL0_SETTING_512MB_METADATA_SIZE (0x0040)
2282
2283#define MPI_RAIDVOL0_SETTING_USE_PRODUCT_ID_SUFFIX (0x0010)
2284#define MPI_RAIDVOL0_SETTING_USE_DEFAULTS (0x8000)
2285
2286
2287#define MPI_RAID_HOT_SPARE_POOL_0 (0x01)
2288#define MPI_RAID_HOT_SPARE_POOL_1 (0x02)
2289#define MPI_RAID_HOT_SPARE_POOL_2 (0x04)
2290#define MPI_RAID_HOT_SPARE_POOL_3 (0x08)
2291#define MPI_RAID_HOT_SPARE_POOL_4 (0x10)
2292#define MPI_RAID_HOT_SPARE_POOL_5 (0x20)
2293#define MPI_RAID_HOT_SPARE_POOL_6 (0x40)
2294#define MPI_RAID_HOT_SPARE_POOL_7 (0x80)
2295
2296
2297
2298
2299
2300#ifndef MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX
2301#define MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX (1)
2302#endif
2303
2304typedef struct _CONFIG_PAGE_RAID_VOL_0
2305{
2306 CONFIG_PAGE_HEADER Header;
2307 U8 VolumeID;
2308 U8 VolumeBus;
2309 U8 VolumeIOC;
2310 U8 VolumeType;
2311 RAID_VOL0_STATUS VolumeStatus;
2312 RAID_VOL0_SETTINGS VolumeSettings;
2313 U32 MaxLBA;
2314 U32 MaxLBAHigh;
2315 U32 StripeSize;
2316 U32 Reserved2;
2317 U32 Reserved3;
2318 U8 NumPhysDisks;
2319 U8 DataScrubRate;
2320 U8 ResyncRate;
2321 U8 InactiveStatus;
2322 RAID_VOL0_PHYS_DISK PhysDisk[MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX];
2323} CONFIG_PAGE_RAID_VOL_0, MPI_POINTER PTR_CONFIG_PAGE_RAID_VOL_0,
2324 RaidVolumePage0_t, MPI_POINTER pRaidVolumePage0_t;
2325
2326#define MPI_RAIDVOLPAGE0_PAGEVERSION (0x07)
2327
2328
2329#define MPI_RAIDVOLPAGE0_UNKNOWN_INACTIVE (0x00)
2330#define MPI_RAIDVOLPAGE0_STALE_METADATA_INACTIVE (0x01)
2331#define MPI_RAIDVOLPAGE0_FOREIGN_VOLUME_INACTIVE (0x02)
2332#define MPI_RAIDVOLPAGE0_INSUFFICIENT_RESOURCE_INACTIVE (0x03)
2333#define MPI_RAIDVOLPAGE0_CLONE_VOLUME_INACTIVE (0x04)
2334#define MPI_RAIDVOLPAGE0_INSUFFICIENT_METADATA_INACTIVE (0x05)
2335#define MPI_RAIDVOLPAGE0_PREVIOUSLY_DELETED (0x06)
2336
2337
2338typedef struct _CONFIG_PAGE_RAID_VOL_1
2339{
2340 CONFIG_PAGE_HEADER Header;
2341 U8 VolumeID;
2342 U8 VolumeBus;
2343 U8 VolumeIOC;
2344 U8 Reserved0;
2345 U8 GUID[24];
2346 U8 Name[32];
2347 U64 WWID;
2348 U32 Reserved1;
2349 U32 Reserved2;
2350} CONFIG_PAGE_RAID_VOL_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_VOL_1,
2351 RaidVolumePage1_t, MPI_POINTER pRaidVolumePage1_t;
2352
2353#define MPI_RAIDVOLPAGE1_PAGEVERSION (0x01)
2354
2355
2356
2357
2358
2359
2360typedef struct _RAID_PHYS_DISK0_ERROR_DATA
2361{
2362 U8 ErrorCdbByte;
2363 U8 ErrorSenseKey;
2364 U16 Reserved;
2365 U16 ErrorCount;
2366 U8 ErrorASC;
2367 U8 ErrorASCQ;
2368 U16 SmartCount;
2369 U8 SmartASC;
2370 U8 SmartASCQ;
2371} RAID_PHYS_DISK0_ERROR_DATA, MPI_POINTER PTR_RAID_PHYS_DISK0_ERROR_DATA,
2372 RaidPhysDisk0ErrorData_t, MPI_POINTER pRaidPhysDisk0ErrorData_t;
2373
2374typedef struct _RAID_PHYS_DISK_INQUIRY_DATA
2375{
2376 U8 VendorID[8];
2377 U8 ProductID[16];
2378 U8 ProductRevLevel[4];
2379 U8 Info[32];
2380} RAID_PHYS_DISK0_INQUIRY_DATA, MPI_POINTER PTR_RAID_PHYS_DISK0_INQUIRY_DATA,
2381 RaidPhysDisk0InquiryData, MPI_POINTER pRaidPhysDisk0InquiryData;
2382
2383typedef struct _RAID_PHYS_DISK0_SETTINGS
2384{
2385 U8 SepID;
2386 U8 SepBus;
2387 U8 HotSparePool;
2388 U8 PhysDiskSettings;
2389} RAID_PHYS_DISK0_SETTINGS, MPI_POINTER PTR_RAID_PHYS_DISK0_SETTINGS,
2390 RaidPhysDiskSettings_t, MPI_POINTER pRaidPhysDiskSettings_t;
2391
2392typedef struct _RAID_PHYS_DISK0_STATUS
2393{
2394 U8 Flags;
2395 U8 State;
2396 U16 Reserved;
2397} RAID_PHYS_DISK0_STATUS, MPI_POINTER PTR_RAID_PHYS_DISK0_STATUS,
2398 RaidPhysDiskStatus_t, MPI_POINTER pRaidPhysDiskStatus_t;
2399
2400
2401
2402#define MPI_PHYSDISK0_STATUS_FLAG_OUT_OF_SYNC (0x01)
2403#define MPI_PHYSDISK0_STATUS_FLAG_QUIESCED (0x02)
2404#define MPI_PHYSDISK0_STATUS_FLAG_INACTIVE_VOLUME (0x04)
2405#define MPI_PHYSDISK0_STATUS_FLAG_OPTIMAL_PREVIOUS (0x00)
2406#define MPI_PHYSDISK0_STATUS_FLAG_NOT_OPTIMAL_PREVIOUS (0x08)
2407
2408#define MPI_PHYSDISK0_STATUS_ONLINE (0x00)
2409#define MPI_PHYSDISK0_STATUS_MISSING (0x01)
2410#define MPI_PHYSDISK0_STATUS_NOT_COMPATIBLE (0x02)
2411#define MPI_PHYSDISK0_STATUS_FAILED (0x03)
2412#define MPI_PHYSDISK0_STATUS_INITIALIZING (0x04)
2413#define MPI_PHYSDISK0_STATUS_OFFLINE_REQUESTED (0x05)
2414#define MPI_PHYSDISK0_STATUS_FAILED_REQUESTED (0x06)
2415#define MPI_PHYSDISK0_STATUS_OTHER_OFFLINE (0xFF)
2416
2417typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_0
2418{
2419 CONFIG_PAGE_HEADER Header;
2420 U8 PhysDiskID;
2421 U8 PhysDiskBus;
2422 U8 PhysDiskIOC;
2423 U8 PhysDiskNum;
2424 RAID_PHYS_DISK0_SETTINGS PhysDiskSettings;
2425 U32 Reserved1;
2426 U8 ExtDiskIdentifier[8];
2427 U8 DiskIdentifier[16];
2428 RAID_PHYS_DISK0_INQUIRY_DATA InquiryData;
2429 RAID_PHYS_DISK0_STATUS PhysDiskStatus;
2430 U32 MaxLBA;
2431 RAID_PHYS_DISK0_ERROR_DATA ErrorData;
2432} CONFIG_PAGE_RAID_PHYS_DISK_0, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_0,
2433 RaidPhysDiskPage0_t, MPI_POINTER pRaidPhysDiskPage0_t;
2434
2435#define MPI_RAIDPHYSDISKPAGE0_PAGEVERSION (0x02)
2436
2437
2438typedef struct _RAID_PHYS_DISK1_PATH
2439{
2440 U8 PhysDiskID;
2441 U8 PhysDiskBus;
2442 U16 Reserved1;
2443 U64 WWID;
2444 U64 OwnerWWID;
2445 U8 OwnerIdentifier;
2446 U8 Reserved2;
2447 U16 Flags;
2448} RAID_PHYS_DISK1_PATH, MPI_POINTER PTR_RAID_PHYS_DISK1_PATH,
2449 RaidPhysDisk1Path_t, MPI_POINTER pRaidPhysDisk1Path_t;
2450
2451
2452#define MPI_RAID_PHYSDISK1_FLAG_BROKEN (0x0002)
2453#define MPI_RAID_PHYSDISK1_FLAG_INVALID (0x0001)
2454
2455
2456
2457
2458
2459
2460#ifndef MPI_RAID_PHYS_DISK1_PATH_MAX
2461#define MPI_RAID_PHYS_DISK1_PATH_MAX (1)
2462#endif
2463
2464typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_1
2465{
2466 CONFIG_PAGE_HEADER Header;
2467 U8 NumPhysDiskPaths;
2468 U8 PhysDiskNum;
2469 U16 Reserved2;
2470 U32 Reserved1;
2471 RAID_PHYS_DISK1_PATH Path[MPI_RAID_PHYS_DISK1_PATH_MAX];
2472} CONFIG_PAGE_RAID_PHYS_DISK_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_1,
2473 RaidPhysDiskPage1_t, MPI_POINTER pRaidPhysDiskPage1_t;
2474
2475#define MPI_RAIDPHYSDISKPAGE1_PAGEVERSION (0x00)
2476
2477
2478
2479
2480
2481
2482typedef struct _CONFIG_PAGE_LAN_0
2483{
2484 ConfigPageHeader_t Header;
2485 U16 TxRxModes;
2486 U16 Reserved;
2487 U32 PacketPrePad;
2488} CONFIG_PAGE_LAN_0, MPI_POINTER PTR_CONFIG_PAGE_LAN_0,
2489 LANPage0_t, MPI_POINTER pLANPage0_t;
2490
2491#define MPI_LAN_PAGE0_PAGEVERSION (0x01)
2492
2493#define MPI_LAN_PAGE0_RETURN_LOOPBACK (0x0000)
2494#define MPI_LAN_PAGE0_SUPPRESS_LOOPBACK (0x0001)
2495#define MPI_LAN_PAGE0_LOOPBACK_MASK (0x0001)
2496
2497typedef struct _CONFIG_PAGE_LAN_1
2498{
2499 ConfigPageHeader_t Header;
2500 U16 Reserved;
2501 U8 CurrentDeviceState;
2502 U8 Reserved1;
2503 U32 MinPacketSize;
2504 U32 MaxPacketSize;
2505 U32 HardwareAddressLow;
2506 U32 HardwareAddressHigh;
2507 U32 MaxWireSpeedLow;
2508 U32 MaxWireSpeedHigh;
2509 U32 BucketsRemaining;
2510 U32 MaxReplySize;
2511 U32 NegWireSpeedLow;
2512 U32 NegWireSpeedHigh;
2513} CONFIG_PAGE_LAN_1, MPI_POINTER PTR_CONFIG_PAGE_LAN_1,
2514 LANPage1_t, MPI_POINTER pLANPage1_t;
2515
2516#define MPI_LAN_PAGE1_PAGEVERSION (0x03)
2517
2518#define MPI_LAN_PAGE1_DEV_STATE_RESET (0x00)
2519#define MPI_LAN_PAGE1_DEV_STATE_OPERATIONAL (0x01)
2520
2521
2522
2523
2524
2525
2526typedef struct _CONFIG_PAGE_INBAND_0
2527{
2528 CONFIG_PAGE_HEADER Header;
2529 MPI_VERSION_FORMAT InbandVersion;
2530 U16 MaximumBuffers;
2531 U16 Reserved1;
2532} CONFIG_PAGE_INBAND_0, MPI_POINTER PTR_CONFIG_PAGE_INBAND_0,
2533 InbandPage0_t, MPI_POINTER pInbandPage0_t;
2534
2535#define MPI_INBAND_PAGEVERSION (0x00)
2536
2537
2538
2539
2540
2541
2542
2543typedef struct _MPI_SAS_IO_UNIT0_PHY_DATA
2544{
2545 U8 Port;
2546 U8 PortFlags;
2547 U8 PhyFlags;
2548 U8 NegotiatedLinkRate;
2549 U32 ControllerPhyDeviceInfo;
2550 U16 AttachedDeviceHandle;
2551 U16 ControllerDevHandle;
2552 U32 DiscoveryStatus;
2553} MPI_SAS_IO_UNIT0_PHY_DATA, MPI_POINTER PTR_MPI_SAS_IO_UNIT0_PHY_DATA,
2554 SasIOUnit0PhyData, MPI_POINTER pSasIOUnit0PhyData;
2555
2556
2557
2558
2559
2560#ifndef MPI_SAS_IOUNIT0_PHY_MAX
2561#define MPI_SAS_IOUNIT0_PHY_MAX (1)
2562#endif
2563
2564typedef struct _CONFIG_PAGE_SAS_IO_UNIT_0
2565{
2566 CONFIG_EXTENDED_PAGE_HEADER Header;
2567 U16 NvdataVersionDefault;
2568 U16 NvdataVersionPersistent;
2569 U8 NumPhys;
2570 U8 Reserved2;
2571 U16 Reserved3;
2572 MPI_SAS_IO_UNIT0_PHY_DATA PhyData[MPI_SAS_IOUNIT0_PHY_MAX];
2573} CONFIG_PAGE_SAS_IO_UNIT_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_0,
2574 SasIOUnitPage0_t, MPI_POINTER pSasIOUnitPage0_t;
2575
2576#define MPI_SASIOUNITPAGE0_PAGEVERSION (0x04)
2577
2578
2579#define MPI_SAS_IOUNIT0_PORT_FLAGS_DISCOVERY_IN_PROGRESS (0x08)
2580#define MPI_SAS_IOUNIT0_PORT_FLAGS_0_TARGET_IOC_NUM (0x00)
2581#define MPI_SAS_IOUNIT0_PORT_FLAGS_1_TARGET_IOC_NUM (0x04)
2582#define MPI_SAS_IOUNIT0_PORT_FLAGS_AUTO_PORT_CONFIG (0x01)
2583
2584
2585#define MPI_SAS_IOUNIT0_PHY_FLAGS_PHY_DISABLED (0x04)
2586#define MPI_SAS_IOUNIT0_PHY_FLAGS_TX_INVERT (0x02)
2587#define MPI_SAS_IOUNIT0_PHY_FLAGS_RX_INVERT (0x01)
2588
2589
2590#define MPI_SAS_IOUNIT0_RATE_UNKNOWN (0x00)
2591#define MPI_SAS_IOUNIT0_RATE_PHY_DISABLED (0x01)
2592#define MPI_SAS_IOUNIT0_RATE_FAILED_SPEED_NEGOTIATION (0x02)
2593#define MPI_SAS_IOUNIT0_RATE_SATA_OOB_COMPLETE (0x03)
2594#define MPI_SAS_IOUNIT0_RATE_1_5 (0x08)
2595#define MPI_SAS_IOUNIT0_RATE_3_0 (0x09)
2596
2597
2598
2599
2600#define MPI_SAS_IOUNIT0_DS_LOOP_DETECTED (0x00000001)
2601#define MPI_SAS_IOUNIT0_DS_UNADDRESSABLE_DEVICE (0x00000002)
2602#define MPI_SAS_IOUNIT0_DS_MULTIPLE_PORTS (0x00000004)
2603#define MPI_SAS_IOUNIT0_DS_EXPANDER_ERR (0x00000008)
2604#define MPI_SAS_IOUNIT0_DS_SMP_TIMEOUT (0x00000010)
2605#define MPI_SAS_IOUNIT0_DS_OUT_ROUTE_ENTRIES (0x00000020)
2606#define MPI_SAS_IOUNIT0_DS_INDEX_NOT_EXIST (0x00000040)
2607#define MPI_SAS_IOUNIT0_DS_SMP_FUNCTION_FAILED (0x00000080)
2608#define MPI_SAS_IOUNIT0_DS_SMP_CRC_ERROR (0x00000100)
2609#define MPI_SAS_IOUNIT0_DS_SUBTRACTIVE_LINK (0x00000200)
2610#define MPI_SAS_IOUNIT0_DS_TABLE_LINK (0x00000400)
2611#define MPI_SAS_IOUNIT0_DS_UNSUPPORTED_DEVICE (0x00000800)
2612#define MPI_SAS_IOUNIT0_DS_MAX_SATA_TARGETS (0x00001000)
2613#define MPI_SAS_IOUNIT0_DS_MULTI_PORT_DOMAIN (0x00002000)
2614
2615
2616typedef struct _MPI_SAS_IO_UNIT1_PHY_DATA
2617{
2618 U8 Port;
2619 U8 PortFlags;
2620 U8 PhyFlags;
2621 U8 MaxMinLinkRate;
2622 U32 ControllerPhyDeviceInfo;
2623 U16 MaxTargetPortConnectTime;
2624 U16 Reserved1;
2625} MPI_SAS_IO_UNIT1_PHY_DATA, MPI_POINTER PTR_MPI_SAS_IO_UNIT1_PHY_DATA,
2626 SasIOUnit1PhyData, MPI_POINTER pSasIOUnit1PhyData;
2627
2628
2629
2630
2631
2632#ifndef MPI_SAS_IOUNIT1_PHY_MAX
2633#define MPI_SAS_IOUNIT1_PHY_MAX (1)
2634#endif
2635
2636typedef struct _CONFIG_PAGE_SAS_IO_UNIT_1
2637{
2638 CONFIG_EXTENDED_PAGE_HEADER Header;
2639 U16 ControlFlags;
2640 U16 MaxNumSATATargets;
2641 U16 AdditionalControlFlags;
2642 U16 Reserved1;
2643 U8 NumPhys;
2644 U8 SATAMaxQDepth;
2645 U8 ReportDeviceMissingDelay;
2646 U8 IODeviceMissingDelay;
2647 MPI_SAS_IO_UNIT1_PHY_DATA PhyData[MPI_SAS_IOUNIT1_PHY_MAX];
2648} CONFIG_PAGE_SAS_IO_UNIT_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_1,
2649 SasIOUnitPage1_t, MPI_POINTER pSasIOUnitPage1_t;
2650
2651#define MPI_SASIOUNITPAGE1_PAGEVERSION (0x07)
2652
2653
2654#define MPI_SAS_IOUNIT1_CONTROL_DEVICE_SELF_TEST (0x8000)
2655#define MPI_SAS_IOUNIT1_CONTROL_SATA_3_0_MAX (0x4000)
2656#define MPI_SAS_IOUNIT1_CONTROL_SATA_1_5_MAX (0x2000)
2657#define MPI_SAS_IOUNIT1_CONTROL_SATA_SW_PRESERVE (0x1000)
2658#define MPI_SAS_IOUNIT1_CONTROL_DISABLE_SAS_HASH (0x0800)
2659
2660#define MPI_SAS_IOUNIT1_CONTROL_MASK_DEV_SUPPORT (0x0600)
2661#define MPI_SAS_IOUNIT1_CONTROL_SHIFT_DEV_SUPPORT (9)
2662#define MPI_SAS_IOUNIT1_CONTROL_DEV_SUPPORT_BOTH (0x00)
2663#define MPI_SAS_IOUNIT1_CONTROL_DEV_SAS_SUPPORT (0x01)
2664#define MPI_SAS_IOUNIT1_CONTROL_DEV_SATA_SUPPORT (0x02)
2665
2666#define MPI_SAS_IOUNIT1_CONTROL_POSTPONE_SATA_INIT (0x0100)
2667#define MPI_SAS_IOUNIT1_CONTROL_SATA_48BIT_LBA_REQUIRED (0x0080)
2668#define MPI_SAS_IOUNIT1_CONTROL_SATA_SMART_REQUIRED (0x0040)
2669#define MPI_SAS_IOUNIT1_CONTROL_SATA_NCQ_REQUIRED (0x0020)
2670#define MPI_SAS_IOUNIT1_CONTROL_SATA_FUA_REQUIRED (0x0010)
2671#define MPI_SAS_IOUNIT1_CONTROL_PHY_ENABLE_ORDER_HIGH (0x0008)
2672#define MPI_SAS_IOUNIT1_CONTROL_SUBTRACTIVE_ILLEGAL (0x0004)
2673#define MPI_SAS_IOUNIT1_CONTROL_FIRST_LVL_DISC_ONLY (0x0002)
2674#define MPI_SAS_IOUNIT1_CONTROL_CLEAR_AFFILIATION (0x0001)
2675
2676
2677#define MPI_SAS_IOUNIT1_ACONTROL_MULTI_PORT_DOMAIN_ILLEGAL (0x0080)
2678#define MPI_SAS_IOUNIT1_ACONTROL_SATA_ASYNCHROUNOUS_NOTIFICATION (0x0040)
2679#define MPI_SAS_IOUNIT1_ACONTROL_HIDE_NONZERO_ATTACHED_PHY_IDENT (0x0020)
2680#define MPI_SAS_IOUNIT1_ACONTROL_PORT_ENABLE_ONLY_SATA_LINK_RESET (0x0010)
2681#define MPI_SAS_IOUNIT1_ACONTROL_OTHER_AFFILIATION_SATA_LINK_RESET (0x0008)
2682#define MPI_SAS_IOUNIT1_ACONTROL_SELF_AFFILIATION_SATA_LINK_RESET (0x0004)
2683#define MPI_SAS_IOUNIT1_ACONTROL_NO_AFFILIATION_SATA_LINK_RESET (0x0002)
2684#define MPI_SAS_IOUNIT1_ACONTROL_ALLOW_TABLE_TO_TABLE (0x0001)
2685
2686
2687#define MPI_SAS_IOUNIT1_REPORT_MISSING_TIMEOUT_MASK (0x7F)
2688#define MPI_SAS_IOUNIT1_REPORT_MISSING_UNIT_16 (0x80)
2689
2690
2691#define MPI_SAS_IOUNIT1_PORT_FLAGS_0_TARGET_IOC_NUM (0x00)
2692#define MPI_SAS_IOUNIT1_PORT_FLAGS_1_TARGET_IOC_NUM (0x04)
2693#define MPI_SAS_IOUNIT1_PORT_FLAGS_AUTO_PORT_CONFIG (0x01)
2694
2695
2696#define MPI_SAS_IOUNIT1_PHY_FLAGS_PHY_DISABLE (0x04)
2697#define MPI_SAS_IOUNIT1_PHY_FLAGS_TX_INVERT (0x02)
2698#define MPI_SAS_IOUNIT1_PHY_FLAGS_RX_INVERT (0x01)
2699
2700
2701#define MPI_SAS_IOUNIT1_MAX_RATE_MASK (0xF0)
2702#define MPI_SAS_IOUNIT1_MAX_RATE_1_5 (0x80)
2703#define MPI_SAS_IOUNIT1_MAX_RATE_3_0 (0x90)
2704#define MPI_SAS_IOUNIT1_MIN_RATE_MASK (0x0F)
2705#define MPI_SAS_IOUNIT1_MIN_RATE_1_5 (0x08)
2706#define MPI_SAS_IOUNIT1_MIN_RATE_3_0 (0x09)
2707
2708
2709
2710
2711typedef struct _CONFIG_PAGE_SAS_IO_UNIT_2
2712{
2713 CONFIG_EXTENDED_PAGE_HEADER Header;
2714 U8 NumDevsPerEnclosure;
2715 U8 Reserved1;
2716 U16 Reserved2;
2717 U16 MaxPersistentIDs;
2718 U16 NumPersistentIDsUsed;
2719 U8 Status;
2720 U8 Flags;
2721 U16 MaxNumPhysicalMappedIDs;
2722} CONFIG_PAGE_SAS_IO_UNIT_2, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_2,
2723 SasIOUnitPage2_t, MPI_POINTER pSasIOUnitPage2_t;
2724
2725#define MPI_SASIOUNITPAGE2_PAGEVERSION (0x06)
2726
2727
2728#define MPI_SAS_IOUNIT2_STATUS_DEVICE_LIMIT_EXCEEDED (0x08)
2729#define MPI_SAS_IOUNIT2_STATUS_ENCLOSURE_DEVICES_UNMAPPED (0x04)
2730#define MPI_SAS_IOUNIT2_STATUS_DISABLED_PERSISTENT_MAPPINGS (0x02)
2731#define MPI_SAS_IOUNIT2_STATUS_FULL_PERSISTENT_MAPPINGS (0x01)
2732
2733
2734#define MPI_SAS_IOUNIT2_FLAGS_DISABLE_PERSISTENT_MAPPINGS (0x01)
2735
2736#define MPI_SAS_IOUNIT2_FLAGS_MASK_PHYS_MAP_MODE (0x0E)
2737#define MPI_SAS_IOUNIT2_FLAGS_SHIFT_PHYS_MAP_MODE (1)
2738#define MPI_SAS_IOUNIT2_FLAGS_NO_PHYS_MAP (0x00)
2739#define MPI_SAS_IOUNIT2_FLAGS_DIRECT_ATTACH_PHYS_MAP (0x01)
2740#define MPI_SAS_IOUNIT2_FLAGS_ENCLOSURE_SLOT_PHYS_MAP (0x02)
2741#define MPI_SAS_IOUNIT2_FLAGS_HOST_ASSIGNED_PHYS_MAP (0x07)
2742
2743#define MPI_SAS_IOUNIT2_FLAGS_RESERVE_ID_0_FOR_BOOT (0x10)
2744#define MPI_SAS_IOUNIT2_FLAGS_DA_STARTING_SLOT (0x20)
2745
2746
2747typedef struct _CONFIG_PAGE_SAS_IO_UNIT_3
2748{
2749 CONFIG_EXTENDED_PAGE_HEADER Header;
2750 U32 Reserved1;
2751 U32 MaxInvalidDwordCount;
2752 U32 InvalidDwordCountTime;
2753 U32 MaxRunningDisparityErrorCount;
2754 U32 RunningDisparityErrorTime;
2755 U32 MaxLossDwordSynchCount;
2756 U32 LossDwordSynchCountTime;
2757 U32 MaxPhyResetProblemCount;
2758 U32 PhyResetProblemTime;
2759} CONFIG_PAGE_SAS_IO_UNIT_3, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_3,
2760 SasIOUnitPage3_t, MPI_POINTER pSasIOUnitPage3_t;
2761
2762#define MPI_SASIOUNITPAGE3_PAGEVERSION (0x00)
2763
2764
2765
2766
2767
2768
2769typedef struct _CONFIG_PAGE_SAS_EXPANDER_0
2770{
2771 CONFIG_EXTENDED_PAGE_HEADER Header;
2772 U8 PhysicalPort;
2773 U8 Reserved1;
2774 U16 EnclosureHandle;
2775 U64 SASAddress;
2776 U32 DiscoveryStatus;
2777 U16 DevHandle;
2778 U16 ParentDevHandle;
2779 U16 ExpanderChangeCount;
2780 U16 ExpanderRouteIndexes;
2781 U8 NumPhys;
2782 U8 SASLevel;
2783 U8 Flags;
2784 U8 Reserved3;
2785} CONFIG_PAGE_SAS_EXPANDER_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_EXPANDER_0,
2786 SasExpanderPage0_t, MPI_POINTER pSasExpanderPage0_t;
2787
2788#define MPI_SASEXPANDER0_PAGEVERSION (0x03)
2789
2790
2791#define MPI_SAS_EXPANDER0_DS_LOOP_DETECTED (0x00000001)
2792#define MPI_SAS_EXPANDER0_DS_UNADDRESSABLE_DEVICE (0x00000002)
2793#define MPI_SAS_EXPANDER0_DS_MULTIPLE_PORTS (0x00000004)
2794#define MPI_SAS_EXPANDER0_DS_EXPANDER_ERR (0x00000008)
2795#define MPI_SAS_EXPANDER0_DS_SMP_TIMEOUT (0x00000010)
2796#define MPI_SAS_EXPANDER0_DS_OUT_ROUTE_ENTRIES (0x00000020)
2797#define MPI_SAS_EXPANDER0_DS_INDEX_NOT_EXIST (0x00000040)
2798#define MPI_SAS_EXPANDER0_DS_SMP_FUNCTION_FAILED (0x00000080)
2799#define MPI_SAS_EXPANDER0_DS_SMP_CRC_ERROR (0x00000100)
2800#define MPI_SAS_EXPANDER0_DS_SUBTRACTIVE_LINK (0x00000200)
2801#define MPI_SAS_EXPANDER0_DS_TABLE_LINK (0x00000400)
2802#define MPI_SAS_EXPANDER0_DS_UNSUPPORTED_DEVICE (0x00000800)
2803
2804
2805#define MPI_SAS_EXPANDER0_FLAGS_CONNECTOR_END_DEVICE (0x04)
2806#define MPI_SAS_EXPANDER0_FLAGS_ROUTE_TABLE_CONFIG (0x02)
2807#define MPI_SAS_EXPANDER0_FLAGS_CONFIG_IN_PROGRESS (0x01)
2808
2809
2810typedef struct _CONFIG_PAGE_SAS_EXPANDER_1
2811{
2812 CONFIG_EXTENDED_PAGE_HEADER Header;
2813 U8 PhysicalPort;
2814 U8 Reserved1;
2815 U16 Reserved2;
2816 U8 NumPhys;
2817 U8 Phy;
2818 U16 NumTableEntriesProgrammed;
2819 U8 ProgrammedLinkRate;
2820 U8 HwLinkRate;
2821 U16 AttachedDevHandle;
2822 U32 PhyInfo;
2823 U32 AttachedDeviceInfo;
2824 U16 OwnerDevHandle;
2825 U8 ChangeCount;
2826 U8 NegotiatedLinkRate;
2827 U8 PhyIdentifier;
2828 U8 AttachedPhyIdentifier;
2829 U8 Reserved3;
2830 U8 DiscoveryInfo;
2831 U32 Reserved4;
2832} CONFIG_PAGE_SAS_EXPANDER_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_EXPANDER_1,
2833 SasExpanderPage1_t, MPI_POINTER pSasExpanderPage1_t;
2834
2835#define MPI_SASEXPANDER1_PAGEVERSION (0x01)
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846#define MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED (0x04)
2847#define MPI_SAS_EXPANDER1_DISCINFO_LINK_STATUS_CHANGE (0x02)
2848#define MPI_SAS_EXPANDER1_DISCINFO_NO_ROUTING_ENTRIES (0x01)
2849
2850
2851#define MPI_SAS_EXPANDER1_NEG_RATE_UNKNOWN (0x00)
2852#define MPI_SAS_EXPANDER1_NEG_RATE_PHY_DISABLED (0x01)
2853#define MPI_SAS_EXPANDER1_NEG_RATE_FAILED_NEGOTIATION (0x02)
2854#define MPI_SAS_EXPANDER1_NEG_RATE_SATA_OOB_COMPLETE (0x03)
2855#define MPI_SAS_EXPANDER1_NEG_RATE_1_5 (0x08)
2856#define MPI_SAS_EXPANDER1_NEG_RATE_3_0 (0x09)
2857
2858
2859
2860
2861
2862
2863typedef struct _CONFIG_PAGE_SAS_DEVICE_0
2864{
2865 CONFIG_EXTENDED_PAGE_HEADER Header;
2866 U16 Slot;
2867 U16 EnclosureHandle;
2868 U64 SASAddress;
2869 U16 ParentDevHandle;
2870 U8 PhyNum;
2871 U8 AccessStatus;
2872 U16 DevHandle;
2873 U8 TargetID;
2874 U8 Bus;
2875 U32 DeviceInfo;
2876 U16 Flags;
2877 U8 PhysicalPort;
2878 U8 Reserved2;
2879} CONFIG_PAGE_SAS_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_0,
2880 SasDevicePage0_t, MPI_POINTER pSasDevicePage0_t;
2881
2882#define MPI_SASDEVICE0_PAGEVERSION (0x05)
2883
2884
2885#define MPI_SAS_DEVICE0_ASTATUS_NO_ERRORS (0x00)
2886#define MPI_SAS_DEVICE0_ASTATUS_SATA_INIT_FAILED (0x01)
2887#define MPI_SAS_DEVICE0_ASTATUS_SATA_CAPABILITY_FAILED (0x02)
2888#define MPI_SAS_DEVICE0_ASTATUS_SATA_AFFILIATION_CONFLICT (0x03)
2889#define MPI_SAS_DEVICE0_ASTATUS_SATA_NEEDS_INITIALIZATION (0x04)
2890
2891#define MPI_SAS_DEVICE0_ASTATUS_SIF_UNKNOWN (0x10)
2892#define MPI_SAS_DEVICE0_ASTATUS_SIF_AFFILIATION_CONFLICT (0x11)
2893#define MPI_SAS_DEVICE0_ASTATUS_SIF_DIAG (0x12)
2894#define MPI_SAS_DEVICE0_ASTATUS_SIF_IDENTIFICATION (0x13)
2895#define MPI_SAS_DEVICE0_ASTATUS_SIF_CHECK_POWER (0x14)
2896#define MPI_SAS_DEVICE0_ASTATUS_SIF_PIO_SN (0x15)
2897#define MPI_SAS_DEVICE0_ASTATUS_SIF_MDMA_SN (0x16)
2898#define MPI_SAS_DEVICE0_ASTATUS_SIF_UDMA_SN (0x17)
2899#define MPI_SAS_DEVICE0_ASTATUS_SIF_ZONING_VIOLATION (0x18)
2900#define MPI_SAS_DEVICE0_ASTATUS_SIF_NOT_ADDRESSABLE (0x19)
2901#define MPI_SAS_DEVICE0_ASTATUS_SIF_MAX (0x1F)
2902
2903
2904#define MPI_SAS_DEVICE0_FLAGS_SATA_ASYNCHRONOUS_NOTIFY (0x0400)
2905#define MPI_SAS_DEVICE0_FLAGS_SATA_SW_PRESERVE (0x0200)
2906#define MPI_SAS_DEVICE0_FLAGS_UNSUPPORTED_DEVICE (0x0100)
2907#define MPI_SAS_DEVICE0_FLAGS_SATA_48BIT_LBA_SUPPORTED (0x0080)
2908#define MPI_SAS_DEVICE0_FLAGS_SATA_SMART_SUPPORTED (0x0040)
2909#define MPI_SAS_DEVICE0_FLAGS_SATA_NCQ_SUPPORTED (0x0020)
2910#define MPI_SAS_DEVICE0_FLAGS_SATA_FUA_SUPPORTED (0x0010)
2911#define MPI_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH (0x0008)
2912#define MPI_SAS_DEVICE0_FLAGS_MAPPING_PERSISTENT (0x0004)
2913#define MPI_SAS_DEVICE0_FLAGS_DEVICE_MAPPED (0x0002)
2914#define MPI_SAS_DEVICE0_FLAGS_DEVICE_PRESENT (0x0001)
2915
2916
2917
2918
2919typedef struct _CONFIG_PAGE_SAS_DEVICE_1
2920{
2921 CONFIG_EXTENDED_PAGE_HEADER Header;
2922 U32 Reserved1;
2923 U64 SASAddress;
2924 U32 Reserved2;
2925 U16 DevHandle;
2926 U8 TargetID;
2927 U8 Bus;
2928 U8 InitialRegDeviceFIS[20];
2929} CONFIG_PAGE_SAS_DEVICE_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_1,
2930 SasDevicePage1_t, MPI_POINTER pSasDevicePage1_t;
2931
2932#define MPI_SASDEVICE1_PAGEVERSION (0x00)
2933
2934
2935typedef struct _CONFIG_PAGE_SAS_DEVICE_2
2936{
2937 CONFIG_EXTENDED_PAGE_HEADER Header;
2938 U64 PhysicalIdentifier;
2939 U32 EnclosureMapping;
2940} CONFIG_PAGE_SAS_DEVICE_2, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_2,
2941 SasDevicePage2_t, MPI_POINTER pSasDevicePage2_t;
2942
2943#define MPI_SASDEVICE2_PAGEVERSION (0x01)
2944
2945
2946#define MPI_SASDEVICE2_ENC_MAP_MASK_MISSING_COUNT (0x0000000F)
2947#define MPI_SASDEVICE2_ENC_MAP_SHIFT_MISSING_COUNT (0)
2948#define MPI_SASDEVICE2_ENC_MAP_MASK_NUM_SLOTS (0x000007F0)
2949#define MPI_SASDEVICE2_ENC_MAP_SHIFT_NUM_SLOTS (4)
2950#define MPI_SASDEVICE2_ENC_MAP_MASK_START_INDEX (0x001FF800)
2951#define MPI_SASDEVICE2_ENC_MAP_SHIFT_START_INDEX (11)
2952
2953
2954
2955
2956
2957
2958typedef struct _CONFIG_PAGE_SAS_PHY_0
2959{
2960 CONFIG_EXTENDED_PAGE_HEADER Header;
2961 U16 OwnerDevHandle;
2962 U16 Reserved1;
2963 U64 SASAddress;
2964 U16 AttachedDevHandle;
2965 U8 AttachedPhyIdentifier;
2966 U8 Reserved2;
2967 U32 AttachedDeviceInfo;
2968 U8 ProgrammedLinkRate;
2969 U8 HwLinkRate;
2970 U8 ChangeCount;
2971 U8 Flags;
2972 U32 PhyInfo;
2973} CONFIG_PAGE_SAS_PHY_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_PHY_0,
2974 SasPhyPage0_t, MPI_POINTER pSasPhyPage0_t;
2975
2976#define MPI_SASPHY0_PAGEVERSION (0x01)
2977
2978
2979#define MPI_SAS_PHY0_PRATE_MAX_RATE_MASK (0xF0)
2980#define MPI_SAS_PHY0_PRATE_MAX_RATE_NOT_PROGRAMMABLE (0x00)
2981#define MPI_SAS_PHY0_PRATE_MAX_RATE_1_5 (0x80)
2982#define MPI_SAS_PHY0_PRATE_MAX_RATE_3_0 (0x90)
2983#define MPI_SAS_PHY0_PRATE_MIN_RATE_MASK (0x0F)
2984#define MPI_SAS_PHY0_PRATE_MIN_RATE_NOT_PROGRAMMABLE (0x00)
2985#define MPI_SAS_PHY0_PRATE_MIN_RATE_1_5 (0x08)
2986#define MPI_SAS_PHY0_PRATE_MIN_RATE_3_0 (0x09)
2987
2988
2989#define MPI_SAS_PHY0_HWRATE_MAX_RATE_MASK (0xF0)
2990#define MPI_SAS_PHY0_HWRATE_MAX_RATE_1_5 (0x80)
2991#define MPI_SAS_PHY0_HWRATE_MAX_RATE_3_0 (0x90)
2992#define MPI_SAS_PHY0_HWRATE_MIN_RATE_MASK (0x0F)
2993#define MPI_SAS_PHY0_HWRATE_MIN_RATE_1_5 (0x08)
2994#define MPI_SAS_PHY0_HWRATE_MIN_RATE_3_0 (0x09)
2995
2996
2997#define MPI_SAS_PHY0_FLAGS_SGPIO_DIRECT_ATTACH_ENC (0x01)
2998
2999
3000#define MPI_SAS_PHY0_PHYINFO_SATA_PORT_ACTIVE (0x00004000)
3001#define MPI_SAS_PHY0_PHYINFO_SATA_PORT_SELECTOR (0x00002000)
3002#define MPI_SAS_PHY0_PHYINFO_VIRTUAL_PHY (0x00001000)
3003
3004#define MPI_SAS_PHY0_PHYINFO_MASK_PARTIAL_PATHWAY_TIME (0x00000F00)
3005#define MPI_SAS_PHY0_PHYINFO_SHIFT_PARTIAL_PATHWAY_TIME (8)
3006
3007#define MPI_SAS_PHY0_PHYINFO_MASK_ROUTING_ATTRIBUTE (0x000000F0)
3008#define MPI_SAS_PHY0_PHYINFO_DIRECT_ROUTING (0x00000000)
3009#define MPI_SAS_PHY0_PHYINFO_SUBTRACTIVE_ROUTING (0x00000010)
3010#define MPI_SAS_PHY0_PHYINFO_TABLE_ROUTING (0x00000020)
3011
3012#define MPI_SAS_PHY0_PHYINFO_MASK_LINK_RATE (0x0000000F)
3013#define MPI_SAS_PHY0_PHYINFO_UNKNOWN_LINK_RATE (0x00000000)
3014#define MPI_SAS_PHY0_PHYINFO_PHY_DISABLED (0x00000001)
3015#define MPI_SAS_PHY0_PHYINFO_NEGOTIATION_FAILED (0x00000002)
3016#define MPI_SAS_PHY0_PHYINFO_SATA_OOB_COMPLETE (0x00000003)
3017#define MPI_SAS_PHY0_PHYINFO_RATE_1_5 (0x00000008)
3018#define MPI_SAS_PHY0_PHYINFO_RATE_3_0 (0x00000009)
3019
3020
3021typedef struct _CONFIG_PAGE_SAS_PHY_1
3022{
3023 CONFIG_EXTENDED_PAGE_HEADER Header;
3024 U32 Reserved1;
3025 U32 InvalidDwordCount;
3026 U32 RunningDisparityErrorCount;
3027 U32 LossDwordSynchCount;
3028 U32 PhyResetProblemCount;
3029} CONFIG_PAGE_SAS_PHY_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_PHY_1,
3030 SasPhyPage1_t, MPI_POINTER pSasPhyPage1_t;
3031
3032#define MPI_SASPHY1_PAGEVERSION (0x00)
3033
3034
3035
3036
3037
3038
3039typedef struct _CONFIG_PAGE_SAS_ENCLOSURE_0
3040{
3041 CONFIG_EXTENDED_PAGE_HEADER Header;
3042 U32 Reserved1;
3043 U64 EnclosureLogicalID;
3044 U16 Flags;
3045 U16 EnclosureHandle;
3046 U16 NumSlots;
3047 U16 StartSlot;
3048 U8 StartTargetID;
3049 U8 StartBus;
3050 U8 SEPTargetID;
3051 U8 SEPBus;
3052 U32 Reserved2;
3053 U32 Reserved3;
3054} CONFIG_PAGE_SAS_ENCLOSURE_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_ENCLOSURE_0,
3055 SasEnclosurePage0_t, MPI_POINTER pSasEnclosurePage0_t;
3056
3057#define MPI_SASENCLOSURE0_PAGEVERSION (0x01)
3058
3059
3060#define MPI_SAS_ENCLS0_FLAGS_SEP_BUS_ID_VALID (0x0020)
3061#define MPI_SAS_ENCLS0_FLAGS_START_BUS_ID_VALID (0x0010)
3062
3063#define MPI_SAS_ENCLS0_FLAGS_MNG_MASK (0x000F)
3064#define MPI_SAS_ENCLS0_FLAGS_MNG_UNKNOWN (0x0000)
3065#define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_SES (0x0001)
3066#define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_SGPIO (0x0002)
3067#define MPI_SAS_ENCLS0_FLAGS_MNG_EXP_SGPIO (0x0003)
3068#define MPI_SAS_ENCLS0_FLAGS_MNG_SES_ENCLOSURE (0x0004)
3069#define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_GPIO (0x0005)
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079#ifndef MPI_LOG_0_NUM_LOG_ENTRIES
3080#define MPI_LOG_0_NUM_LOG_ENTRIES (1)
3081#endif
3082
3083#define MPI_LOG_0_LOG_DATA_LENGTH (0x1C)
3084
3085typedef struct _MPI_LOG_0_ENTRY
3086{
3087 U32 TimeStamp;
3088 U32 Reserved1;
3089 U16 LogSequence;
3090 U16 LogEntryQualifier;
3091 U8 LogData[MPI_LOG_0_LOG_DATA_LENGTH];
3092} MPI_LOG_0_ENTRY, MPI_POINTER PTR_MPI_LOG_0_ENTRY,
3093 MpiLog0Entry_t, MPI_POINTER pMpiLog0Entry_t;
3094
3095
3096#define MPI_LOG_0_ENTRY_QUAL_ENTRY_UNUSED (0x0000)
3097#define MPI_LOG_0_ENTRY_QUAL_POWER_ON_RESET (0x0001)
3098
3099typedef struct _CONFIG_PAGE_LOG_0
3100{
3101 CONFIG_EXTENDED_PAGE_HEADER Header;
3102 U32 Reserved1;
3103 U32 Reserved2;
3104 U16 NumLogEntries;
3105 U16 Reserved3;
3106 MPI_LOG_0_ENTRY LogEntry[MPI_LOG_0_NUM_LOG_ENTRIES];
3107} CONFIG_PAGE_LOG_0, MPI_POINTER PTR_CONFIG_PAGE_LOG_0,
3108 LogPage0_t, MPI_POINTER pLogPage0_t;
3109
3110#define MPI_LOG_0_PAGEVERSION (0x01)
3111
3112
3113#endif
3114
3115