0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185 #ifndef MPI2_IOC_H
0186 #define MPI2_IOC_H
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199 typedef struct _MPI2_IOC_INIT_REQUEST {
0200 U8 WhoInit;
0201 U8 Reserved1;
0202 U8 ChainOffset;
0203 U8 Function;
0204 U16 Reserved2;
0205 U8 Reserved3;
0206 U8 MsgFlags;
0207 U8 VP_ID;
0208 U8 VF_ID;
0209 U16 Reserved4;
0210 U16 MsgVersion;
0211 U16 HeaderVersion;
0212 U32 Reserved5;
0213 U16 ConfigurationFlags;
0214 U8 HostPageSize;
0215 U8 HostMSIxVectors;
0216 U16 Reserved8;
0217 U16 SystemRequestFrameSize;
0218 U16 ReplyDescriptorPostQueueDepth;
0219 U16 ReplyFreeQueueDepth;
0220 U32 SenseBufferAddressHigh;
0221 U32 SystemReplyAddressHigh;
0222 U64 SystemRequestFrameBaseAddress;
0223 U64 ReplyDescriptorPostQueueAddress;
0224 U64 ReplyFreeQueueAddress;
0225 U64 TimeStamp;
0226 } MPI2_IOC_INIT_REQUEST, *PTR_MPI2_IOC_INIT_REQUEST,
0227 Mpi2IOCInitRequest_t, *pMpi2IOCInitRequest_t;
0228
0229
0230 #define MPI2_WHOINIT_NOT_INITIALIZED (0x00)
0231 #define MPI2_WHOINIT_SYSTEM_BIOS (0x01)
0232 #define MPI2_WHOINIT_ROM_BIOS (0x02)
0233 #define MPI2_WHOINIT_PCI_PEER (0x03)
0234 #define MPI2_WHOINIT_HOST_DRIVER (0x04)
0235 #define MPI2_WHOINIT_MANUFACTURER (0x05)
0236
0237
0238 #define MPI2_IOCINIT_MSGFLAG_RDPQ_ARRAY_MODE (0x01)
0239
0240
0241
0242 #define MPI2_IOCINIT_MSGVERSION_MAJOR_MASK (0xFF00)
0243 #define MPI2_IOCINIT_MSGVERSION_MAJOR_SHIFT (8)
0244 #define MPI2_IOCINIT_MSGVERSION_MINOR_MASK (0x00FF)
0245 #define MPI2_IOCINIT_MSGVERSION_MINOR_SHIFT (0)
0246
0247
0248 #define MPI2_IOCINIT_HDRVERSION_UNIT_MASK (0xFF00)
0249 #define MPI2_IOCINIT_HDRVERSION_UNIT_SHIFT (8)
0250 #define MPI2_IOCINIT_HDRVERSION_DEV_MASK (0x00FF)
0251 #define MPI2_IOCINIT_HDRVERSION_DEV_SHIFT (0)
0252
0253
0254 #define MPI26_IOCINIT_CFGFLAGS_NVME_SGL_FORMAT (0x0001)
0255 #define MPI26_IOCINIT_CFGFLAGS_COREDUMP_ENABLE (0x0002)
0256
0257
0258 #define MPI2_RDPQ_DEPTH_MIN (16)
0259
0260
0261 typedef struct _MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY {
0262 U64 RDPQBaseAddress;
0263 U32 Reserved1;
0264 U32 Reserved2;
0265 } MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY,
0266 *PTR_MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY,
0267 Mpi2IOCInitRDPQArrayEntry, *pMpi2IOCInitRDPQArrayEntry;
0268
0269
0270
0271 typedef struct _MPI2_IOC_INIT_REPLY {
0272 U8 WhoInit;
0273 U8 Reserved1;
0274 U8 MsgLength;
0275 U8 Function;
0276 U16 Reserved2;
0277 U8 Reserved3;
0278 U8 MsgFlags;
0279 U8 VP_ID;
0280 U8 VF_ID;
0281 U16 Reserved4;
0282 U16 Reserved5;
0283 U16 IOCStatus;
0284 U32 IOCLogInfo;
0285 } MPI2_IOC_INIT_REPLY, *PTR_MPI2_IOC_INIT_REPLY,
0286 Mpi2IOCInitReply_t, *pMpi2IOCInitReply_t;
0287
0288
0289
0290
0291
0292
0293 typedef struct _MPI2_IOC_FACTS_REQUEST {
0294 U16 Reserved1;
0295 U8 ChainOffset;
0296 U8 Function;
0297 U16 Reserved2;
0298 U8 Reserved3;
0299 U8 MsgFlags;
0300 U8 VP_ID;
0301 U8 VF_ID;
0302 U16 Reserved4;
0303 } MPI2_IOC_FACTS_REQUEST, *PTR_MPI2_IOC_FACTS_REQUEST,
0304 Mpi2IOCFactsRequest_t, *pMpi2IOCFactsRequest_t;
0305
0306
0307 typedef struct _MPI2_IOC_FACTS_REPLY {
0308 U16 MsgVersion;
0309 U8 MsgLength;
0310 U8 Function;
0311 U16 HeaderVersion;
0312 U8 IOCNumber;
0313 U8 MsgFlags;
0314 U8 VP_ID;
0315 U8 VF_ID;
0316 U16 Reserved1;
0317 U16 IOCExceptions;
0318 U16 IOCStatus;
0319 U32 IOCLogInfo;
0320 U8 MaxChainDepth;
0321 U8 WhoInit;
0322 U8 NumberOfPorts;
0323 U8 MaxMSIxVectors;
0324 U16 RequestCredit;
0325 U16 ProductID;
0326 U32 IOCCapabilities;
0327 MPI2_VERSION_UNION FWVersion;
0328 U16 IOCRequestFrameSize;
0329 U16 IOCMaxChainSegmentSize;
0330 U16 MaxInitiators;
0331 U16 MaxTargets;
0332 U16 MaxSasExpanders;
0333 U16 MaxEnclosures;
0334 U16 ProtocolFlags;
0335 U16 HighPriorityCredit;
0336 U16 MaxReplyDescriptorPostQueueDepth;
0337 U8 ReplyFrameSize;
0338 U8 MaxVolumes;
0339 U16 MaxDevHandle;
0340 U16 MaxPersistentEntries;
0341 U16 MinDevHandle;
0342 U8 CurrentHostPageSize;
0343 U8 Reserved4;
0344 U8 SGEModifierMask;
0345 U8 SGEModifierValue;
0346 U8 SGEModifierShift;
0347 U8 Reserved5;
0348 } MPI2_IOC_FACTS_REPLY, *PTR_MPI2_IOC_FACTS_REPLY,
0349 Mpi2IOCFactsReply_t, *pMpi2IOCFactsReply_t;
0350
0351
0352 #define MPI2_IOCFACTS_MSGVERSION_MAJOR_MASK (0xFF00)
0353 #define MPI2_IOCFACTS_MSGVERSION_MAJOR_SHIFT (8)
0354 #define MPI2_IOCFACTS_MSGVERSION_MINOR_MASK (0x00FF)
0355 #define MPI2_IOCFACTS_MSGVERSION_MINOR_SHIFT (0)
0356
0357
0358 #define MPI2_IOCFACTS_HDRVERSION_UNIT_MASK (0xFF00)
0359 #define MPI2_IOCFACTS_HDRVERSION_UNIT_SHIFT (8)
0360 #define MPI2_IOCFACTS_HDRVERSION_DEV_MASK (0x00FF)
0361 #define MPI2_IOCFACTS_HDRVERSION_DEV_SHIFT (0)
0362
0363
0364 #define MPI2_IOCFACTS_EXCEPT_PCIE_DISABLED (0x0400)
0365 #define MPI2_IOCFACTS_EXCEPT_PARTIAL_MEMORY_FAILURE (0x0200)
0366 #define MPI2_IOCFACTS_EXCEPT_IR_FOREIGN_CONFIG_MAX (0x0100)
0367
0368 #define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_MASK (0x00E0)
0369 #define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_GOOD (0x0000)
0370 #define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_BACKUP (0x0020)
0371 #define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_RESTORED (0x0040)
0372 #define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_CORRUPT_BACKUP (0x0060)
0373
0374 #define MPI2_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED (0x0010)
0375 #define MPI2_IOCFACTS_EXCEPT_MANUFACT_CHECKSUM_FAIL (0x0008)
0376 #define MPI2_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL (0x0004)
0377 #define MPI2_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID (0x0002)
0378 #define MPI2_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL (0x0001)
0379
0380
0381
0382
0383
0384
0385 #define MPI26_IOCFACTS_CAPABILITY_COREDUMP_ENABLED (0x00200000)
0386 #define MPI26_IOCFACTS_CAPABILITY_PCIE_SRIOV (0x00100000)
0387 #define MPI26_IOCFACTS_CAPABILITY_ATOMIC_REQ (0x00080000)
0388 #define MPI2_IOCFACTS_CAPABILITY_RDPQ_ARRAY_CAPABLE (0x00040000)
0389 #define MPI25_IOCFACTS_CAPABILITY_FAST_PATH_CAPABLE (0x00020000)
0390 #define MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY (0x00010000)
0391 #define MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX (0x00008000)
0392 #define MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR (0x00004000)
0393 #define MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY (0x00002000)
0394 #define MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID (0x00001000)
0395 #define MPI2_IOCFACTS_CAPABILITY_TLR (0x00000800)
0396 #define MPI2_IOCFACTS_CAPABILITY_MULTICAST (0x00000100)
0397 #define MPI2_IOCFACTS_CAPABILITY_BIDIRECTIONAL_TARGET (0x00000080)
0398 #define MPI2_IOCFACTS_CAPABILITY_EEDP (0x00000040)
0399 #define MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER (0x00000020)
0400 #define MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010)
0401 #define MPI2_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008)
0402 #define MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING (0x00000004)
0403
0404
0405 #define MPI2_IOCFACTS_PROTOCOL_NVME_DEVICES (0x0008)
0406 #define MPI2_IOCFACTS_PROTOCOL_SCSI_INITIATOR (0x0002)
0407 #define MPI2_IOCFACTS_PROTOCOL_SCSI_TARGET (0x0001)
0408
0409
0410
0411
0412
0413
0414 typedef struct _MPI2_PORT_FACTS_REQUEST {
0415 U16 Reserved1;
0416 U8 ChainOffset;
0417 U8 Function;
0418 U16 Reserved2;
0419 U8 PortNumber;
0420 U8 MsgFlags;
0421 U8 VP_ID;
0422 U8 VF_ID;
0423 U16 Reserved3;
0424 } MPI2_PORT_FACTS_REQUEST, *PTR_MPI2_PORT_FACTS_REQUEST,
0425 Mpi2PortFactsRequest_t, *pMpi2PortFactsRequest_t;
0426
0427
0428 typedef struct _MPI2_PORT_FACTS_REPLY {
0429 U16 Reserved1;
0430 U8 MsgLength;
0431 U8 Function;
0432 U16 Reserved2;
0433 U8 PortNumber;
0434 U8 MsgFlags;
0435 U8 VP_ID;
0436 U8 VF_ID;
0437 U16 Reserved3;
0438 U16 Reserved4;
0439 U16 IOCStatus;
0440 U32 IOCLogInfo;
0441 U8 Reserved5;
0442 U8 PortType;
0443 U16 Reserved6;
0444 U16 MaxPostedCmdBuffers;
0445 U16 Reserved7;
0446 } MPI2_PORT_FACTS_REPLY, *PTR_MPI2_PORT_FACTS_REPLY,
0447 Mpi2PortFactsReply_t, *pMpi2PortFactsReply_t;
0448
0449
0450 #define MPI2_PORTFACTS_PORTTYPE_INACTIVE (0x00)
0451 #define MPI2_PORTFACTS_PORTTYPE_FC (0x10)
0452 #define MPI2_PORTFACTS_PORTTYPE_ISCSI (0x20)
0453 #define MPI2_PORTFACTS_PORTTYPE_SAS_PHYSICAL (0x30)
0454 #define MPI2_PORTFACTS_PORTTYPE_SAS_VIRTUAL (0x31)
0455 #define MPI2_PORTFACTS_PORTTYPE_TRI_MODE (0x40)
0456
0457
0458
0459
0460
0461
0462
0463 typedef struct _MPI2_PORT_ENABLE_REQUEST {
0464 U16 Reserved1;
0465 U8 ChainOffset;
0466 U8 Function;
0467 U8 Reserved2;
0468 U8 PortFlags;
0469 U8 Reserved3;
0470 U8 MsgFlags;
0471 U8 VP_ID;
0472 U8 VF_ID;
0473 U16 Reserved4;
0474 } MPI2_PORT_ENABLE_REQUEST, *PTR_MPI2_PORT_ENABLE_REQUEST,
0475 Mpi2PortEnableRequest_t, *pMpi2PortEnableRequest_t;
0476
0477
0478 typedef struct _MPI2_PORT_ENABLE_REPLY {
0479 U16 Reserved1;
0480 U8 MsgLength;
0481 U8 Function;
0482 U8 Reserved2;
0483 U8 PortFlags;
0484 U8 Reserved3;
0485 U8 MsgFlags;
0486 U8 VP_ID;
0487 U8 VF_ID;
0488 U16 Reserved4;
0489 U16 Reserved5;
0490 U16 IOCStatus;
0491 U32 IOCLogInfo;
0492 } MPI2_PORT_ENABLE_REPLY, *PTR_MPI2_PORT_ENABLE_REPLY,
0493 Mpi2PortEnableReply_t, *pMpi2PortEnableReply_t;
0494
0495
0496
0497
0498
0499
0500 #define MPI2_EVENT_NOTIFY_EVENTMASK_WORDS (4)
0501
0502 typedef struct _MPI2_EVENT_NOTIFICATION_REQUEST {
0503 U16 Reserved1;
0504 U8 ChainOffset;
0505 U8 Function;
0506 U16 Reserved2;
0507 U8 Reserved3;
0508 U8 MsgFlags;
0509 U8 VP_ID;
0510 U8 VF_ID;
0511 U16 Reserved4;
0512 U32 Reserved5;
0513 U32 Reserved6;
0514 U32 EventMasks[MPI2_EVENT_NOTIFY_EVENTMASK_WORDS];
0515 U16 SASBroadcastPrimitiveMasks;
0516 U16 SASNotifyPrimitiveMasks;
0517 U32 Reserved8;
0518 } MPI2_EVENT_NOTIFICATION_REQUEST,
0519 *PTR_MPI2_EVENT_NOTIFICATION_REQUEST,
0520 Mpi2EventNotificationRequest_t,
0521 *pMpi2EventNotificationRequest_t;
0522
0523
0524 typedef struct _MPI2_EVENT_NOTIFICATION_REPLY {
0525 U16 EventDataLength;
0526 U8 MsgLength;
0527 U8 Function;
0528 U16 Reserved1;
0529 U8 AckRequired;
0530 U8 MsgFlags;
0531 U8 VP_ID;
0532 U8 VF_ID;
0533 U16 Reserved2;
0534 U16 Reserved3;
0535 U16 IOCStatus;
0536 U32 IOCLogInfo;
0537 U16 Event;
0538 U16 Reserved4;
0539 U32 EventContext;
0540 U32 EventData[];
0541 } MPI2_EVENT_NOTIFICATION_REPLY, *PTR_MPI2_EVENT_NOTIFICATION_REPLY,
0542 Mpi2EventNotificationReply_t,
0543 *pMpi2EventNotificationReply_t;
0544
0545
0546 #define MPI2_EVENT_NOTIFICATION_ACK_NOT_REQUIRED (0x00)
0547 #define MPI2_EVENT_NOTIFICATION_ACK_REQUIRED (0x01)
0548
0549
0550 #define MPI2_EVENT_LOG_DATA (0x0001)
0551 #define MPI2_EVENT_STATE_CHANGE (0x0002)
0552 #define MPI2_EVENT_HARD_RESET_RECEIVED (0x0005)
0553 #define MPI2_EVENT_EVENT_CHANGE (0x000A)
0554 #define MPI2_EVENT_TASK_SET_FULL (0x000E)
0555 #define MPI2_EVENT_SAS_DEVICE_STATUS_CHANGE (0x000F)
0556 #define MPI2_EVENT_IR_OPERATION_STATUS (0x0014)
0557 #define MPI2_EVENT_SAS_DISCOVERY (0x0016)
0558 #define MPI2_EVENT_SAS_BROADCAST_PRIMITIVE (0x0017)
0559 #define MPI2_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE (0x0018)
0560 #define MPI2_EVENT_SAS_INIT_TABLE_OVERFLOW (0x0019)
0561 #define MPI2_EVENT_SAS_TOPOLOGY_CHANGE_LIST (0x001C)
0562 #define MPI2_EVENT_SAS_ENCL_DEVICE_STATUS_CHANGE (0x001D)
0563 #define MPI2_EVENT_ENCL_DEVICE_STATUS_CHANGE (0x001D)
0564 #define MPI2_EVENT_IR_VOLUME (0x001E)
0565 #define MPI2_EVENT_IR_PHYSICAL_DISK (0x001F)
0566 #define MPI2_EVENT_IR_CONFIGURATION_CHANGE_LIST (0x0020)
0567 #define MPI2_EVENT_LOG_ENTRY_ADDED (0x0021)
0568 #define MPI2_EVENT_SAS_PHY_COUNTER (0x0022)
0569 #define MPI2_EVENT_GPIO_INTERRUPT (0x0023)
0570 #define MPI2_EVENT_HOST_BASED_DISCOVERY_PHY (0x0024)
0571 #define MPI2_EVENT_SAS_QUIESCE (0x0025)
0572 #define MPI2_EVENT_SAS_NOTIFY_PRIMITIVE (0x0026)
0573 #define MPI2_EVENT_TEMP_THRESHOLD (0x0027)
0574 #define MPI2_EVENT_HOST_MESSAGE (0x0028)
0575 #define MPI2_EVENT_POWER_PERFORMANCE_CHANGE (0x0029)
0576 #define MPI2_EVENT_PCIE_DEVICE_STATUS_CHANGE (0x0030)
0577 #define MPI2_EVENT_PCIE_ENUMERATION (0x0031)
0578 #define MPI2_EVENT_PCIE_TOPOLOGY_CHANGE_LIST (0x0032)
0579 #define MPI2_EVENT_PCIE_LINK_COUNTER (0x0033)
0580 #define MPI2_EVENT_ACTIVE_CABLE_EXCEPTION (0x0034)
0581 #define MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR (0x0035)
0582 #define MPI2_EVENT_MIN_PRODUCT_SPECIFIC (0x006E)
0583 #define MPI2_EVENT_MAX_PRODUCT_SPECIFIC (0x007F)
0584
0585
0586
0587
0588 #define MPI2_EVENT_DATA_LOG_DATA_LENGTH (0x1C)
0589
0590 typedef struct _MPI2_EVENT_DATA_LOG_ENTRY_ADDED {
0591 U64 TimeStamp;
0592 U32 Reserved1;
0593 U16 LogSequence;
0594 U16 LogEntryQualifier;
0595 U8 VP_ID;
0596 U8 VF_ID;
0597 U16 Reserved2;
0598 U8 LogData[MPI2_EVENT_DATA_LOG_DATA_LENGTH];
0599 } MPI2_EVENT_DATA_LOG_ENTRY_ADDED,
0600 *PTR_MPI2_EVENT_DATA_LOG_ENTRY_ADDED,
0601 Mpi2EventDataLogEntryAdded_t,
0602 *pMpi2EventDataLogEntryAdded_t;
0603
0604
0605
0606 typedef struct _MPI2_EVENT_DATA_GPIO_INTERRUPT {
0607 U8 GPIONum;
0608 U8 Reserved1;
0609 U16 Reserved2;
0610 } MPI2_EVENT_DATA_GPIO_INTERRUPT,
0611 *PTR_MPI2_EVENT_DATA_GPIO_INTERRUPT,
0612 Mpi2EventDataGpioInterrupt_t,
0613 *pMpi2EventDataGpioInterrupt_t;
0614
0615
0616
0617 typedef struct _MPI2_EVENT_DATA_TEMPERATURE {
0618 U16 Status;
0619 U8 SensorNum;
0620 U8 Reserved1;
0621 U16 CurrentTemperature;
0622 U16 Reserved2;
0623 U32 Reserved3;
0624 U32 Reserved4;
0625 } MPI2_EVENT_DATA_TEMPERATURE,
0626 *PTR_MPI2_EVENT_DATA_TEMPERATURE,
0627 Mpi2EventDataTemperature_t, *pMpi2EventDataTemperature_t;
0628
0629
0630 #define MPI2_EVENT_TEMPERATURE3_EXCEEDED (0x0008)
0631 #define MPI2_EVENT_TEMPERATURE2_EXCEEDED (0x0004)
0632 #define MPI2_EVENT_TEMPERATURE1_EXCEEDED (0x0002)
0633 #define MPI2_EVENT_TEMPERATURE0_EXCEEDED (0x0001)
0634
0635
0636
0637 typedef struct _MPI2_EVENT_DATA_HOST_MESSAGE {
0638 U8 SourceVF_ID;
0639 U8 Reserved1;
0640 U16 Reserved2;
0641 U32 Reserved3;
0642 U32 HostData[];
0643 } MPI2_EVENT_DATA_HOST_MESSAGE, *PTR_MPI2_EVENT_DATA_HOST_MESSAGE,
0644 Mpi2EventDataHostMessage_t, *pMpi2EventDataHostMessage_t;
0645
0646
0647
0648 typedef struct _MPI2_EVENT_DATA_POWER_PERF_CHANGE {
0649 U8 CurrentPowerMode;
0650 U8 PreviousPowerMode;
0651 U16 Reserved1;
0652 } MPI2_EVENT_DATA_POWER_PERF_CHANGE,
0653 *PTR_MPI2_EVENT_DATA_POWER_PERF_CHANGE,
0654 Mpi2EventDataPowerPerfChange_t,
0655 *pMpi2EventDataPowerPerfChange_t;
0656
0657
0658 #define MPI2_EVENT_PM_INIT_MASK (0xC0)
0659 #define MPI2_EVENT_PM_INIT_UNAVAILABLE (0x00)
0660 #define MPI2_EVENT_PM_INIT_HOST (0x40)
0661 #define MPI2_EVENT_PM_INIT_IO_UNIT (0x80)
0662 #define MPI2_EVENT_PM_INIT_PCIE_DPA (0xC0)
0663
0664 #define MPI2_EVENT_PM_MODE_MASK (0x07)
0665 #define MPI2_EVENT_PM_MODE_UNAVAILABLE (0x00)
0666 #define MPI2_EVENT_PM_MODE_UNKNOWN (0x01)
0667 #define MPI2_EVENT_PM_MODE_FULL_POWER (0x04)
0668 #define MPI2_EVENT_PM_MODE_REDUCED_POWER (0x05)
0669 #define MPI2_EVENT_PM_MODE_STANDBY (0x06)
0670
0671
0672
0673 typedef struct _MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT {
0674 U32 ActiveCablePowerRequirement;
0675 U8 ReasonCode;
0676 U8 ReceptacleID;
0677 U16 Reserved1;
0678 } MPI25_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
0679 *PTR_MPI25_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
0680 Mpi25EventDataActiveCableExcept_t,
0681 *pMpi25EventDataActiveCableExcept_t,
0682 MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
0683 *PTR_MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
0684 Mpi26EventDataActiveCableExcept_t,
0685 *pMpi26EventDataActiveCableExcept_t;
0686
0687
0688 #define MPI25_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER (0x00)
0689 #define MPI25_EVENT_ACTIVE_CABLE_PRESENT (0x01)
0690 #define MPI25_EVENT_ACTIVE_CABLE_DEGRADED (0x02)
0691
0692
0693 #define MPI26_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER (0x00)
0694 #define MPI26_EVENT_ACTIVE_CABLE_PRESENT (0x01)
0695 #define MPI26_EVENT_ACTIVE_CABLE_DEGRADED (0x02)
0696
0697
0698
0699 typedef struct _MPI2_EVENT_DATA_HARD_RESET_RECEIVED {
0700 U8 Reserved1;
0701 U8 Port;
0702 U16 Reserved2;
0703 } MPI2_EVENT_DATA_HARD_RESET_RECEIVED,
0704 *PTR_MPI2_EVENT_DATA_HARD_RESET_RECEIVED,
0705 Mpi2EventDataHardResetReceived_t,
0706 *pMpi2EventDataHardResetReceived_t;
0707
0708
0709
0710
0711 typedef struct _MPI2_EVENT_DATA_TASK_SET_FULL {
0712 U16 DevHandle;
0713 U16 CurrentDepth;
0714 } MPI2_EVENT_DATA_TASK_SET_FULL, *PTR_MPI2_EVENT_DATA_TASK_SET_FULL,
0715 Mpi2EventDataTaskSetFull_t, *pMpi2EventDataTaskSetFull_t;
0716
0717
0718
0719 typedef struct _MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE {
0720 U16 TaskTag;
0721 U8 ReasonCode;
0722 U8 PhysicalPort;
0723 U8 ASC;
0724 U8 ASCQ;
0725 U16 DevHandle;
0726 U32 Reserved2;
0727 U64 SASAddress;
0728 U8 LUN[8];
0729 } MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
0730 *PTR_MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
0731 Mpi2EventDataSasDeviceStatusChange_t,
0732 *pMpi2EventDataSasDeviceStatusChange_t;
0733
0734
0735 #define MPI2_EVENT_SAS_DEV_STAT_RC_SMART_DATA (0x05)
0736 #define MPI2_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED (0x07)
0737 #define MPI2_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET (0x08)
0738 #define MPI2_EVENT_SAS_DEV_STAT_RC_TASK_ABORT_INTERNAL (0x09)
0739 #define MPI2_EVENT_SAS_DEV_STAT_RC_ABORT_TASK_SET_INTERNAL (0x0A)
0740 #define MPI2_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B)
0741 #define MPI2_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C)
0742 #define MPI2_EVENT_SAS_DEV_STAT_RC_ASYNC_NOTIFICATION (0x0D)
0743 #define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_INTERNAL_DEV_RESET (0x0E)
0744 #define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_TASK_ABORT_INTERNAL (0x0F)
0745 #define MPI2_EVENT_SAS_DEV_STAT_RC_SATA_INIT_FAILURE (0x10)
0746 #define MPI2_EVENT_SAS_DEV_STAT_RC_EXPANDER_REDUCED_FUNCTIONALITY (0x11)
0747 #define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_EXPANDER_REDUCED_FUNCTIONALITY (0x12)
0748
0749
0750
0751 typedef struct _MPI2_EVENT_DATA_IR_OPERATION_STATUS {
0752 U16 VolDevHandle;
0753 U16 Reserved1;
0754 U8 RAIDOperation;
0755 U8 PercentComplete;
0756 U16 Reserved2;
0757 U32 ElapsedSeconds;
0758 } MPI2_EVENT_DATA_IR_OPERATION_STATUS,
0759 *PTR_MPI2_EVENT_DATA_IR_OPERATION_STATUS,
0760 Mpi2EventDataIrOperationStatus_t,
0761 *pMpi2EventDataIrOperationStatus_t;
0762
0763
0764 #define MPI2_EVENT_IR_RAIDOP_RESYNC (0x00)
0765 #define MPI2_EVENT_IR_RAIDOP_ONLINE_CAP_EXPANSION (0x01)
0766 #define MPI2_EVENT_IR_RAIDOP_CONSISTENCY_CHECK (0x02)
0767 #define MPI2_EVENT_IR_RAIDOP_BACKGROUND_INIT (0x03)
0768 #define MPI2_EVENT_IR_RAIDOP_MAKE_DATA_CONSISTENT (0x04)
0769
0770
0771
0772 typedef struct _MPI2_EVENT_DATA_IR_VOLUME {
0773 U16 VolDevHandle;
0774 U8 ReasonCode;
0775 U8 Reserved1;
0776 U32 NewValue;
0777 U32 PreviousValue;
0778 } MPI2_EVENT_DATA_IR_VOLUME, *PTR_MPI2_EVENT_DATA_IR_VOLUME,
0779 Mpi2EventDataIrVolume_t, *pMpi2EventDataIrVolume_t;
0780
0781
0782 #define MPI2_EVENT_IR_VOLUME_RC_SETTINGS_CHANGED (0x01)
0783 #define MPI2_EVENT_IR_VOLUME_RC_STATUS_FLAGS_CHANGED (0x02)
0784 #define MPI2_EVENT_IR_VOLUME_RC_STATE_CHANGED (0x03)
0785
0786
0787
0788 typedef struct _MPI2_EVENT_DATA_IR_PHYSICAL_DISK {
0789 U16 Reserved1;
0790 U8 ReasonCode;
0791 U8 PhysDiskNum;
0792 U16 PhysDiskDevHandle;
0793 U16 Reserved2;
0794 U16 Slot;
0795 U16 EnclosureHandle;
0796 U32 NewValue;
0797 U32 PreviousValue;
0798 } MPI2_EVENT_DATA_IR_PHYSICAL_DISK,
0799 *PTR_MPI2_EVENT_DATA_IR_PHYSICAL_DISK,
0800 Mpi2EventDataIrPhysicalDisk_t,
0801 *pMpi2EventDataIrPhysicalDisk_t;
0802
0803
0804 #define MPI2_EVENT_IR_PHYSDISK_RC_SETTINGS_CHANGED (0x01)
0805 #define MPI2_EVENT_IR_PHYSDISK_RC_STATUS_FLAGS_CHANGED (0x02)
0806 #define MPI2_EVENT_IR_PHYSDISK_RC_STATE_CHANGED (0x03)
0807
0808
0809
0810
0811
0812
0813
0814 #ifndef MPI2_EVENT_IR_CONFIG_ELEMENT_COUNT
0815 #define MPI2_EVENT_IR_CONFIG_ELEMENT_COUNT (1)
0816 #endif
0817
0818 typedef struct _MPI2_EVENT_IR_CONFIG_ELEMENT {
0819 U16 ElementFlags;
0820 U16 VolDevHandle;
0821 U8 ReasonCode;
0822 U8 PhysDiskNum;
0823 U16 PhysDiskDevHandle;
0824 } MPI2_EVENT_IR_CONFIG_ELEMENT, *PTR_MPI2_EVENT_IR_CONFIG_ELEMENT,
0825 Mpi2EventIrConfigElement_t, *pMpi2EventIrConfigElement_t;
0826
0827
0828 #define MPI2_EVENT_IR_CHANGE_EFLAGS_ELEMENT_TYPE_MASK (0x000F)
0829 #define MPI2_EVENT_IR_CHANGE_EFLAGS_VOLUME_ELEMENT (0x0000)
0830 #define MPI2_EVENT_IR_CHANGE_EFLAGS_VOLPHYSDISK_ELEMENT (0x0001)
0831 #define MPI2_EVENT_IR_CHANGE_EFLAGS_HOTSPARE_ELEMENT (0x0002)
0832
0833
0834 #define MPI2_EVENT_IR_CHANGE_RC_ADDED (0x01)
0835 #define MPI2_EVENT_IR_CHANGE_RC_REMOVED (0x02)
0836 #define MPI2_EVENT_IR_CHANGE_RC_NO_CHANGE (0x03)
0837 #define MPI2_EVENT_IR_CHANGE_RC_HIDE (0x04)
0838 #define MPI2_EVENT_IR_CHANGE_RC_UNHIDE (0x05)
0839 #define MPI2_EVENT_IR_CHANGE_RC_VOLUME_CREATED (0x06)
0840 #define MPI2_EVENT_IR_CHANGE_RC_VOLUME_DELETED (0x07)
0841 #define MPI2_EVENT_IR_CHANGE_RC_PD_CREATED (0x08)
0842 #define MPI2_EVENT_IR_CHANGE_RC_PD_DELETED (0x09)
0843
0844 typedef struct _MPI2_EVENT_DATA_IR_CONFIG_CHANGE_LIST {
0845 U8 NumElements;
0846 U8 Reserved1;
0847 U8 Reserved2;
0848 U8 ConfigNum;
0849 U32 Flags;
0850 MPI2_EVENT_IR_CONFIG_ELEMENT
0851 ConfigElement[MPI2_EVENT_IR_CONFIG_ELEMENT_COUNT];
0852 } MPI2_EVENT_DATA_IR_CONFIG_CHANGE_LIST,
0853 *PTR_MPI2_EVENT_DATA_IR_CONFIG_CHANGE_LIST,
0854 Mpi2EventDataIrConfigChangeList_t,
0855 *pMpi2EventDataIrConfigChangeList_t;
0856
0857
0858 #define MPI2_EVENT_IR_CHANGE_FLAGS_FOREIGN_CONFIG (0x00000001)
0859
0860
0861
0862 typedef struct _MPI2_EVENT_DATA_SAS_DISCOVERY {
0863 U8 Flags;
0864 U8 ReasonCode;
0865 U8 PhysicalPort;
0866 U8 Reserved1;
0867 U32 DiscoveryStatus;
0868 } MPI2_EVENT_DATA_SAS_DISCOVERY,
0869 *PTR_MPI2_EVENT_DATA_SAS_DISCOVERY,
0870 Mpi2EventDataSasDiscovery_t, *pMpi2EventDataSasDiscovery_t;
0871
0872
0873 #define MPI2_EVENT_SAS_DISC_DEVICE_CHANGE (0x02)
0874 #define MPI2_EVENT_SAS_DISC_IN_PROGRESS (0x01)
0875
0876
0877 #define MPI2_EVENT_SAS_DISC_RC_STARTED (0x01)
0878 #define MPI2_EVENT_SAS_DISC_RC_COMPLETED (0x02)
0879
0880
0881 #define MPI2_EVENT_SAS_DISC_DS_MAX_ENCLOSURES_EXCEED (0x80000000)
0882 #define MPI2_EVENT_SAS_DISC_DS_MAX_EXPANDERS_EXCEED (0x40000000)
0883 #define MPI2_EVENT_SAS_DISC_DS_MAX_DEVICES_EXCEED (0x20000000)
0884 #define MPI2_EVENT_SAS_DISC_DS_MAX_TOPO_PHYS_EXCEED (0x10000000)
0885 #define MPI2_EVENT_SAS_DISC_DS_DOWNSTREAM_INITIATOR (0x08000000)
0886 #define MPI2_EVENT_SAS_DISC_DS_MULTI_SUBTRACTIVE_SUBTRACTIVE (0x00008000)
0887 #define MPI2_EVENT_SAS_DISC_DS_EXP_MULTI_SUBTRACTIVE (0x00004000)
0888 #define MPI2_EVENT_SAS_DISC_DS_MULTI_PORT_DOMAIN (0x00002000)
0889 #define MPI2_EVENT_SAS_DISC_DS_TABLE_TO_SUBTRACTIVE_LINK (0x00001000)
0890 #define MPI2_EVENT_SAS_DISC_DS_UNSUPPORTED_DEVICE (0x00000800)
0891 #define MPI2_EVENT_SAS_DISC_DS_TABLE_LINK (0x00000400)
0892 #define MPI2_EVENT_SAS_DISC_DS_SUBTRACTIVE_LINK (0x00000200)
0893 #define MPI2_EVENT_SAS_DISC_DS_SMP_CRC_ERROR (0x00000100)
0894 #define MPI2_EVENT_SAS_DISC_DS_SMP_FUNCTION_FAILED (0x00000080)
0895 #define MPI2_EVENT_SAS_DISC_DS_INDEX_NOT_EXIST (0x00000040)
0896 #define MPI2_EVENT_SAS_DISC_DS_OUT_ROUTE_ENTRIES (0x00000020)
0897 #define MPI2_EVENT_SAS_DISC_DS_SMP_TIMEOUT (0x00000010)
0898 #define MPI2_EVENT_SAS_DISC_DS_MULTIPLE_PORTS (0x00000004)
0899 #define MPI2_EVENT_SAS_DISC_DS_UNADDRESSABLE_DEVICE (0x00000002)
0900 #define MPI2_EVENT_SAS_DISC_DS_LOOP_DETECTED (0x00000001)
0901
0902
0903
0904 typedef struct _MPI2_EVENT_DATA_SAS_BROADCAST_PRIMITIVE {
0905 U8 PhyNum;
0906 U8 Port;
0907 U8 PortWidth;
0908 U8 Primitive;
0909 } MPI2_EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
0910 *PTR_MPI2_EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
0911 Mpi2EventDataSasBroadcastPrimitive_t,
0912 *pMpi2EventDataSasBroadcastPrimitive_t;
0913
0914
0915 #define MPI2_EVENT_PRIMITIVE_CHANGE (0x01)
0916 #define MPI2_EVENT_PRIMITIVE_SES (0x02)
0917 #define MPI2_EVENT_PRIMITIVE_EXPANDER (0x03)
0918 #define MPI2_EVENT_PRIMITIVE_ASYNCHRONOUS_EVENT (0x04)
0919 #define MPI2_EVENT_PRIMITIVE_RESERVED3 (0x05)
0920 #define MPI2_EVENT_PRIMITIVE_RESERVED4 (0x06)
0921 #define MPI2_EVENT_PRIMITIVE_CHANGE0_RESERVED (0x07)
0922 #define MPI2_EVENT_PRIMITIVE_CHANGE1_RESERVED (0x08)
0923
0924
0925
0926 typedef struct _MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE {
0927 U8 PhyNum;
0928 U8 Port;
0929 U8 Reserved1;
0930 U8 Primitive;
0931 } MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE,
0932 *PTR_MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE,
0933 Mpi2EventDataSasNotifyPrimitive_t,
0934 *pMpi2EventDataSasNotifyPrimitive_t;
0935
0936
0937 #define MPI2_EVENT_NOTIFY_ENABLE_SPINUP (0x01)
0938 #define MPI2_EVENT_NOTIFY_POWER_LOSS_EXPECTED (0x02)
0939 #define MPI2_EVENT_NOTIFY_RESERVED1 (0x03)
0940 #define MPI2_EVENT_NOTIFY_RESERVED2 (0x04)
0941
0942
0943
0944 typedef struct _MPI2_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE {
0945 U8 ReasonCode;
0946 U8 PhysicalPort;
0947 U16 DevHandle;
0948 U64 SASAddress;
0949 } MPI2_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
0950 *PTR_MPI2_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
0951 Mpi2EventDataSasInitDevStatusChange_t,
0952 *pMpi2EventDataSasInitDevStatusChange_t;
0953
0954
0955 #define MPI2_EVENT_SAS_INIT_RC_ADDED (0x01)
0956 #define MPI2_EVENT_SAS_INIT_RC_NOT_RESPONDING (0x02)
0957
0958
0959
0960 typedef struct _MPI2_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW {
0961 U16 MaxInit;
0962 U16 CurrentInit;
0963 U64 SASAddress;
0964 } MPI2_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
0965 *PTR_MPI2_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
0966 Mpi2EventDataSasInitTableOverflow_t,
0967 *pMpi2EventDataSasInitTableOverflow_t;
0968
0969
0970
0971
0972
0973
0974
0975 #ifndef MPI2_EVENT_SAS_TOPO_PHY_COUNT
0976 #define MPI2_EVENT_SAS_TOPO_PHY_COUNT (1)
0977 #endif
0978
0979 typedef struct _MPI2_EVENT_SAS_TOPO_PHY_ENTRY {
0980 U16 AttachedDevHandle;
0981 U8 LinkRate;
0982 U8 PhyStatus;
0983 } MPI2_EVENT_SAS_TOPO_PHY_ENTRY, *PTR_MPI2_EVENT_SAS_TOPO_PHY_ENTRY,
0984 Mpi2EventSasTopoPhyEntry_t, *pMpi2EventSasTopoPhyEntry_t;
0985
0986 typedef struct _MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST {
0987 U16 EnclosureHandle;
0988 U16 ExpanderDevHandle;
0989 U8 NumPhys;
0990 U8 Reserved1;
0991 U16 Reserved2;
0992 U8 NumEntries;
0993 U8 StartPhyNum;
0994 U8 ExpStatus;
0995 U8 PhysicalPort;
0996 MPI2_EVENT_SAS_TOPO_PHY_ENTRY
0997 PHY[MPI2_EVENT_SAS_TOPO_PHY_COUNT];
0998 } MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST,
0999 *PTR_MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST,
1000 Mpi2EventDataSasTopologyChangeList_t,
1001 *pMpi2EventDataSasTopologyChangeList_t;
1002
1003
1004 #define MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER (0x00)
1005 #define MPI2_EVENT_SAS_TOPO_ES_ADDED (0x01)
1006 #define MPI2_EVENT_SAS_TOPO_ES_NOT_RESPONDING (0x02)
1007 #define MPI2_EVENT_SAS_TOPO_ES_RESPONDING (0x03)
1008 #define MPI2_EVENT_SAS_TOPO_ES_DELAY_NOT_RESPONDING (0x04)
1009
1010
1011 #define MPI2_EVENT_SAS_TOPO_LR_CURRENT_MASK (0xF0)
1012 #define MPI2_EVENT_SAS_TOPO_LR_CURRENT_SHIFT (4)
1013 #define MPI2_EVENT_SAS_TOPO_LR_PREV_MASK (0x0F)
1014 #define MPI2_EVENT_SAS_TOPO_LR_PREV_SHIFT (0)
1015
1016 #define MPI2_EVENT_SAS_TOPO_LR_UNKNOWN_LINK_RATE (0x00)
1017 #define MPI2_EVENT_SAS_TOPO_LR_PHY_DISABLED (0x01)
1018 #define MPI2_EVENT_SAS_TOPO_LR_NEGOTIATION_FAILED (0x02)
1019 #define MPI2_EVENT_SAS_TOPO_LR_SATA_OOB_COMPLETE (0x03)
1020 #define MPI2_EVENT_SAS_TOPO_LR_PORT_SELECTOR (0x04)
1021 #define MPI2_EVENT_SAS_TOPO_LR_SMP_RESET_IN_PROGRESS (0x05)
1022 #define MPI2_EVENT_SAS_TOPO_LR_UNSUPPORTED_PHY (0x06)
1023 #define MPI2_EVENT_SAS_TOPO_LR_RATE_1_5 (0x08)
1024 #define MPI2_EVENT_SAS_TOPO_LR_RATE_3_0 (0x09)
1025 #define MPI2_EVENT_SAS_TOPO_LR_RATE_6_0 (0x0A)
1026 #define MPI25_EVENT_SAS_TOPO_LR_RATE_12_0 (0x0B)
1027 #define MPI26_EVENT_SAS_TOPO_LR_RATE_22_5 (0x0C)
1028
1029
1030 #define MPI2_EVENT_SAS_TOPO_PHYSTATUS_VACANT (0x80)
1031 #define MPI2_EVENT_SAS_TOPO_PS_MULTIPLEX_CHANGE (0x10)
1032
1033 #define MPI2_EVENT_SAS_TOPO_RC_MASK (0x0F)
1034 #define MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED (0x01)
1035 #define MPI2_EVENT_SAS_TOPO_RC_TARG_NOT_RESPONDING (0x02)
1036 #define MPI2_EVENT_SAS_TOPO_RC_PHY_CHANGED (0x03)
1037 #define MPI2_EVENT_SAS_TOPO_RC_NO_CHANGE (0x04)
1038 #define MPI2_EVENT_SAS_TOPO_RC_DELAY_NOT_RESPONDING (0x05)
1039
1040
1041
1042 typedef struct _MPI2_EVENT_DATA_SAS_ENCL_DEV_STATUS_CHANGE {
1043 U16 EnclosureHandle;
1044 U8 ReasonCode;
1045 U8 PhysicalPort;
1046 U64 EnclosureLogicalID;
1047 U16 NumSlots;
1048 U16 StartSlot;
1049 U32 PhyBits;
1050 } MPI2_EVENT_DATA_SAS_ENCL_DEV_STATUS_CHANGE,
1051 *PTR_MPI2_EVENT_DATA_SAS_ENCL_DEV_STATUS_CHANGE,
1052 Mpi2EventDataSasEnclDevStatusChange_t,
1053 *pMpi2EventDataSasEnclDevStatusChange_t,
1054 MPI26_EVENT_DATA_ENCL_DEV_STATUS_CHANGE,
1055 *PTR_MPI26_EVENT_DATA_ENCL_DEV_STATUS_CHANGE,
1056 Mpi26EventDataEnclDevStatusChange_t,
1057 *pMpi26EventDataEnclDevStatusChange_t;
1058
1059
1060 #define MPI2_EVENT_SAS_ENCL_RC_ADDED (0x01)
1061 #define MPI2_EVENT_SAS_ENCL_RC_NOT_RESPONDING (0x02)
1062
1063
1064 #define MPI26_EVENT_ENCL_RC_ADDED (0x01)
1065 #define MPI26_EVENT_ENCL_RC_NOT_RESPONDING (0x02)
1066
1067
1068 typedef struct _MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR {
1069 U16 DevHandle;
1070 U8 ReasonCode;
1071 U8 PhysicalPort;
1072 U32 Reserved1[2];
1073 U64 SASAddress;
1074 U32 Reserved2[2];
1075 } MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR,
1076 *PTR_MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR,
1077 Mpi25EventDataSasDeviceDiscoveryError_t,
1078 *pMpi25EventDataSasDeviceDiscoveryError_t;
1079
1080
1081 #define MPI25_EVENT_SAS_DISC_ERR_SMP_FAILED (0x01)
1082 #define MPI25_EVENT_SAS_DISC_ERR_SMP_TIMEOUT (0x02)
1083
1084
1085
1086 typedef struct _MPI2_EVENT_DATA_SAS_PHY_COUNTER {
1087 U64 TimeStamp;
1088 U32 Reserved1;
1089 U8 PhyEventCode;
1090 U8 PhyNum;
1091 U16 Reserved2;
1092 U32 PhyEventInfo;
1093 U8 CounterType;
1094 U8 ThresholdWindow;
1095 U8 TimeUnits;
1096 U8 Reserved3;
1097 U32 EventThreshold;
1098 U16 ThresholdFlags;
1099 U16 Reserved4;
1100 } MPI2_EVENT_DATA_SAS_PHY_COUNTER,
1101 *PTR_MPI2_EVENT_DATA_SAS_PHY_COUNTER,
1102 Mpi2EventDataSasPhyCounter_t,
1103 *pMpi2EventDataSasPhyCounter_t;
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119 typedef struct _MPI2_EVENT_DATA_SAS_QUIESCE {
1120 U8 ReasonCode;
1121 U8 Reserved1;
1122 U16 Reserved2;
1123 U32 Reserved3;
1124 } MPI2_EVENT_DATA_SAS_QUIESCE,
1125 *PTR_MPI2_EVENT_DATA_SAS_QUIESCE,
1126 Mpi2EventDataSasQuiesce_t, *pMpi2EventDataSasQuiesce_t;
1127
1128
1129 #define MPI2_EVENT_SAS_QUIESCE_RC_STARTED (0x01)
1130 #define MPI2_EVENT_SAS_QUIESCE_RC_COMPLETED (0x02)
1131
1132
1133
1134 typedef struct _MPI2_EVENT_HBD_PHY_SAS {
1135 U8 Flags;
1136 U8 NegotiatedLinkRate;
1137 U8 PhyNum;
1138 U8 PhysicalPort;
1139 U32 Reserved1;
1140 U8 InitialFrame[28];
1141 } MPI2_EVENT_HBD_PHY_SAS, *PTR_MPI2_EVENT_HBD_PHY_SAS,
1142 Mpi2EventHbdPhySas_t, *pMpi2EventHbdPhySas_t;
1143
1144
1145 #define MPI2_EVENT_HBD_SAS_FLAGS_FRAME_VALID (0x02)
1146 #define MPI2_EVENT_HBD_SAS_FLAGS_SATA_FRAME (0x01)
1147
1148
1149
1150
1151 typedef union _MPI2_EVENT_HBD_DESCRIPTOR {
1152 MPI2_EVENT_HBD_PHY_SAS Sas;
1153 } MPI2_EVENT_HBD_DESCRIPTOR, *PTR_MPI2_EVENT_HBD_DESCRIPTOR,
1154 Mpi2EventHbdDescriptor_t, *pMpi2EventHbdDescriptor_t;
1155
1156 typedef struct _MPI2_EVENT_DATA_HBD_PHY {
1157 U8 DescriptorType;
1158 U8 Reserved1;
1159 U16 Reserved2;
1160 U32 Reserved3;
1161 MPI2_EVENT_HBD_DESCRIPTOR Descriptor;
1162 } MPI2_EVENT_DATA_HBD_PHY, *PTR_MPI2_EVENT_DATA_HBD_PHY,
1163 Mpi2EventDataHbdPhy_t,
1164 *pMpi2EventDataMpi2EventDataHbdPhy_t;
1165
1166
1167 #define MPI2_EVENT_HBD_DT_SAS (0x01)
1168
1169
1170
1171
1172 typedef struct _MPI26_EVENT_DATA_PCIE_DEVICE_STATUS_CHANGE {
1173 U16 TaskTag;
1174 U8 ReasonCode;
1175 U8 PhysicalPort;
1176 U8 ASC;
1177 U8 ASCQ;
1178 U16 DevHandle;
1179 U32 Reserved2;
1180 U64 WWID;
1181 U8 LUN[8];
1182 } MPI26_EVENT_DATA_PCIE_DEVICE_STATUS_CHANGE,
1183 *PTR_MPI26_EVENT_DATA_PCIE_DEVICE_STATUS_CHANGE,
1184 Mpi26EventDataPCIeDeviceStatusChange_t,
1185 *pMpi26EventDataPCIeDeviceStatusChange_t;
1186
1187
1188 #define MPI26_EVENT_PCIDEV_STAT_RC_SMART_DATA (0x05)
1189 #define MPI26_EVENT_PCIDEV_STAT_RC_UNSUPPORTED (0x07)
1190 #define MPI26_EVENT_PCIDEV_STAT_RC_INTERNAL_DEVICE_RESET (0x08)
1191 #define MPI26_EVENT_PCIDEV_STAT_RC_TASK_ABORT_INTERNAL (0x09)
1192 #define MPI26_EVENT_PCIDEV_STAT_RC_ABORT_TASK_SET_INTERNAL (0x0A)
1193 #define MPI26_EVENT_PCIDEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B)
1194 #define MPI26_EVENT_PCIDEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C)
1195 #define MPI26_EVENT_PCIDEV_STAT_RC_ASYNC_NOTIFICATION (0x0D)
1196 #define MPI26_EVENT_PCIDEV_STAT_RC_CMP_INTERNAL_DEV_RESET (0x0E)
1197 #define MPI26_EVENT_PCIDEV_STAT_RC_CMP_TASK_ABORT_INTERNAL (0x0F)
1198 #define MPI26_EVENT_PCIDEV_STAT_RC_DEV_INIT_FAILURE (0x10)
1199 #define MPI26_EVENT_PCIDEV_STAT_RC_PCIE_HOT_RESET_FAILED (0x11)
1200
1201
1202
1203
1204 typedef struct _MPI26_EVENT_DATA_PCIE_ENUMERATION {
1205 U8 Flags;
1206 U8 ReasonCode;
1207 U8 PhysicalPort;
1208 U8 Reserved1;
1209 U32 EnumerationStatus;
1210 } MPI26_EVENT_DATA_PCIE_ENUMERATION,
1211 *PTR_MPI26_EVENT_DATA_PCIE_ENUMERATION,
1212 Mpi26EventDataPCIeEnumeration_t,
1213 *pMpi26EventDataPCIeEnumeration_t;
1214
1215
1216 #define MPI26_EVENT_PCIE_ENUM_DEVICE_CHANGE (0x02)
1217 #define MPI26_EVENT_PCIE_ENUM_IN_PROGRESS (0x01)
1218
1219
1220 #define MPI26_EVENT_PCIE_ENUM_RC_STARTED (0x01)
1221 #define MPI26_EVENT_PCIE_ENUM_RC_COMPLETED (0x02)
1222
1223
1224 #define MPI26_EVENT_PCIE_ENUM_ES_MAX_SWITCHES_EXCEED (0x40000000)
1225 #define MPI26_EVENT_PCIE_ENUM_ES_MAX_DEVICES_EXCEED (0x20000000)
1226 #define MPI26_EVENT_PCIE_ENUM_ES_RESOURCES_EXHAUSTED (0x10000000)
1227
1228
1229
1230
1231
1232
1233
1234
1235 #ifndef MPI26_EVENT_PCIE_TOPO_PORT_COUNT
1236 #define MPI26_EVENT_PCIE_TOPO_PORT_COUNT (1)
1237 #endif
1238
1239 typedef struct _MPI26_EVENT_PCIE_TOPO_PORT_ENTRY {
1240 U16 AttachedDevHandle;
1241 U8 PortStatus;
1242 U8 Reserved1;
1243 U8 CurrentPortInfo;
1244 U8 Reserved2;
1245 U8 PreviousPortInfo;
1246 U8 Reserved3;
1247 } MPI26_EVENT_PCIE_TOPO_PORT_ENTRY,
1248 *PTR_MPI26_EVENT_PCIE_TOPO_PORT_ENTRY,
1249 Mpi26EventPCIeTopoPortEntry_t,
1250 *pMpi26EventPCIeTopoPortEntry_t;
1251
1252
1253 #define MPI26_EVENT_PCIE_TOPO_PS_DEV_ADDED (0x01)
1254 #define MPI26_EVENT_PCIE_TOPO_PS_NOT_RESPONDING (0x02)
1255 #define MPI26_EVENT_PCIE_TOPO_PS_PORT_CHANGED (0x03)
1256 #define MPI26_EVENT_PCIE_TOPO_PS_NO_CHANGE (0x04)
1257 #define MPI26_EVENT_PCIE_TOPO_PS_DELAY_NOT_RESPONDING (0x05)
1258
1259
1260
1261
1262 #define MPI26_EVENT_PCIE_TOPO_PI_LANE_MASK (0xF0)
1263 #define MPI26_EVENT_PCIE_TOPO_PI_LANES_UNKNOWN (0x00)
1264 #define MPI26_EVENT_PCIE_TOPO_PI_1_LANE (0x10)
1265 #define MPI26_EVENT_PCIE_TOPO_PI_2_LANES (0x20)
1266 #define MPI26_EVENT_PCIE_TOPO_PI_4_LANES (0x30)
1267 #define MPI26_EVENT_PCIE_TOPO_PI_8_LANES (0x40)
1268 #define MPI26_EVENT_PCIE_TOPO_PI_16_LANES (0x50)
1269
1270 #define MPI26_EVENT_PCIE_TOPO_PI_RATE_MASK (0x0F)
1271 #define MPI26_EVENT_PCIE_TOPO_PI_RATE_UNKNOWN (0x00)
1272 #define MPI26_EVENT_PCIE_TOPO_PI_RATE_DISABLED (0x01)
1273 #define MPI26_EVENT_PCIE_TOPO_PI_RATE_2_5 (0x02)
1274 #define MPI26_EVENT_PCIE_TOPO_PI_RATE_5_0 (0x03)
1275 #define MPI26_EVENT_PCIE_TOPO_PI_RATE_8_0 (0x04)
1276 #define MPI26_EVENT_PCIE_TOPO_PI_RATE_16_0 (0x05)
1277
1278 typedef struct _MPI26_EVENT_DATA_PCIE_TOPOLOGY_CHANGE_LIST {
1279 U16 EnclosureHandle;
1280 U16 SwitchDevHandle;
1281 U8 NumPorts;
1282 U8 Reserved1;
1283 U16 Reserved2;
1284 U8 NumEntries;
1285 U8 StartPortNum;
1286 U8 SwitchStatus;
1287 U8 PhysicalPort;
1288 MPI26_EVENT_PCIE_TOPO_PORT_ENTRY
1289 PortEntry[MPI26_EVENT_PCIE_TOPO_PORT_COUNT];
1290 } MPI26_EVENT_DATA_PCIE_TOPOLOGY_CHANGE_LIST,
1291 *PTR_MPI26_EVENT_DATA_PCIE_TOPOLOGY_CHANGE_LIST,
1292 Mpi26EventDataPCIeTopologyChangeList_t,
1293 *pMpi26EventDataPCIeTopologyChangeList_t;
1294
1295
1296 #define MPI26_EVENT_PCIE_TOPO_SS_NO_PCIE_SWITCH (0x00)
1297 #define MPI26_EVENT_PCIE_TOPO_SS_ADDED (0x01)
1298 #define MPI26_EVENT_PCIE_TOPO_SS_NOT_RESPONDING (0x02)
1299 #define MPI26_EVENT_PCIE_TOPO_SS_RESPONDING (0x03)
1300 #define MPI26_EVENT_PCIE_TOPO_SS_DELAY_NOT_RESPONDING (0x04)
1301
1302
1303
1304 typedef struct _MPI26_EVENT_DATA_PCIE_LINK_COUNTER {
1305 U64 TimeStamp;
1306 U32 Reserved1;
1307 U8 LinkEventCode;
1308 U8 LinkNum;
1309 U16 Reserved2;
1310 U32 LinkEventInfo;
1311 U8 CounterType;
1312 U8 ThresholdWindow;
1313 U8 TimeUnits;
1314 U8 Reserved3;
1315 U32 EventThreshold;
1316 U16 ThresholdFlags;
1317 U16 Reserved4;
1318 } MPI26_EVENT_DATA_PCIE_LINK_COUNTER,
1319 *PTR_MPI26_EVENT_DATA_PCIE_LINK_COUNTER,
1320 Mpi26EventDataPcieLinkCounter_t, *pMpi26EventDataPcieLinkCounter_t;
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344 typedef struct _MPI2_EVENT_ACK_REQUEST {
1345 U16 Reserved1;
1346 U8 ChainOffset;
1347 U8 Function;
1348 U16 Reserved2;
1349 U8 Reserved3;
1350 U8 MsgFlags;
1351 U8 VP_ID;
1352 U8 VF_ID;
1353 U16 Reserved4;
1354 U16 Event;
1355 U16 Reserved5;
1356 U32 EventContext;
1357 } MPI2_EVENT_ACK_REQUEST, *PTR_MPI2_EVENT_ACK_REQUEST,
1358 Mpi2EventAckRequest_t, *pMpi2EventAckRequest_t;
1359
1360
1361 typedef struct _MPI2_EVENT_ACK_REPLY {
1362 U16 Reserved1;
1363 U8 MsgLength;
1364 U8 Function;
1365 U16 Reserved2;
1366 U8 Reserved3;
1367 U8 MsgFlags;
1368 U8 VP_ID;
1369 U8 VF_ID;
1370 U16 Reserved4;
1371 U16 Reserved5;
1372 U16 IOCStatus;
1373 U32 IOCLogInfo;
1374 } MPI2_EVENT_ACK_REPLY, *PTR_MPI2_EVENT_ACK_REPLY,
1375 Mpi2EventAckReply_t, *pMpi2EventAckReply_t;
1376
1377
1378
1379
1380
1381
1382 typedef struct _MPI2_SEND_HOST_MESSAGE_REQUEST {
1383 U16 HostDataLength;
1384 U8 ChainOffset;
1385 U8 Function;
1386 U16 Reserved1;
1387 U8 Reserved2;
1388 U8 MsgFlags;
1389 U8 VP_ID;
1390 U8 VF_ID;
1391 U16 Reserved3;
1392 U8 Reserved4;
1393 U8 DestVF_ID;
1394 U16 Reserved5;
1395 U32 Reserved6;
1396 U32 Reserved7;
1397 U32 Reserved8;
1398 U32 Reserved9;
1399 U32 Reserved10;
1400 U32 HostData[];
1401 } MPI2_SEND_HOST_MESSAGE_REQUEST,
1402 *PTR_MPI2_SEND_HOST_MESSAGE_REQUEST,
1403 Mpi2SendHostMessageRequest_t,
1404 *pMpi2SendHostMessageRequest_t;
1405
1406
1407 typedef struct _MPI2_SEND_HOST_MESSAGE_REPLY {
1408 U16 HostDataLength;
1409 U8 MsgLength;
1410 U8 Function;
1411 U16 Reserved1;
1412 U8 Reserved2;
1413 U8 MsgFlags;
1414 U8 VP_ID;
1415 U8 VF_ID;
1416 U16 Reserved3;
1417 U16 Reserved4;
1418 U16 IOCStatus;
1419 U32 IOCLogInfo;
1420 } MPI2_SEND_HOST_MESSAGE_REPLY, *PTR_MPI2_SEND_HOST_MESSAGE_REPLY,
1421 Mpi2SendHostMessageReply_t, *pMpi2SendHostMessageReply_t;
1422
1423
1424
1425
1426
1427
1428 typedef struct _MPI2_FW_DOWNLOAD_REQUEST {
1429 U8 ImageType;
1430 U8 Reserved1;
1431 U8 ChainOffset;
1432 U8 Function;
1433 U16 Reserved2;
1434 U8 Reserved3;
1435 U8 MsgFlags;
1436 U8 VP_ID;
1437 U8 VF_ID;
1438 U16 Reserved4;
1439 U32 TotalImageSize;
1440 U32 Reserved5;
1441 MPI2_MPI_SGE_UNION SGL;
1442 } MPI2_FW_DOWNLOAD_REQUEST, *PTR_MPI2_FW_DOWNLOAD_REQUEST,
1443 Mpi2FWDownloadRequest, *pMpi2FWDownloadRequest;
1444
1445 #define MPI2_FW_DOWNLOAD_MSGFLGS_LAST_SEGMENT (0x01)
1446
1447 #define MPI2_FW_DOWNLOAD_ITYPE_FW (0x01)
1448 #define MPI2_FW_DOWNLOAD_ITYPE_BIOS (0x02)
1449 #define MPI2_FW_DOWNLOAD_ITYPE_MANUFACTURING (0x06)
1450 #define MPI2_FW_DOWNLOAD_ITYPE_CONFIG_1 (0x07)
1451 #define MPI2_FW_DOWNLOAD_ITYPE_CONFIG_2 (0x08)
1452 #define MPI2_FW_DOWNLOAD_ITYPE_MEGARAID (0x09)
1453 #define MPI2_FW_DOWNLOAD_ITYPE_COMPLETE (0x0A)
1454 #define MPI2_FW_DOWNLOAD_ITYPE_COMMON_BOOT_BLOCK (0x0B)
1455 #define MPI2_FW_DOWNLOAD_ITYPE_PUBLIC_KEY (0x0C)
1456 #define MPI2_FW_DOWNLOAD_ITYPE_CBB_BACKUP (0x0D)
1457 #define MPI2_FW_DOWNLOAD_ITYPE_SBR (0x0E)
1458 #define MPI2_FW_DOWNLOAD_ITYPE_SBR_BACKUP (0x0F)
1459 #define MPI2_FW_DOWNLOAD_ITYPE_HIIM (0x10)
1460 #define MPI2_FW_DOWNLOAD_ITYPE_HIIA (0x11)
1461 #define MPI2_FW_DOWNLOAD_ITYPE_CTLR (0x12)
1462 #define MPI2_FW_DOWNLOAD_ITYPE_IMR_FIRMWARE (0x13)
1463 #define MPI2_FW_DOWNLOAD_ITYPE_MR_NVDATA (0x14)
1464
1465 #define MPI2_FW_DOWNLOAD_ITYPE_CPLD (0x15)
1466 #define MPI2_FW_DOWNLOAD_ITYPE_PSOC (0x16)
1467 #define MPI2_FW_DOWNLOAD_ITYPE_COREDUMP (0x17)
1468 #define MPI2_FW_DOWNLOAD_ITYPE_MIN_PRODUCT_SPECIFIC (0xF0)
1469
1470
1471 typedef struct _MPI2_FW_DOWNLOAD_TCSGE {
1472 U8 Reserved1;
1473 U8 ContextSize;
1474 U8 DetailsLength;
1475 U8 Flags;
1476 U32 Reserved2;
1477 U32 ImageOffset;
1478 U32 ImageSize;
1479 } MPI2_FW_DOWNLOAD_TCSGE, *PTR_MPI2_FW_DOWNLOAD_TCSGE,
1480 Mpi2FWDownloadTCSGE_t, *pMpi2FWDownloadTCSGE_t;
1481
1482
1483 typedef struct _MPI25_FW_DOWNLOAD_REQUEST {
1484 U8 ImageType;
1485 U8 Reserved1;
1486 U8 ChainOffset;
1487 U8 Function;
1488 U16 Reserved2;
1489 U8 Reserved3;
1490 U8 MsgFlags;
1491 U8 VP_ID;
1492 U8 VF_ID;
1493 U16 Reserved4;
1494 U32 TotalImageSize;
1495 U32 Reserved5;
1496 U32 Reserved6;
1497 U32 ImageOffset;
1498 U32 ImageSize;
1499 MPI25_SGE_IO_UNION SGL;
1500 } MPI25_FW_DOWNLOAD_REQUEST, *PTR_MPI25_FW_DOWNLOAD_REQUEST,
1501 Mpi25FWDownloadRequest, *pMpi25FWDownloadRequest;
1502
1503
1504 typedef struct _MPI2_FW_DOWNLOAD_REPLY {
1505 U8 ImageType;
1506 U8 Reserved1;
1507 U8 MsgLength;
1508 U8 Function;
1509 U16 Reserved2;
1510 U8 Reserved3;
1511 U8 MsgFlags;
1512 U8 VP_ID;
1513 U8 VF_ID;
1514 U16 Reserved4;
1515 U16 Reserved5;
1516 U16 IOCStatus;
1517 U32 IOCLogInfo;
1518 } MPI2_FW_DOWNLOAD_REPLY, *PTR_MPI2_FW_DOWNLOAD_REPLY,
1519 Mpi2FWDownloadReply_t, *pMpi2FWDownloadReply_t;
1520
1521
1522
1523
1524
1525
1526 typedef struct _MPI2_FW_UPLOAD_REQUEST {
1527 U8 ImageType;
1528 U8 Reserved1;
1529 U8 ChainOffset;
1530 U8 Function;
1531 U16 Reserved2;
1532 U8 Reserved3;
1533 U8 MsgFlags;
1534 U8 VP_ID;
1535 U8 VF_ID;
1536 U16 Reserved4;
1537 U32 Reserved5;
1538 U32 Reserved6;
1539 MPI2_MPI_SGE_UNION SGL;
1540 } MPI2_FW_UPLOAD_REQUEST, *PTR_MPI2_FW_UPLOAD_REQUEST,
1541 Mpi2FWUploadRequest_t, *pMpi2FWUploadRequest_t;
1542
1543 #define MPI2_FW_UPLOAD_ITYPE_FW_CURRENT (0x00)
1544 #define MPI2_FW_UPLOAD_ITYPE_FW_FLASH (0x01)
1545 #define MPI2_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02)
1546 #define MPI2_FW_UPLOAD_ITYPE_FW_BACKUP (0x05)
1547 #define MPI2_FW_UPLOAD_ITYPE_MANUFACTURING (0x06)
1548 #define MPI2_FW_UPLOAD_ITYPE_CONFIG_1 (0x07)
1549 #define MPI2_FW_UPLOAD_ITYPE_CONFIG_2 (0x08)
1550 #define MPI2_FW_UPLOAD_ITYPE_MEGARAID (0x09)
1551 #define MPI2_FW_UPLOAD_ITYPE_COMPLETE (0x0A)
1552 #define MPI2_FW_UPLOAD_ITYPE_COMMON_BOOT_BLOCK (0x0B)
1553 #define MPI2_FW_UPLOAD_ITYPE_CBB_BACKUP (0x0D)
1554 #define MPI2_FW_UPLOAD_ITYPE_SBR (0x0E)
1555 #define MPI2_FW_UPLOAD_ITYPE_SBR_BACKUP (0x0F)
1556 #define MPI2_FW_UPLOAD_ITYPE_HIIM (0x10)
1557 #define MPI2_FW_UPLOAD_ITYPE_HIIA (0x11)
1558 #define MPI2_FW_UPLOAD_ITYPE_CTLR (0x12)
1559 #define MPI2_FW_UPLOAD_ITYPE_IMR_FIRMWARE (0x13)
1560 #define MPI2_FW_UPLOAD_ITYPE_MR_NVDATA (0x14)
1561
1562
1563
1564 typedef struct _MPI2_FW_UPLOAD_TCSGE {
1565 U8 Reserved1;
1566 U8 ContextSize;
1567 U8 DetailsLength;
1568 U8 Flags;
1569 U32 Reserved2;
1570 U32 ImageOffset;
1571 U32 ImageSize;
1572 } MPI2_FW_UPLOAD_TCSGE, *PTR_MPI2_FW_UPLOAD_TCSGE,
1573 Mpi2FWUploadTCSGE_t, *pMpi2FWUploadTCSGE_t;
1574
1575
1576 typedef struct _MPI25_FW_UPLOAD_REQUEST {
1577 U8 ImageType;
1578 U8 Reserved1;
1579 U8 ChainOffset;
1580 U8 Function;
1581 U16 Reserved2;
1582 U8 Reserved3;
1583 U8 MsgFlags;
1584 U8 VP_ID;
1585 U8 VF_ID;
1586 U16 Reserved4;
1587 U32 Reserved5;
1588 U32 Reserved6;
1589 U32 Reserved7;
1590 U32 ImageOffset;
1591 U32 ImageSize;
1592 MPI25_SGE_IO_UNION SGL;
1593 } MPI25_FW_UPLOAD_REQUEST, *PTR_MPI25_FW_UPLOAD_REQUEST,
1594 Mpi25FWUploadRequest_t, *pMpi25FWUploadRequest_t;
1595
1596
1597 typedef struct _MPI2_FW_UPLOAD_REPLY {
1598 U8 ImageType;
1599 U8 Reserved1;
1600 U8 MsgLength;
1601 U8 Function;
1602 U16 Reserved2;
1603 U8 Reserved3;
1604 U8 MsgFlags;
1605 U8 VP_ID;
1606 U8 VF_ID;
1607 U16 Reserved4;
1608 U16 Reserved5;
1609 U16 IOCStatus;
1610 U32 IOCLogInfo;
1611 U32 ActualImageSize;
1612 } MPI2_FW_UPLOAD_REPLY, *PTR_MPI2_FW_UPLOAD_REPLY,
1613 Mpi2FWUploadReply_t, *pMPi2FWUploadReply_t;
1614
1615
1616
1617
1618
1619
1620
1621 typedef struct _MPI2_PWR_MGMT_CONTROL_REQUEST {
1622 U8 Feature;
1623 U8 Reserved1;
1624 U8 ChainOffset;
1625 U8 Function;
1626 U16 Reserved2;
1627 U8 Reserved3;
1628 U8 MsgFlags;
1629 U8 VP_ID;
1630 U8 VF_ID;
1631 U16 Reserved4;
1632 U8 Parameter1;
1633 U8 Parameter2;
1634 U8 Parameter3;
1635 U8 Parameter4;
1636 U32 Reserved5;
1637 U32 Reserved6;
1638 } MPI2_PWR_MGMT_CONTROL_REQUEST, *PTR_MPI2_PWR_MGMT_CONTROL_REQUEST,
1639 Mpi2PwrMgmtControlRequest_t, *pMpi2PwrMgmtControlRequest_t;
1640
1641
1642 #define MPI2_PM_CONTROL_FEATURE_DA_PHY_POWER_COND (0x01)
1643 #define MPI2_PM_CONTROL_FEATURE_PORT_WIDTH_MODULATION (0x02)
1644 #define MPI2_PM_CONTROL_FEATURE_PCIE_LINK (0x03)
1645 #define MPI2_PM_CONTROL_FEATURE_IOC_SPEED (0x04)
1646 #define MPI2_PM_CONTROL_FEATURE_GLOBAL_PWR_MGMT_MODE (0x05)
1647 #define MPI2_PM_CONTROL_FEATURE_MIN_PRODUCT_SPECIFIC (0x80)
1648 #define MPI2_PM_CONTROL_FEATURE_MAX_PRODUCT_SPECIFIC (0xFF)
1649
1650
1651
1652
1653 #define MPI2_PM_CONTROL_PARAM2_PARTIAL (0x01)
1654 #define MPI2_PM_CONTROL_PARAM2_SLUMBER (0x02)
1655 #define MPI2_PM_CONTROL_PARAM2_EXIT_PWR_MGMT (0x03)
1656
1657
1658
1659
1660
1661
1662 #define MPI2_PM_CONTROL_PARAM2_REQUEST_OWNERSHIP (0x01)
1663 #define MPI2_PM_CONTROL_PARAM2_CHANGE_MODULATION (0x02)
1664 #define MPI2_PM_CONTROL_PARAM2_RELINQUISH_OWNERSHIP (0x03)
1665
1666 #define MPI2_PM_CONTROL_PARAM3_25_PERCENT (0x00)
1667 #define MPI2_PM_CONTROL_PARAM3_50_PERCENT (0x01)
1668 #define MPI2_PM_CONTROL_PARAM3_75_PERCENT (0x02)
1669 #define MPI2_PM_CONTROL_PARAM3_100_PERCENT (0x03)
1670
1671
1672
1673
1674
1675 #define MPI2_PM_CONTROL_PARAM1_PCIE_2_5_GBPS (0x00)
1676 #define MPI2_PM_CONTROL_PARAM1_PCIE_5_0_GBPS (0x01)
1677 #define MPI2_PM_CONTROL_PARAM1_PCIE_8_0_GBPS (0x02)
1678
1679 #define MPI2_PM_CONTROL_PARAM2_WIDTH_X1 (0x01)
1680 #define MPI2_PM_CONTROL_PARAM2_WIDTH_X2 (0x02)
1681 #define MPI2_PM_CONTROL_PARAM2_WIDTH_X4 (0x04)
1682 #define MPI2_PM_CONTROL_PARAM2_WIDTH_X8 (0x08)
1683
1684
1685
1686
1687 #define MPI2_PM_CONTROL_PARAM1_FULL_IOC_SPEED (0x01)
1688 #define MPI2_PM_CONTROL_PARAM1_HALF_IOC_SPEED (0x02)
1689 #define MPI2_PM_CONTROL_PARAM1_QUARTER_IOC_SPEED (0x04)
1690 #define MPI2_PM_CONTROL_PARAM1_EIGHTH_IOC_SPEED (0x08)
1691
1692
1693
1694
1695 #define MPI2_PM_CONTROL_PARAM1_TAKE_CONTROL (0x01)
1696 #define MPI2_PM_CONTROL_PARAM1_CHANGE_GLOBAL_MODE (0x02)
1697 #define MPI2_PM_CONTROL_PARAM1_RELEASE_CONTROL (0x03)
1698
1699 #define MPI2_PM_CONTROL_PARAM2_FULL_PWR_PERF (0x01)
1700 #define MPI2_PM_CONTROL_PARAM2_REDUCED_PWR_PERF (0x08)
1701 #define MPI2_PM_CONTROL_PARAM2_STANDBY (0x40)
1702
1703
1704
1705 typedef struct _MPI2_PWR_MGMT_CONTROL_REPLY {
1706 U8 Feature;
1707 U8 Reserved1;
1708 U8 MsgLength;
1709 U8 Function;
1710 U16 Reserved2;
1711 U8 Reserved3;
1712 U8 MsgFlags;
1713 U8 VP_ID;
1714 U8 VF_ID;
1715 U16 Reserved4;
1716 U16 Reserved5;
1717 U16 IOCStatus;
1718 U32 IOCLogInfo;
1719 } MPI2_PWR_MGMT_CONTROL_REPLY, *PTR_MPI2_PWR_MGMT_CONTROL_REPLY,
1720 Mpi2PwrMgmtControlReply_t, *pMpi2PwrMgmtControlReply_t;
1721
1722
1723
1724
1725
1726
1727 typedef struct _MPI26_IOUNIT_CONTROL_REQUEST {
1728 U8 Operation;
1729 U8 Reserved1;
1730 U8 ChainOffset;
1731 U8 Function;
1732 U16 DevHandle;
1733 U8 IOCParameter;
1734 U8 MsgFlags;
1735 U8 VP_ID;
1736 U8 VF_ID;
1737 U16 Reserved3;
1738 U16 Reserved4;
1739 U8 PhyNum;
1740 U8 PrimFlags;
1741 U32 Primitive;
1742 U8 LookupMethod;
1743 U8 Reserved5;
1744 U16 SlotNumber;
1745 U64 LookupAddress;
1746 U32 IOCParameterValue;
1747 U32 Reserved7;
1748 U32 Reserved8;
1749 } MPI26_IOUNIT_CONTROL_REQUEST,
1750 *PTR_MPI26_IOUNIT_CONTROL_REQUEST,
1751 Mpi26IoUnitControlRequest_t,
1752 *pMpi26IoUnitControlRequest_t;
1753
1754
1755 #define MPI26_CTRL_OP_CLEAR_ALL_PERSISTENT (0x02)
1756 #define MPI26_CTRL_OP_SAS_PHY_LINK_RESET (0x06)
1757 #define MPI26_CTRL_OP_SAS_PHY_HARD_RESET (0x07)
1758 #define MPI26_CTRL_OP_PHY_CLEAR_ERROR_LOG (0x08)
1759 #define MPI26_CTRL_OP_LINK_CLEAR_ERROR_LOG (0x09)
1760 #define MPI26_CTRL_OP_SAS_SEND_PRIMITIVE (0x0A)
1761 #define MPI26_CTRL_OP_FORCE_FULL_DISCOVERY (0x0B)
1762 #define MPI26_CTRL_OP_REMOVE_DEVICE (0x0D)
1763 #define MPI26_CTRL_OP_LOOKUP_MAPPING (0x0E)
1764 #define MPI26_CTRL_OP_SET_IOC_PARAMETER (0x0F)
1765 #define MPI26_CTRL_OP_ENABLE_FP_DEVICE (0x10)
1766 #define MPI26_CTRL_OP_DISABLE_FP_DEVICE (0x11)
1767 #define MPI26_CTRL_OP_ENABLE_FP_ALL (0x12)
1768 #define MPI26_CTRL_OP_DISABLE_FP_ALL (0x13)
1769 #define MPI26_CTRL_OP_DEV_ENABLE_NCQ (0x14)
1770 #define MPI26_CTRL_OP_DEV_DISABLE_NCQ (0x15)
1771 #define MPI26_CTRL_OP_SHUTDOWN (0x16)
1772 #define MPI26_CTRL_OP_DEV_ENABLE_PERSIST_CONNECTION (0x17)
1773 #define MPI26_CTRL_OP_DEV_DISABLE_PERSIST_CONNECTION (0x18)
1774 #define MPI26_CTRL_OP_DEV_CLOSE_PERSIST_CONNECTION (0x19)
1775 #define MPI26_CTRL_OP_ENABLE_NVME_SGL_FORMAT (0x1A)
1776 #define MPI26_CTRL_OP_DISABLE_NVME_SGL_FORMAT (0x1B)
1777 #define MPI26_CTRL_OP_PRODUCT_SPECIFIC_MIN (0x80)
1778
1779
1780 #define MPI26_CTRL_PRIMFLAGS_SINGLE (0x08)
1781 #define MPI26_CTRL_PRIMFLAGS_TRIPLE (0x02)
1782 #define MPI26_CTRL_PRIMFLAGS_REDUNDANT (0x01)
1783
1784
1785 #define MPI26_CTRL_LOOKUP_METHOD_WWID_ADDRESS (0x01)
1786 #define MPI26_CTRL_LOOKUP_METHOD_ENCLOSURE_SLOT (0x02)
1787 #define MPI26_CTRL_LOOKUP_METHOD_SAS_DEVICE_NAME (0x03)
1788
1789
1790
1791 typedef struct _MPI26_IOUNIT_CONTROL_REPLY {
1792 U8 Operation;
1793 U8 Reserved1;
1794 U8 MsgLength;
1795 U8 Function;
1796 U16 DevHandle;
1797 U8 IOCParameter;
1798 U8 MsgFlags;
1799 U8 VP_ID;
1800 U8 VF_ID;
1801 U16 Reserved3;
1802 U16 Reserved4;
1803 U16 IOCStatus;
1804 U32 IOCLogInfo;
1805 } MPI26_IOUNIT_CONTROL_REPLY,
1806 *PTR_MPI26_IOUNIT_CONTROL_REPLY,
1807 Mpi26IoUnitControlReply_t,
1808 *pMpi26IoUnitControlReply_t;
1809
1810
1811 #endif