#if !defined(I2O_MESSAGE_HDR)
#define I2O_MESSAGE_HDR
#define I2OMSG_REV 1_5_4
#include "i2otypes.h"
PRAGMA_ALIGN_PUSH
PRAGMA_PACK_PUSH
#define I2O_64BIT_CONTEXT 0
#define I2O_PRIVATE_MESSAGE 0xFF
#define I2O_CLASS_VERSION_10 0x00
#define I2O_CLASS_VERSION_11 0x01
#define I2O_CLASS_EXECUTIVE 0x000
#define I2O_CLASS_DDM 0x001
#define I2O_CLASS_RANDOM_BLOCK_STORAGE 0x010
#define I2O_CLASS_SEQUENTIAL_STORAGE 0x011
#define I2O_CLASS_LAN 0x020
#define I2O_CLASS_WAN 0x030
#define I2O_CLASS_FIBRE_CHANNEL_PORT 0x040
#define I2O_CLASS_FIBRE_CHANNEL_PERIPHERAL 0x041
#define I2O_CLASS_SCSI_PERIPHERAL 0x051
#define I2O_CLASS_ATE_PORT 0x060
#define I2O_CLASS_ATE_PERIPHERAL 0x061
#define I2O_CLASS_FLOPPY_CONTROLLER 0x070
#define I2O_CLASS_FLOPPY_DEVICE 0x071
#define I2O_CLASS_BUS_ADAPTER_PORT 0x080
#define I2O_CLASS_MATCH_ANYCLASS 0xffffffff
#define I2O_SUBCLASS_i960 0x001
#define I2O_SUBCLASS_HDM 0x020
#define I2O_SUBCLASS_ISM 0x021
#define I2O_VERSION_10 0x00
#define I2O_VERSION_11 0x01
#define I2O_VERSION_OFFSET_NUMBER_MASK 0x07
#define I2O_VERSION_OFFSET_SGL_TRL_OFFSET_MASK 0xF0
#define I2O_MESSAGE_FLAGS_STATIC 0x01
#define I2O_MESSAGE_FLAGS_64BIT_CONTEXT 0x02
#define I2O_MESSAGE_FLAGS_MULTIPLE 0x10
#define I2O_MESSAGE_FLAGS_FAIL 0x20
#define I2O_MESSAGE_FLAGS_LAST 0x40
#define I2O_MESSAGE_FLAGS_REPLY 0x80
#define I2O_REPLY_STATUS_SUCCESS 0x00
#define I2O_REPLY_STATUS_ABORT_DIRTY 0x01
#define I2O_REPLY_STATUS_ABORT_NO_DATA_TRANSFER 0x02
#define I2O_REPLY_STATUS_ABORT_PARTIAL_TRANSFER 0x03
#define I2O_REPLY_STATUS_ERROR_DIRTY 0x04
#define I2O_REPLY_STATUS_ERROR_NO_DATA_TRANSFER 0x05
#define I2O_REPLY_STATUS_ERROR_PARTIAL_TRANSFER 0x06
#define I2O_REPLY_STATUS_PROCESS_ABORT_DIRTY 0x08
#define I2O_REPLY_STATUS_PROCESS_ABORT_NO_DATA_TRANSFER 0x09
#define I2O_REPLY_STATUS_PROCESS_ABORT_PARTIAL_TRANSFER 0x0A
#define I2O_REPLY_STATUS_TRANSACTION_ERROR 0x0B
#define I2O_REPLY_STATUS_PROGRESS_REPORT 0x80
#define I2O_DETAIL_STATUS_SUCCESS 0x0000
#define I2O_DETAIL_STATUS_BAD_KEY 0x0002
#define I2O_DETAIL_STATUS_TCL_ERROR 0x0003
#define I2O_DETAIL_STATUS_REPLY_BUFFER_FULL 0x0004
#define I2O_DETAIL_STATUS_NO_SUCH_PAGE 0x0005
#define I2O_DETAIL_STATUS_INSUFFICIENT_RESOURCE_SOFT 0x0006
#define I2O_DETAIL_STATUS_INSUFFICIENT_RESOURCE_HARD 0x0007
#define I2O_DETAIL_STATUS_CHAIN_BUFFER_TOO_LARGE 0x0009
#define I2O_DETAIL_STATUS_UNSUPPORTED_FUNCTION 0x000A
#define I2O_DETAIL_STATUS_DEVICE_LOCKED 0x000B
#define I2O_DETAIL_STATUS_DEVICE_RESET 0x000C
#define I2O_DETAIL_STATUS_INAPPROPRIATE_FUNCTION 0x000D
#define I2O_DETAIL_STATUS_INVALID_INITIATOR_ADDRESS 0x000E
#define I2O_DETAIL_STATUS_INVALID_MESSAGE_FLAGS 0x000F
#define I2O_DETAIL_STATUS_INVALID_OFFSET 0x0010
#define I2O_DETAIL_STATUS_INVALID_PARAMETER 0x0011
#define I2O_DETAIL_STATUS_INVALID_REQUEST 0x0012
#define I2O_DETAIL_STATUS_INVALID_TARGET_ADDRESS 0x0013
#define I2O_DETAIL_STATUS_MESSAGE_TOO_LARGE 0x0014
#define I2O_DETAIL_STATUS_MESSAGE_TOO_SMALL 0x0015
#define I2O_DETAIL_STATUS_MISSING_PARAMETER 0x0016
#define I2O_DETAIL_STATUS_TIMEOUT 0x0017
#define I2O_DETAIL_STATUS_UNKNOWN_ERROR 0x0018
#define I2O_DETAIL_STATUS_UNKNOWN_FUNCTION 0x0019
#define I2O_DETAIL_STATUS_UNSUPPORTED_VERSION 0x001A
#define I2O_DEATIL_STATUS_DEVICE_BUSY 0x001B
#define I2O_DETAIL_STATUS_DEVICE_NOT_AVAILABLE 0x001C
#define I2O_TID_SZ 12
#define I2O_FUNCTION_SZ 8
#define I2O_UNIT_ID_SZ 16
#define I2O_SEGMENT_NUMBER_SZ 12
#define I2O_IOP_ID_SZ 12
#define I2O_GROUP_ID_SZ 16
#define I2O_IOP_STATE_SZ 8
#define I2O_MESSENGER_TYPE_SZ 8
#define I2O_CLASS_ID_SZ 12
#define I2O_CLASS_ORGANIZATION_ID_SZ 16
#define I2O_4BIT_VERSION_SZ 4
#define I2O_8BIT_FLAGS_SZ 8
#define I2O_COMMON_LENGTH_FIELD_SZ 16
#define I2O_DEVID_DESCRIPTION_SZ 16
#define I2O_DEVID_VENDOR_INFO_SZ 16
#define I2O_DEVID_PRODUCT_INFO_SZ 16
#define I2O_DEVID_REV_LEVEL_SZ 8
#define I2O_MODULE_NAME_SZ 24
#define I2O_BIOS_INFO_SZ 8
#define I2O_RESERVED_4BITS 4
#define I2O_RESERVED_8BITS 8
#define I2O_RESERVED_12BITS 12
#define I2O_RESERVED_16BITS 16
#define I2O_RESERVED_20BITS 20
#define I2O_RESERVED_24BITS 24
#define I2O_RESERVED_28BITS 28
typedef U32 I2O_PARAMETER_TID;
#if I2O_64BIT_CONTEXT
typedef U64 I2O_INITIATOR_CONTEXT;
typedef U64 I2O_TRANSACTION_CONTEXT;
#else
typedef U32 I2O_INITIATOR_CONTEXT;
typedef U32 I2O_TRANSACTION_CONTEXT;
#endif
#define I2O_SERIAL_FORMAT_UNKNOWN 0
#define I2O_SERIAL_FORMAT_BINARY 1
#define I2O_SERIAL_FORMAT_ASCII 2
#define I2O_SERIAL_FORMAT_UNICODE 3
#define I2O_SERIAL_FORMAT_LAN_MAC 4
#define I2O_SERIAL_FORMAT_WAN 5
#define I2O_IOP_TID 0
#define I2O_HOST_TID 1
typedef struct _I2O_MESSAGE_FRAME {
U8 VersionOffset;
U8 MsgFlags;
U16 MessageSize;
#if (defined(__BORLANDC__)) || defined(_DPT_BIG_ENDIAN) || (defined(sparc))
U32 TargetAddress;
#else
BF TargetAddress:I2O_TID_SZ;
BF InitiatorAddress:I2O_TID_SZ;
BF Function:I2O_FUNCTION_SZ;
#endif
I2O_INITIATOR_CONTEXT InitiatorContext;
} I2O_MESSAGE_FRAME, *PI2O_MESSAGE_FRAME;
#define I2O_TRL_FLAGS_SINGLE_FIXED_LENGTH 0x00
#define I2O_TRL_FLAGS_SINGLE_VARIABLE_LENGTH 0x40
#define I2O_TRL_FLAGS_MULTIPLE_FIXED_LENGTH 0x80
typedef struct _I2O_TRL_CONTROL_WORD {
U8 TrlCount;
U8 TrlElementSize;
U8 reserved;
U8 TrlFlags;
#if I2O_64BIT_CONTEXT
U32 Padding;
#endif
} I2O_TRL_CONTROL_WORD, *PI2O_TRL_CONTROL_WORD;
typedef struct _I2O_SINGLE_REPLY_MESSAGE_FRAME {
I2O_MESSAGE_FRAME StdMessageFrame;
I2O_TRANSACTION_CONTEXT TransactionContext;
U16 DetailedStatusCode;
U8 reserved;
U8 ReqStatus;
} I2O_SINGLE_REPLY_MESSAGE_FRAME, *PI2O_SINGLE_REPLY_MESSAGE_FRAME;
typedef struct _I2O_MULTIPLE_REPLY_MESSAGE_FRAME {
I2O_MESSAGE_FRAME StdMessageFrame;
I2O_TRL_CONTROL_WORD TrlControlWord;
U16 DetailedStatusCode;
U8 reserved;
U8 ReqStatus;
} I2O_MULTIPLE_REPLY_MESSAGE_FRAME, *PI2O_MULTIPLE_REPLY_MESSAGE_FRAME;
typedef struct _I2O_PRIVATE_MESSAGE_FRAME {
I2O_MESSAGE_FRAME StdMessageFrame;
I2O_TRANSACTION_CONTEXT TransactionContext;
U16 XFunctionCode;
U16 OrganizationID;
} I2O_PRIVATE_MESSAGE_FRAME, *PI2O_PRIVATE_MESSAGE_FRAME;
#define I2O_SEVERITY_FORMAT_ERROR 0x1
#define I2O_SEVERITY_PATH_ERROR 0x2
#define I2O_SEVERITY_PATH_STATE 0x4
#define I2O_SEVERITY_CONGESTION 0x8
#define I2O_FAILURE_CODE_TRANSPORT_SERVICE_SUSPENDED 0x81
#define I2O_FAILURE_CODE_TRANSPORT_SERVICE_TERMINATED 0x82
#define I2O_FAILURE_CODE_TRANSPORT_CONGESTION 0x83
#define I2O_FAILURE_CODE_TRANSPORT_FAIL 0x84
#define I2O_FAILURE_CODE_TRANSPORT_STATE_ERROR 0x85
#define I2O_FAILURE_CODE_TRANSPORT_TIME_OUT 0x86
#define I2O_FAILURE_CODE_TRANSPORT_ROUTING_FAILURE 0x87
#define I2O_FAILURE_CODE_TRANSPORT_INVALID_VERSION 0x88
#define I2O_FAILURE_CODE_TRANSPORT_INVALID_OFFSET 0x89
#define I2O_FAILURE_CODE_TRANSPORT_INVALID_MSG_FLAGS 0x8A
#define I2O_FAILURE_CODE_TRANSPORT_FRAME_TOO_SMALL 0x8B
#define I2O_FAILURE_CODE_TRANSPORT_FRAME_TOO_LARGE 0x8C
#define I2O_FAILURE_CODE_TRANSPORT_INVALID_TARGET_ID 0x8D
#define I2O_FAILURE_CODE_TRANSPORT_INVALID_INITIATOR_ID 0x8E
#define I2O_FAILURE_CODE_TRANSPORT_INVALID_INITIATOR_CONTEXT 0x8F
#define I2O_FAILURE_CODE_TRANSPORT_UNKNOWN_FAILURE 0xFF
#define I2O_FAILCODE_SEVERITY_SZ 8
#define I2O_FAILCODE_CODE_SZ 8
typedef struct _I2O_FAILURE_REPLY_MESSAGE_FRAME {
I2O_MESSAGE_FRAME StdMessageFrame;
I2O_TRANSACTION_CONTEXT TransactionContext;
# if (defined(_DPT_BIG_ENDIAN) || defined(sparc) || defined(__BORLANDC__))
U32 LowestVersion;
U32 reserved;
# else
U8 LowestVersion;
U8 HighestVersion;
U8 Severity;
U8 FailureCode;
BF reserved:I2O_RESERVED_4BITS;
BF FailingHostUnitID:I2O_UNIT_ID_SZ;
BF reserved1:12;
# endif
U32 AgeLimit;
U32 PreservedMFA;
} I2O_FAILURE_REPLY_MESSAGE_FRAME, *PI2O_FAILURE_REPLY_MESSAGE_FRAME;
typedef struct _I2O_TRANSACTION_ERROR_REPLY_MESSAGE_FRAME {
I2O_MESSAGE_FRAME StdMessageFrame;
I2O_TRANSACTION_CONTEXT TransactionContext;
U16 DetailedStatusCode;
U8 reserved;
U8 ReqStatus;
U32 ErrorOffset;
U8 BitOffset;
U8 reserved1;
U16 reserved2;
} I2O_TRANSACTION_ERROR_REPLY_MESSAGE_FRAME, *PI2O_TRANSACTION_ERROR_REPLY_MESSAGE_FRAME;
typedef struct _I2O_CLASS_ID {
#if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
U32 Class;
#else
BF Class:I2O_CLASS_ID_SZ;
BF Version:I2O_4BIT_VERSION_SZ;
BF OrganizationID:I2O_CLASS_ORGANIZATION_ID_SZ;
#endif
} I2O_CLASS_ID, *PI2O_CLASS_ID;
#define I2O_MAX_SERIAL_NUMBER_SZ 256
typedef struct _I2O_SERIAL_INFO {
U8 SerialNumberLength;
U8 SerialNumberFormat;
U8 SerialNumber[I2O_MAX_SERIAL_NUMBER_SZ];
} I2O_SERIAL_INFO, *PI2O_SERIAL_INFO;
#define I2O_LOCAL_BUS 0
#define I2O_ISA_BUS 1
#define I2O_EISA_BUS 2
#define I2O_MCA_BUS 3
#define I2O_PCI_BUS 4
#define I2O_PCMCIA_BUS 5
#define I2O_NUBUS_BUS 6
#define I2O_CARDBUS_BUS 7
#define I2O_OTHER_BUS 0x80
#define I2O_HRT_STATE_SZ 4
#define I2O_HRT_BUS_NUMBER_SZ 8
#define I2O_HRT_BUS_TYPE_SZ 8
typedef struct _I2O_PCI_BUS_INFO {
U8 PciFunctionNumber;
U8 PciDeviceNumber;
U8 PciBusNumber;
U8 reserved;
U16 PciVendorID;
U16 PciDeviceID;
} I2O_PCI_BUS_INFO, *PI2O_PCI_BUS_INFO;
typedef struct _I2O_LOCAL_BUS_INFO {
U16 LbBaseIOPort;
U16 reserved;
U32 LbBaseMemoryAddress;
} I2O_LOCAL_BUS_INFO, *PI2O_LOCAL_BUS_INFO;
typedef struct _I2O_ISA_BUS_INFO {
U16 IsaBaseIOPort;
U8 CSN;
U8 reserved;
U32 IsaBaseMemoryAddress;
} I2O_ISA_BUS_INFO, *PI2O_ISA_BUS_INFO;
typedef struct _I2O_EISA_BUS_INFO {
U16 EisaBaseIOPort;
U8 reserved;
U8 EisaSlotNumber;
U32 EisaBaseMemoryAddress;
} I2O_EISA_BUS_INFO, *PI2O_EISA_BUS_INFO;
typedef struct _I2O_MCA_BUS_INFO {
U16 McaBaseIOPort;
U8 reserved;
U8 McaSlotNumber;
U32 McaBaseMemoryAddress;
} I2O_MCA_BUS_INFO, *PI2O_MCA_BUS_INFO;
typedef struct _I2O_OTHER_BUS_INFO {
U16 BaseIOPort;
U16 reserved;
U32 BaseMemoryAddress;
} I2O_OTHER_BUS_INFO, *PI2O_OTHER_BUS_INFO;
typedef struct _I2O_HRT_ENTRY {
U32 AdapterID;
#if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
U32 ControllingTID;
#else
BF ControllingTID:I2O_TID_SZ;
BF AdapterState:I2O_HRT_STATE_SZ;
BF BusNumber:I2O_HRT_BUS_NUMBER_SZ;
BF BusType:I2O_HRT_BUS_TYPE_SZ;
#endif
union {
I2O_PCI_BUS_INFO PCIBus;
I2O_LOCAL_BUS_INFO LocalBus;
I2O_ISA_BUS_INFO ISABus;
I2O_EISA_BUS_INFO EISABus;
I2O_MCA_BUS_INFO MCABus;
I2O_OTHER_BUS_INFO OtherBus;
}uBus;
} I2O_HRT_ENTRY, *PI2O_HRT_ENTRY;
typedef struct _I2O_HRT {
U16 NumberEntries;
U8 EntryLength;
U8 HRTVersion;
U32 CurrentChangeIndicator;
I2O_HRT_ENTRY HRTEntry[1];
} I2O_HRT, *PI2O_HRT;
#define I2O_IDENTITY_TAG_SZ 8
#define I2O_LCT_DEVICE_FLAGS_CONF_DIALOG_REQUEST 0x01
#define I2O_LCT_DEVICE_FLAGS_MORE_THAN_1_USER 0x02
#define I2O_LCT_DEVICE_FLAGS_PEER_SERVICE_DISABLED 0x10
#define I2O_LCT_DEVICE_FLAGS_MANAGEMENT_SERVICE_DISABLED 0x20
typedef struct _I2O_LCT_ENTRY {
#if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
U32 TableEntrySize;
#else
BF TableEntrySize:I2O_COMMON_LENGTH_FIELD_SZ;
BF LocalTID:I2O_TID_SZ;
BF reserved:I2O_4BIT_VERSION_SZ;
#endif
U32 ChangeIndicator;
U32 DeviceFlags;
I2O_CLASS_ID ClassID;
U32 SubClassInfo;
#if (defined(__BORLANDC__)) || defined(_DPT_BIG_ENDIAN) || (defined(sparc))
U32 UserTID;
#else
BF UserTID:I2O_TID_SZ;
BF ParentTID:I2O_TID_SZ;
BF BiosInfo:I2O_BIOS_INFO_SZ;
#endif
U8 IdentityTag[I2O_IDENTITY_TAG_SZ];
U32 EventCapabilities;
} I2O_LCT_ENTRY, *PI2O_LCT_ENTRY;
typedef struct _I2O_LCT {
#if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
U32 TableSize;
#else
BF TableSize:I2O_COMMON_LENGTH_FIELD_SZ;
BF BootDeviceTID:I2O_TID_SZ;
BF LctVer:I2O_4BIT_VERSION_SZ;
#endif
U32 IopFlags;
U32 CurrentChangeIndicator;
I2O_LCT_ENTRY LCTEntry[1];
} I2O_LCT, *PI2O_LCT;
#define I2O_SGL_FLAGS_LAST_ELEMENT 0x80
#define I2O_SGL_FLAGS_END_OF_BUFFER 0x40
#define I2O_SGL_FLAGS_IGNORE_ELEMENT 0x00
#define I2O_SGL_FLAGS_TRANSPORT_ELEMENT 0x04
#define I2O_SGL_FLAGS_BIT_BUCKET_ELEMENT 0x08
#define I2O_SGL_FLAGS_IMMEDIATE_DATA_ELEMENT 0x0C
#define I2O_SGL_FLAGS_SIMPLE_ADDRESS_ELEMENT 0x10
#define I2O_SGL_FLAGS_PAGE_LIST_ADDRESS_ELEMENT 0x20
#define I2O_SGL_FLAGS_CHAIN_POINTER_ELEMENT 0x30
#define I2O_SGL_FLAGS_LONG_TRANSACTION_ELEMENT 0x40
#define I2O_SGL_FLAGS_SHORT_TRANSACTION_ELEMENT 0x70
#define I2O_SGL_FLAGS_SGL_ATTRIBUTES_ELEMENT 0x7C
#define I2O_SGL_FLAGS_BC0 0x01
#define I2O_SGL_FLAGS_BC1 0x02
#define I2O_SGL_FLAGS_DIR 0x04
#define I2O_SGL_FLAGS_LOCAL_ADDRESS 0x08
#define I2O_SGL_FLAGS_CONTEXT_COUNT_MASK 0x03
#define I2O_SGL_FLAGS_ADDRESS_MODE_MASK 0x3C
#define I2O_SGL_FLAGS_NO_CONTEXT 0x00
#define I2O_SGL_FLAGS_CONTEXT32_NULL 0x00
#define I2O_SGL_FLAGS_CONTEXT32_U32 0x01
#define I2O_SGL_FLAGS_CONTEXT32_U64 0x02
#define I2O_SGL_FLAGS_CONTEXT32_U96 0x03
#define I2O_SGL_FLAGS_CONTEXT32_NULL_SZ 0x00
#define I2O_SGL_FLAGS_CONTEXT32_U32_SZ 0x04
#define I2O_SGL_FLAGS_CONTEXT32_U64_SZ 0x08
#define I2O_SGL_FLAGS_CONTEXT32_U96_SZ 0x0C
#define I2O_SGL_FLAGS_CONTEXT64_NULL 0x00
#define I2O_SGL_FLAGS_CONTEXT64_U64 0x01
#define I2O_SGL_FLAGS_CONTEXT64_U128 0x02
#define I2O_SGL_FLAGS_CONTEXT64_U192 0x03
#define I2O_SGL_FLAGS_CONTEXT64_NULL_SZ 0x00
#define I2O_SGL_FLAGS_CONTEXT64_U64_SZ 0x08
#define I2O_SGL_FLAGS_CONTEXT64_U128_SZ 0x10
#define I2O_SGL_FLAGS_CONTEXT64_U192_SZ 0x18
#define I2O_SGL_ATTRIBUTE_FLAGS_BIT_BUCKET_HINT 0x0400
#define I2O_SGL_ATTRIBUTE_FLAGS_IMMEDIATE_DATA_HINT 0x0200
#define I2O_SGL_ATTRIBUTE_FLAGS_LOCAL_ADDRESS_HINT 0x0100
#define I2O_SGL_ATTRIBUTE_FLAGS_32BIT_TRANSACTION 0x0000
#define I2O_SGL_ATTRIBUTE_FLAGS_64BIT_TRANSACTION 0x0004
#define I2O_SGL_ATTRIBUTE_FLAGS_32BIT_LOCAL_ADDRESS 0x0000
#define I2O_SG_COUNT_SZ 24
#define I2O_SG_FLAGS_SZ 8
typedef struct _I2O_FLAGS_COUNT {
#if (defined(__BORLANDC__)) || defined(_DPT_BIG_ENDIAN) || (defined(sparc))
U32 Count;
#else
BF Count:I2O_SG_COUNT_SZ;
BF Flags:I2O_SG_FLAGS_SZ;
#endif
} I2O_FLAGS_COUNT, *PI2O_FLAGS_COUNT;
typedef struct _I2O_SGE_BIT_BUCKET_ELEMENT {
I2O_FLAGS_COUNT FlagsCount;
U32 BufferContext;
} I2O_SGE_BIT_BUCKET_ELEMENT, *PI2O_SGE_BIT_BUCKET_ELEMENT;
typedef struct _I2O_SGE_CHAIN_ELEMENT {
I2O_FLAGS_COUNT FlagsCount;
U32 PhysicalAddress;
} I2O_SGE_CHAIN_ELEMENT, *PI2O_SGE_CHAIN_ELEMENT;
typedef struct _I2O_SGE_CHAIN_CONTEXT_ELEMENT {
I2O_FLAGS_COUNT FlagsCount;
U32 Context[1];
U32 PhysicalAddress;
} I2O_SGE_CHAIN_CONTEXT_ELEMENT, *PI2O_SGE_CHAIN_CONTEXT_ELEMENT;
typedef struct _I2O_SGE_IGNORE_ELEMENT {
I2O_FLAGS_COUNT FlagsCount;
} I2O_SGE_IGNORE_ELEMENT, *PI2O_SGE_IGNORE_ELEMENT;
typedef struct _I2O_SGE_IMMEDIATE_DATA_ELEMENT {
I2O_FLAGS_COUNT FlagsCount;
} I2O_SGE_IMMEDIATE_DATA_ELEMENT, *PI2O_SGE_IMMEDIATE_DATA_ELEMENT;
typedef struct _I2O_SGE_IMMEDIATE_DATA_CONTEXT_ELEMENT {
I2O_FLAGS_COUNT FlagsCount;
U32 BufferContext;
} I2O_SGE_IMMEDIATE_DATA_CONTEXT_ELEMENT, *PI2O_SGE_IMMEDIATE_DATA_CONTEXT_ELEMENT;
typedef struct _I2O_SGE_LONG_TRANSACTION_ELEMENT {
#if (defined(__BORLANDC__))
U32 LongElementLength;
#else
BF LongElementLength:I2O_SG_COUNT_SZ;
BF Flags:I2O_SG_FLAGS_SZ;
#endif
U32 BufferContext;
} I2O_SGE_LONG_TRANSACTION_ELEMENT, *PI2O_SGE_LONG_TRANSACTION_ELEMENT;
typedef struct _I2O_SGE_PAGE_ELEMENT {
I2O_FLAGS_COUNT FlagsCount;
U32 PhysicalAddress[1];
} I2O_SGE_PAGE_ELEMENT , *PI2O_SGE_PAGE_ELEMENT ;
typedef struct _I2O_SGE_PAGE_CONTEXT_ELEMENT {
I2O_FLAGS_COUNT FlagsCount;
U32 BufferContext[1];
U32 PhysicalAddress[1];
} I2O_SGE_PAGE_CONTEXT_ELEMENT, *PI2O_SGE_PAGE_CONTEXT_ELEMENT;
typedef struct _I2O_SGE_SGL_ATTRIBUTES_ELEMENT {
U16 SglAttributeFlags;
U8 ElementLength;
U8 Flags;
U32 PageFrameSize;
} I2O_SGE_SGL_ATTRIBUTES_ELEMENT, *PI2O_SGE_SGL_ATTRIBUTES_ELEMENT;
typedef struct _I2O_SGE_SHORT_TRANSACTION_ELEMENT {
U16 ClassFields;
U8 ElementLength;
U8 Flags;
U32 BufferContext;
} I2O_SGE_SHORT_TRANSACTION_ELEMENT, *PI2O_SGE_SHORT_TRANSACTION_ELEMENT;
typedef struct _I2O_SGE_SIMPLE_ELEMENT {
I2O_FLAGS_COUNT FlagsCount;
U32 PhysicalAddress;
} I2O_SGE_SIMPLE_ELEMENT, *PI2O_SGE_SIMPLE_ELEMENT;
typedef struct _I2O_SGE_SIMPLE_CONTEXT_ELEMENT {
I2O_FLAGS_COUNT FlagsCount;
U32 BufferContext[1];
U32 PhysicalAddress;
} I2O_SGE_SIMPLE_CONTEXT_ELEMENT, *PI2O_SGE_SIMPLE_CONTEXT_ELEMENT;
typedef struct _I2O_SGE_TRANSPORT_ELEMENT {
#if (defined(__BORLANDC__))
U32 LongElementLength;
#else
BF LongElementLength:I2O_SG_COUNT_SZ;
BF Flags:I2O_SG_FLAGS_SZ;
#endif
} I2O_SGE_TRANSPORT_ELEMENT, *PI2O_SGE_TRANSPORT_ELEMENT;
typedef struct _I2O_SG_ELEMENT {
union {
I2O_SGE_BIT_BUCKET_ELEMENT BitBucket;
I2O_SGE_CHAIN_ELEMENT Chain;
I2O_SGE_CHAIN_CONTEXT_ELEMENT ChainContext;
I2O_SGE_IGNORE_ELEMENT Ignore;
I2O_SGE_IMMEDIATE_DATA_ELEMENT ImmediateData;
I2O_SGE_IMMEDIATE_DATA_CONTEXT_ELEMENT ImmediateDataContext;
I2O_SGE_LONG_TRANSACTION_ELEMENT LongTransaction;
I2O_SGE_PAGE_ELEMENT Page;
I2O_SGE_PAGE_CONTEXT_ELEMENT PageContext;
I2O_SGE_SGL_ATTRIBUTES_ELEMENT SGLAttribute;
I2O_SGE_SHORT_TRANSACTION_ELEMENT ShortTransaction;
I2O_SGE_SIMPLE_ELEMENT Simple[2];
I2O_SGE_SIMPLE_CONTEXT_ELEMENT SimpleContext[1];
I2O_SGE_TRANSPORT_ELEMENT Transport;
#if (defined(sun) && defined(u))
} uSG ;
#else
} u ;
#endif
} I2O_SG_ELEMENT, *PI2O_SG_ELEMENT;
#define I2O_PARAMS_OPERATION_FIELD_GET 0x0001
#define I2O_PARAMS_OPERATION_LIST_GET 0x0002
#define I2O_PARAMS_OPERATION_MORE_GET 0x0003
#define I2O_PARAMS_OPERATION_SIZE_GET 0x0004
#define I2O_PARAMS_OPERATION_TABLE_GET 0x0005
#define I2O_PARAMS_OPERATION_FIELD_SET 0x0006
#define I2O_PARAMS_OPERATION_LIST_SET 0x0007
#define I2O_PARAMS_OPERATION_ROW_ADD 0x0008
#define I2O_PARAMS_OPERATION_ROW_DELETE 0x0009
#define I2O_PARAMS_OPERATION_TABLE_CLEAR 0x000A
typedef struct _I2O_PARAM_OPERATIONS_LIST_HEADER {
U16 OperationCount;
U16 Reserved;
} I2O_PARAM_OPERATIONS_LIST_HEADER, *PI2O_PARAM_OPERATIONS_LIST_HEADER;
typedef struct _I2O_PARAM_RESULTS_LIST_HEADER {
U16 ResultCount;
U16 Reserved;
} I2O_PARAM_RESULTS_LIST_HEADER, *PI2O_PARAM_RESULTS_LIST_HEADER;
typedef struct _I2O_PARAM_READ_OPERATION_RESULT {
U16 BlockSize;
U8 BlockStatus;
U8 ErrorInfoSize;
} I2O_PARAM_READ_OPERATION_RESULT, *PI2O_PARAM_READ_OPERATION_RESULT;
typedef struct _I2O_TABLE_READ_OPERATION_RESULT {
U16 BlockSize;
U8 BlockStatus;
U8 ErrorInfoSize;
U16 RowCount;
U16 MoreFlag;
} I2O_TABLE_READ_OPERATION_RESULT, *PI2O_TABLE_READ_OPERATION_RESULT;
typedef struct _I2O_PARAM_ERROR_INFO_TEMPLATE {
U16 OperationCode;
U16 GroupNumber;
U16 FieldIdx;
U8 AdditionalStatus;
U8 NumberKeys;
} I2O_PARAM_ERROR_INFO_TEMPLATE, *PI2O_PARAM_ERROR_INFO_TEMPLATE;
typedef struct _I2O_PARAM_OPERATION_SPECIFIC_TEMPLATE {
U16 Operation;
U16 GroupNumber;
U16 FieldCount;
U16 FieldIdx[1];
} I2O_PARAM_OPERATION_SPECIFIC_TEMPLATE, *PI2O_PARAM_OPERATION_SPECIFIC_TEMPLATE;
typedef struct _I2O_PARAM_OPERATION_ALL_TEMPLATE {
U16 Operation;
U16 GroupNumber;
U16 FieldCount;
} I2O_PARAM_OPERATION_ALL_TEMPLATE, *PI2O_PARAM_OPERATION_ALL_TEMPLATE;
typedef struct _I2O_PARAM_OPERATION_ALL_LIST_TEMPLATE {
U16 Operation;
U16 GroupNumber;
U16 FieldCount;
U16 KeyCount;
U8 KeyValue;
} I2O_PARAM_OPERATION_ALL_LIST_TEMPLATE, *PI2O_PARAM_OPERATION_ALL_LIST_TEMPLATE;
typedef struct _I2O_PARAM_MODIFY_OPERATION_RESULT {
U16 BlockSize;
U8 BlockStatus;
U8 ErrorInfoSize;
} I2O_PARAM_MODIFY_OPERATION_RESULT, *PI2O_PARAM_MODIFY_OPERATION_RESULT;
typedef struct _I2O_PARAM_OPERATION_ROW_DELETE_TEMPLATE {
U16 Operation;
U16 GroupNumber;
U16 RowCount;
U8 KeyValue;
} I2O_PARAM_OPERATION_ROW_DELETE_TEMPLATE, *PI2O_PARAM_OPERATION_ROW_DELETE_TEMPLATE;
typedef struct _I2O_PARAM_OPERATION_TABLE_CLEAR_TEMPLATE {
U16 Operation;
U16 GroupNumber;
} I2O_PARAM_OPERATION_TABLE_CLEAR_TEMPLATE, *PI2O_PARAM_OPERATION_TABLE_CLEAR_TEMPLATE;
#define I2O_PARAMS_STATUS_SUCCESS 0x00
#define I2O_PARAMS_STATUS_BAD_KEY_ABORT 0x01
#define I2O_PARAMS_STATUS_BAD_KEY_CONTINUE 0x02
#define I2O_PARAMS_STATUS_BUFFER_FULL 0x03
#define I2O_PARAMS_STATUS_BUFFER_TOO_SMALL 0x04
#define I2O_PARAMS_STATUS_FIELD_UNREADABLE 0x05
#define I2O_PARAMS_STATUS_FIELD_UNWRITEABLE 0x06
#define I2O_PARAMS_STATUS_INSUFFICIENT_FIELDS 0x07
#define I2O_PARAMS_STATUS_INVALID_GROUP_ID 0x08
#define I2O_PARAMS_STATUS_INVALID_OPERATION 0x09
#define I2O_PARAMS_STATUS_NO_KEY_FIELD 0x0A
#define I2O_PARAMS_STATUS_NO_SUCH_FIELD 0x0B
#define I2O_PARAMS_STATUS_NON_DYNAMIC_GROUP 0x0C
#define I2O_PARAMS_STATUS_OPERATION_ERROR 0x0D
#define I2O_PARAMS_STATUS_SCALAR_ERROR 0x0E
#define I2O_PARAMS_STATUS_TABLE_ERROR 0x0F
#define I2O_PARAMS_STATUS_WRONG_GROUP_TYPE 0x10
#define I2O_UTIL_PARAMS_DESCRIPTOR_GROUP_NO 0xF000
#define I2O_UTIL_PHYSICAL_DEVICE_TABLE_GROUP_NO 0xF001
#define I2O_UTIL_CLAIMED_TABLE_GROUP_NO 0xF002
#define I2O_UTIL_USER_TABLE_GROUP_NO 0xF003
#define I2O_UTIL_PRIVATE_MESSAGE_EXTENSIONS_GROUP_NO 0xF005
#define I2O_UTIL_AUTHORIZED_USER_TABLE_GROUP_NO 0xF006
#define I2O_UTIL_DEVICE_IDENTITY_GROUP_NO 0xF100
#define I2O_UTIL_DDM_IDENTITY_GROUP_NO 0xF101
#define I2O_UTIL_USER_INFORMATION_GROUP_NO 0xF102
#define I2O_UTIL_SGL_OPERATING_LIMITS_GROUP_NO 0xF103
#define I2O_UTIL_SENSORS_GROUP_NO 0xF200
#define I2O_UTIL_GROUP_PROPERTIES_GROUP_TABLE 0x01
#define I2O_UTIL_GROUP_PROPERTIES_ROW_ADDITION 0x02
#define I2O_UTIL_GROUP_PROPERTIES_ROW_DELETION 0x04
#define I2O_UTIL_GROUP_PROPERTIES_CLEAR_OPERATION 0x08
typedef struct _I2O_UTIL_GROUP_DESCRIPTOR_TABLE {
U16 GroupNumber;
U16 FieldCount;
U16 RowCount;
U8 Properties;
U8 reserved;
} I2O_UTIL_GROUP_DESCRIPTOR_TABLE, *PI2O_UTIL_GROUP_DESCRIPTOR_TABLE;
typedef struct _I2O_UTIL_PHYSICAL_DEVICE_TABLE {
U32 AdapterID;
} I2O_UTIL_PHYSICAL_DEVICE_TABLE, *PI2O_UTIL_PHYSICAL_DEVICE_TABLE;
typedef struct _I2O_UTIL_CLAIMED_TABLE {
U16 ClaimedTID;
} I2O_UTIL_CLAIMED_TABLE, *PI2O_UTIL_CLAIMED_TABLE;
typedef struct _I2O_UTIL_USER_TABLE {
U16 Instance;
U16 UserTID;
U8 ClaimType;
U8 reserved1;
U16 reserved2;
} I2O_UTIL_USER_TABLE, *PI2O_UTIL_USER_TABLE;
typedef struct _I2O_UTIL_PRIVATE_MESSAGE_EXTENSIONS_TABLE {
U16 ExtInstance;
U16 OrganizationID;
U16 XFunctionCode;
} I2O_UTIL_PRIVATE_MESSAGE_EXTENSIONS_TABLE, *PI2O_UTIL_PRIVATE_MESSAGE_EXTENSIONS_TABLE;
typedef struct _I2O_UTIL_AUTHORIZED_USER_TABLE {
U16 AlternateTID;
} I2O_UTIL_AUTHORIZED_USER_TABLE, *PI2O_UTIL_AUTHORIZED_USER_TABLE;
typedef struct _I2O_UTIL_DEVICE_IDENTITY_SCALAR {
U32 ClassID;
U16 OwnerTID;
U16 ParentTID;
U8 VendorInfo[I2O_DEVID_VENDOR_INFO_SZ];
U8 ProductInfo[I2O_DEVID_PRODUCT_INFO_SZ];
U8 Description[I2O_DEVID_DESCRIPTION_SZ];
U8 ProductRevLevel[I2O_DEVID_REV_LEVEL_SZ];
U8 SNFormat;
U8 SerialNumber[I2O_MAX_SERIAL_NUMBER_SZ];
} I2O_UTIL_DEVICE_IDENTITY_SCALAR, *PI2O_UTIL_DEVICE_IDENTITY_SCALAR;
typedef struct _I2O_UTIL_DDM_IDENTITY_SCALAR {
U16 DdmTID;
U8 ModuleName[I2O_MODULE_NAME_SZ];
U8 ModuleRevLevel[I2O_DEVID_REV_LEVEL_SZ];
U8 SNFormat;
U8 SerialNumber[I2O_MAX_SERIAL_NUMBER_SZ];
} I2O_UTIL_DDM_IDENTITY_SCALAR, *PI2O_UTIL_DDM_IDENTITY_SCALAR;
#define I2O_USER_DEVICE_NAME_SZ 64
#define I2O_USER_SERVICE_NAME_SZ 64
#define I2O_USER_PHYSICAL_LOCATION_SZ 64
typedef struct _I2O_UTIL_USER_INFORMATION_SCALAR {
U8 DeviceName[I2O_USER_DEVICE_NAME_SZ];
U8 ServiceName[I2O_USER_SERVICE_NAME_SZ];
U8 PhysicalLocation[I2O_USER_PHYSICAL_LOCATION_SZ];
U32 InstanceNumber;
} I2O_UTIL_USER_INFORMATION_SCALAR, *PI2O_UTIL_USER_INFORMATION_SCALAR;
typedef struct _I2O_UTIL_SGL_OPERATING_LIMITS_SCALAR {
U32 SglChainSize;
U32 SglChainSizeMax;
U32 SglChainSizeTarget;
U16 SglFragCount;
U16 SglFragCountMax;
U16 SglFragCountTarget;
} I2O_UTIL_SGL_OPERATING_LIMITS_SCALAR, *PI2O_UTIL_SGL_OPERATING_LIMITS_SCALAR;
#define I2O_SENSOR_COMPONENT_OTHER 0x00
#define I2O_SENSOR_COMPONENT_PLANAR_LOGIC_BOARD 0x01
#define I2O_SENSOR_COMPONENT_CPU 0x02
#define I2O_SENSOR_COMPONENT_CHASSIS 0x03
#define I2O_SENSOR_COMPONENT_POWER_SUPPLY 0x04
#define I2O_SENSOR_COMPONENT_STORAGE 0x05
#define I2O_SENSOR_COMPONENT_EXTERNAL 0x06
#define I2O_SENSOR_SENSOR_CLASS_ANALOG 0x00
#define I2O_SENSOR_SENSOR_CLASS_DIGITAL 0x01
#define I2O_SENSOR_SENSOR_TYPE_OTHER 0x00
#define I2O_SENSOR_SENSOR_TYPE_THERMAL 0x01
#define I2O_SENSOR_SENSOR_TYPE_DC_VOLTAGE 0x02
#define I2O_SENSOR_SENSOR_TYPE_AC_VOLTAGE 0x03
#define I2O_SENSOR_SENSOR_TYPE_DC_CURRENT 0x04
#define I2O_SENSOR_SENSOR_TYPE_AC_CURRENT 0x05
#define I2O_SENSOR_SENSOR_TYPE_DOOR_OPEN 0x06
#define I2O_SENSOR_SENSOR_TYPE_FAN_OPERATIONAL 0x07
#define I2O_SENSOR_SENSOR_STATE_NORMAL 0x00
#define I2O_SENSOR_SENSOR_STATE_ABNORMAL 0x01
#define I2O_SENSOR_SENSOR_STATE_UNKNOWN 0x02
#define I2O_SENSOR_SENSOR_STATE_LOW_CAT 0x03
#define I2O_SENSOR_SENSOR_STATE_LOW 0x04
#define I2O_SENSOR_SENSOR_STATE_LOW_WARNING 0x05
#define I2O_SENSOR_SENSOR_STATE_HIGH_WARNING 0x06
#define I2O_SENSOR_SENSOR_STATE_HIGH 0x07
#define I2O_SENSOR_SENSOR_STATE_HIGH_CAT 0x08
#define I2O_SENSOR_EVENT_ENABLE_STATE_CHANGE 0x0001
#define I2O_SENSOR_EVENT_ENABLE_LOW_CATASTROPHIC 0x0002
#define I2O_SENSOR_EVENT_ENABLE_LOW_READING 0x0004
#define I2O_SENSOR_EVENT_ENABLE_LOW_WARNING 0x0008
#define I2O_SENSOR_EVENT_ENABLE_CHANGE_TO_NORMAL 0x0010
#define I2O_SENSOR_EVENT_ENABLE_HIGH_WARNING 0x0020
#define I2O_SENSOR_EVENT_ENABLE_HIGH_READING 0x0040
#define I2O_SENSOR_EVENT_ENABLE_HIGH_CATASTROPHIC 0x0080
typedef struct _I2O_UTIL_SENSORS_TABLE {
U16 SensorInstance;
U8 Component;
U16 ComponentInstance;
U8 SensorClass;
U8 SensorType;
S8 ScalingExponent;
S32 ActualReading;
S32 MinimumReading;
S32 Low2LowCatThreshold;
S32 LowCat2LowThreshold;
S32 LowWarn2LowThreshold;
S32 Low2LowWarnThreshold;
S32 Norm2LowWarnThreshold;
S32 LowWarn2NormThreshold;
S32 NominalReading;
S32 HiWarn2NormThreshold;
S32 Norm2HiWarnThreshold;
S32 High2HiWarnThreshold;
S32 HiWarn2HighThreshold;
S32 HiCat2HighThreshold;
S32 Hi2HiCatThreshold;
S32 MaximumReading;
U8 SensorState;
U16 EventEnable;
} I2O_UTIL_SENSORS_TABLE, *PI2O_UTIL_SENSORS_TABLE;
PRAGMA_PACK_POP
PRAGMA_ALIGN_POP
#endif