i2outil.h revision 87826
165312Smsmith/****************************************************************
265312Smsmith * Copyright (c) 1996-2000 Distributed Processing Technology Corporation
365312Smsmith * Copyright (c) 2000 Adaptec Corporation.
465312Smsmith * All rights reserved.
565312Smsmith *
665312Smsmith * Copyright 1999 I2O Special Interest Group (I2O SIG).  All rights reserved.
765312Smsmith * All rights reserved
865312Smsmith *
965312Smsmith * TERMS AND CONDITIONS OF USE
1065312Smsmith *
1165312Smsmith * Redistribution and use in source form, with or without modification, are
1265312Smsmith * permitted provided that redistributions of source code must retain the
1365312Smsmith * above copyright notice, this list of conditions and the following disclaimer.
1465312Smsmith *
1565312Smsmith * This software is provided `as is' by Distributed Processing Technology and
1665312Smsmith * any express or implied warranties, including, but not limited to, the
1765312Smsmith * implied warranties of merchantability and fitness for a particular purpose,
1865312Smsmith * are disclaimed. In no event shall Distributed Processing Technology be
1965312Smsmith * liable for any direct, indirect, incidental, special, exemplary or
2065312Smsmith * consequential damages (including, but not limited to, procurement of
2165312Smsmith * substitute goods or services; loss of use, data, or profits; or business
2265312Smsmith * interruptions) however caused and on any theory of liability, whether in
2365312Smsmith * contract, strict liability, or tort (including negligence or otherwise)
2465312Smsmith * arising in any way out of the use of this driver software, even if advised
2565312Smsmith * of the possibility of such damage.
2665312Smsmith *
2765312Smsmith * This header file, and any modifications of this header file, are provided
2865312Smsmith * contingent upon your agreement and adherence to the here-listed terms and
2965312Smsmith * conditions.  By accepting and/or using this header file, you agree to abide
3065312Smsmith * by these terms and conditions and that these terms and conditions will be
3165312Smsmith * construed and governed in accordance with the laws of the State of California,
3265312Smsmith * without reference to conflict-of-law provisions.  If you do not agree
3365312Smsmith * to these terms and conditions, please delete this file, and any copies,
3465312Smsmith * permanently, without making any use thereof.
3565312Smsmith *
3665312Smsmith * THIS HEADER FILE IS PROVIDED FREE OF CHARGE ON AN AS-IS BASIS WITHOUT
3765312Smsmith * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
3865312Smsmith * TO IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
3965312Smsmith * PURPOSE.  I2O SIG DOES NOT WARRANT THAT THIS HEADER FILE WILL MEET THE
4065312Smsmith * USER'S REQUIREMENTS OR THAT ITS OPERATION WILL BE UNINTERRUPTED OR
4165312Smsmith * ERROR-FREE.
4265312Smsmith *
4365312Smsmith * I2O SIG DISCLAIMS ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF
4465312Smsmith * ANY PROPRIETARY RIGHTS, RELATING TO THE IMPLEMENTATION OF THE I2O
4565312Smsmith * SPECIFICATIONS.  I2O SIG DOES NOT WARRANT OR REPRESENT THAT SUCH
4665312Smsmith * IMPLEMENTATIONS WILL NOT INFRINGE SUCH RIGHTS.
4765312Smsmith *
4865312Smsmith * THE USER OF THIS HEADER FILE SHALL HAVE NO RECOURSE TO I2O SIG FOR ANY
4965312Smsmith * ACTUAL OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, LOST DATA
5065312Smsmith * OR LOST PROFITS ARISING OUT OF THE USE OR INABILITY TO USE THIS PROGRAM.
5165312Smsmith *
5265312Smsmith * I2O SIG grants the user of this header file a license to copy, distribute,
5365312Smsmith * and modify it, for any purpose, under the following terms.  Any copying,
5465312Smsmith * distribution, or modification of this header file must not delete or alter
5565312Smsmith * the copyright notice of I2O SIG or any of these Terms and Conditions.
5665312Smsmith *
5765312Smsmith * Any distribution of this header file must not include a charge for the
5865312Smsmith * header file (unless such charges are strictly for the physical acts of
5965312Smsmith * copying or transferring copies).  However, distribution of a product in
6065312Smsmith * which this header file is embedded may include a charge so long as any
6165312Smsmith * such charge does not include any charge for the header file itself.
6265312Smsmith *
6365312Smsmith * Any modification of this header file constitutes a derivative work based
6465312Smsmith * on this header file.  Any distribution of such derivative work: (1) must
6565312Smsmith * include prominent notices that the header file has been changed from the
6665312Smsmith * original, together with the dates of any changes; (2) automatically includes
6765312Smsmith * this same license to the original header file from I2O SIG, without any
6865312Smsmith * restriction thereon from the distributing user; and (3) must include a
6965312Smsmith * grant of license of the modified file under the same terms and conditions
7065312Smsmith * as these Terms and Conditions.
7165312Smsmith *
7265312Smsmith * The I2O SIG Web site can be found at: http://www.i2osig.org
7365312Smsmith *
7465312Smsmith * The I2O SIG encourages you to deposit derivative works based on this
7565312Smsmith * header file at the I2O SIG Web site.  Furthermore, to become a Registered
7665312Smsmith * Developer of the I2O SIG, sign up at the Web site or call 415.750.8352
7765312Smsmith * (United States).
7887826Sobrien *
7987826Sobrien * $FreeBSD: head/sys/dev/asr/i2outil.h 87826 2001-12-13 23:48:34Z obrien $
8087826Sobrien *
8165312Smsmith ****************************************************************/
8265312Smsmith
8365312Smsmith/*********************************************************************
8465312Smsmith * I2OUtil.h -- I2O Utility Class Message defintion file
8565312Smsmith *
8665312Smsmith * This file contains information presented in Chapter 6 of the I2O
8765312Smsmith * Specification.
8865312Smsmith **********************************************************************/
8965312Smsmith
9065312Smsmith#if !defined(I2O_UTILITY_HDR)
9165312Smsmith#define I2O_UTILITY_HDR
9265312Smsmith
9365312Smsmith#define I2OUTIL_REV 1_5_4  /* I2OUtil header file revision string */
9465312Smsmith
9565312Smsmith#if ((defined(KERNEL) || defined(_KERNEL)) && defined(__FreeBSD__))
9665312Smsmith# if (KERN_VERSION < 3)
9765312Smsmith#  include   "i386/pci/i2omsg.h"      /* Include the Base Message file */
9865312Smsmith# else
9965312Smsmith#  include   "dev/asr/i2omsg.h"
10065312Smsmith# endif
10165312Smsmith#else
10265312Smsmith# include   "i2omsg.h"      /* Include the Base Message file */
10365312Smsmith#endif
10465312Smsmith
10565312Smsmith
10665312Smsmith/*
10765312SmsmithNOTES:
10865312Smsmith
10965312Smsmith   Gets, reads, receives, etc. are all even numbered functions.
11065312Smsmith   Sets, writes, sends, etc. are all odd numbered functions.
11165312Smsmith   Functions that both send and receive data can be either but an attempt is made
11265312Smsmith       to use the function number that indicates the greater transfer amount.
11365312Smsmith   Functions that do not send or receive data use odd function numbers.
11465312Smsmith
11565312Smsmith   Some functions are synonyms like read, receive and send, write.
11665312Smsmith
11765312Smsmith   All common functions will have a code of less than 0x80.
11865312Smsmith   Unique functions to a class will start at 0x80.
11965312Smsmith   Executive Functions start at 0xA0.
12065312Smsmith
12165312Smsmith   Utility Message function codes range from 0 - 0x1f
12265312Smsmith   Base Message function codes range from 0x20 - 0xfe
12365312Smsmith   Private Message function code is 0xff.
12465312Smsmith*/
12565312Smsmith
12665312SmsmithPRAGMA_ALIGN_PUSH
12765312Smsmith
12865312SmsmithPRAGMA_PACK_PUSH
12965312Smsmith
13065312Smsmith/* Utility Message class functions. */
13165312Smsmith
13265312Smsmith#define    I2O_UTIL_NOP                                0x00
13365312Smsmith#define    I2O_UTIL_ABORT                              0x01
13465312Smsmith#define    I2O_UTIL_CLAIM                              0x09
13565312Smsmith#define    I2O_UTIL_CLAIM_RELEASE                      0x0B
13665312Smsmith#define    I2O_UTIL_CONFIG_DIALOG                      0x10
13765312Smsmith#define    I2O_UTIL_DEVICE_RESERVE                     0x0D
13865312Smsmith#define    I2O_UTIL_DEVICE_RELEASE                     0x0F
13965312Smsmith#define    I2O_UTIL_EVENT_ACKNOWLEDGE                  0x14
14065312Smsmith#define    I2O_UTIL_EVENT_REGISTER                     0x13
14165312Smsmith#define    I2O_UTIL_LOCK                               0x17
14265312Smsmith#define    I2O_UTIL_LOCK_RELEASE                       0x19
14365312Smsmith#define    I2O_UTIL_PARAMS_GET                         0x06
14465312Smsmith#define    I2O_UTIL_PARAMS_SET                         0x05
14565312Smsmith#define    I2O_UTIL_REPLY_FAULT_NOTIFY                 0x15
14665312Smsmith
14765312Smsmith/****************************************************************************/
14865312Smsmith
14965312Smsmith/* ABORT Abort type defines. */
15065312Smsmith
15165312Smsmith#define    I2O_ABORT_TYPE_EXACT_ABORT                  0x00
15265312Smsmith#define    I2O_ABORT_TYPE_FUNCTION_ABORT               0x01
15365312Smsmith#define    I2O_ABORT_TYPE_TRANSACTION_ABORT            0x02
15465312Smsmith#define    I2O_ABORT_TYPE_WILD_ABORT                   0x03
15565312Smsmith#define    I2O_ABORT_TYPE_CLEAN_EXACT_ABORT            0x04
15665312Smsmith#define    I2O_ABORT_TYPE_CLEAN_FUNCTION_ABORT         0x05
15765312Smsmith#define    I2O_ABORT_TYPE_CLEAN_TRANSACTION_ABORT      0x06
15865312Smsmith#define    I2O_ABORT_TYPE_CLEAN_WILD_ABORT             0x07
15965312Smsmith
16065312Smsmith/* UtilAbort Function Message Frame structure. */
16165312Smsmith
16265312Smsmithtypedef struct _I2O_UTIL_ABORT_MESSAGE {
16365312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
16465312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
16565312Smsmith#   if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
16665312Smsmith        U32                    reserved;
16765312Smsmith#   else
16865312Smsmith        U16                    reserved;
16965312Smsmith        U8                     AbortType;
17065312Smsmith        U8                     FunctionToAbort;
17165312Smsmith#   endif
17265312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContextToAbort;
17365312Smsmith} I2O_UTIL_ABORT_MESSAGE, *PI2O_UTIL_ABORT_MESSAGE;
17465312Smsmith
17565312Smsmith
17665312Smsmithtypedef struct _I2O_UTIL_ABORT_REPLY {
17765312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
17865312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
17965312Smsmith    U32                        CountOfAbortedMessages;
18065312Smsmith} I2O_UTIL_ABORT_REPLY, *PI2O_UTIL_ABORT_REPLY;
18165312Smsmith
18265312Smsmith
18365312Smsmith/****************************************************************************/
18465312Smsmith
18565312Smsmith/* Claim Flag defines */
18665312Smsmith
18765312Smsmith#define    I2O_CLAIM_FLAGS_EXCLUSIVE                   0x0001 /* Reserved */
18865312Smsmith#define    I2O_CLAIM_FLAGS_RESET_SENSITIVE             0x0002
18965312Smsmith#define    I2O_CLAIM_FLAGS_STATE_SENSITIVE             0x0004
19065312Smsmith#define    I2O_CLAIM_FLAGS_CAPACITY_SENSITIVE          0x0008
19165312Smsmith#define    I2O_CLAIM_FLAGS_PEER_SERVICE_DISABLED       0x0010
19265312Smsmith#define    I2O_CLAIM_FLAGS_MGMT_SERVICE_DISABLED       0x0020
19365312Smsmith
19465312Smsmith/* Claim Type defines */
19565312Smsmith
19665312Smsmith#define    I2O_CLAIM_TYPE_PRIMARY_USER                 0x01
19765312Smsmith#define    I2O_CLAIM_TYPE_AUTHORIZED_USER              0x02
19865312Smsmith#define    I2O_CLAIM_TYPE_SECONDARY_USER               0x03
19965312Smsmith#define    I2O_CLAIM_TYPE_MANAGEMENT_USER              0x04
20065312Smsmith
20165312Smsmith/* UtilClaim Function Message Frame structure. */
20265312Smsmith
20365312Smsmithtypedef struct _I2O_UTIL_CLAIM_MESSAGE {
20465312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
20565312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
20665312Smsmith    U16                        ClaimFlags;
20765312Smsmith    U8                         reserved;
20865312Smsmith    U8                         ClaimType;
20965312Smsmith} I2O_UTIL_CLAIM_MESSAGE, *PI2O_UTIL_CLAIM_MESSAGE;
21065312Smsmith
21165312Smsmith
21265312Smsmith/****************************************************************************/
21365312Smsmith
21465312Smsmith/* Claim Release Flag defines */
21565312Smsmith
21665312Smsmith#define    I2O_RELEASE_FLAGS_CONDITIONAL               0x0001
21765312Smsmith
21865312Smsmith/* UtilClaimRelease Function Message Frame structure. */
21965312Smsmith
22065312Smsmithtypedef struct _I2O_UTIL_CLAIM_RELEASE_MESSAGE {
22165312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
22265312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
22365312Smsmith    U16                        ReleaseFlags;
22465312Smsmith    U8                         reserved;
22565312Smsmith    U8                         ClaimType;
22665312Smsmith} I2O_UTIL_CLAIM_RELEASE_MESSAGE, *PI2O_UTIL_CLAIM_RELEASE_MESSAGE;
22765312Smsmith
22865312Smsmith
22965312Smsmith/****************************************************************************/
23065312Smsmith
23165312Smsmith/*  UtilConfigDialog Function Message Frame structure */
23265312Smsmith
23365312Smsmithtypedef struct _I2O_UTIL_CONFIG_DIALOG_MESSAGE {
23465312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
23565312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
23665312Smsmith    U32                        PageNumber;
23765312Smsmith    I2O_SG_ELEMENT             SGL;
23865312Smsmith} I2O_UTIL_CONFIG_DIALOG_MESSAGE, *PI2O_UTIL_CONFIG_DIALOG_MESSAGE;
23965312Smsmith
24065312Smsmith
24165312Smsmith/****************************************************************************/
24265312Smsmith
24365312Smsmith/*  Event Acknowledge Function Message Frame structure */
24465312Smsmith
24565312Smsmithtypedef struct _I2O_UTIL_EVENT_ACK_MESSAGE {
24665312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
24765312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
24865312Smsmith    U32                        EventIndicator;
24965312Smsmith    U32                        EventData[1];
25065312Smsmith} I2O_UTIL_EVENT_ACK_MESSAGE, *PI2O_UTIL_EVENT_ACK_MESSAGE;
25165312Smsmith
25265312Smsmith/* Event Ack Reply structure */
25365312Smsmith
25465312Smsmithtypedef struct _I2O_UTIL_EVENT_ACK_REPLY {
25565312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
25665312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
25765312Smsmith    U32                        EventIndicator;
25865312Smsmith    U32                        EventData[1];
25965312Smsmith} I2O_UTIL_EVENT_ACK_REPLY, *PI2O_UTIL_EVENT_ACK_REPLY;
26065312Smsmith
26165312Smsmith
26265312Smsmith/****************************************************************************/
26365312Smsmith
26465312Smsmith/* Event Indicator Mask Flags */
26565312Smsmith
26665312Smsmith#define    I2O_EVENT_IND_STATE_CHANGE                  0x80000000
26765312Smsmith#define    I2O_EVENT_IND_GENERAL_WARNING               0x40000000
26865312Smsmith#define    I2O_EVENT_IND_CONFIGURATION_FLAG            0x20000000
26965312Smsmith/* #define    I2O_EVENT_IND_RESERVE_RELEASE               0x10000000 */
27065312Smsmith#define    I2O_EVENT_IND_LOCK_RELEASE                  0x10000000
27165312Smsmith#define    I2O_EVENT_IND_CAPABILITY_CHANGE             0x08000000
27265312Smsmith#define    I2O_EVENT_IND_DEVICE_RESET                  0x04000000
27365312Smsmith#define    I2O_EVENT_IND_EVENT_MASK_MODIFIED           0x02000000
27465312Smsmith#define    I2O_EVENT_IND_FIELD_MODIFIED                0x01000000
27565312Smsmith#define    I2O_EVENT_IND_VENDOR_EVENT                  0x00800000
27665312Smsmith#define    I2O_EVENT_IND_DEVICE_STATE                  0x00400000
27765312Smsmith
27865312Smsmith/* Event Data for generic Events */
27965312Smsmith
28065312Smsmith#define    I2O_EVENT_STATE_CHANGE_NORMAL               0x00
28165312Smsmith#define    I2O_EVENT_STATE_CHANGE_SUSPENDED            0x01
28265312Smsmith#define    I2O_EVENT_STATE_CHANGE_RESTART              0x02
28365312Smsmith#define    I2O_EVENT_STATE_CHANGE_NA_RECOVER           0x03
28465312Smsmith#define    I2O_EVENT_STATE_CHANGE_NA_NO_RECOVER        0x04
28565312Smsmith#define    I2O_EVENT_STATE_CHANGE_QUIESCE_REQUEST      0x05
28665312Smsmith#define    I2O_EVENT_STATE_CHANGE_FAILED               0x10
28765312Smsmith#define    I2O_EVENT_STATE_CHANGE_FAULTED              0x11
28865312Smsmith
28965312Smsmith#define    I2O_EVENT_GEN_WARNING_NORMAL                0x00
29065312Smsmith#define    I2O_EVENT_GEN_WARNING_ERROR_THRESHOLD       0x01
29165312Smsmith#define    I2O_EVENT_GEN_WARNING_MEDIA_FAULT           0x02
29265312Smsmith
29365312Smsmith#define    I2O_EVENT_CAPABILITY_OTHER                  0x01
29465312Smsmith#define    I2O_EVENT_CAPABILITY_CHANGED                0x02
29565312Smsmith
29665312Smsmith#define    I2O_EVENT_SENSOR_STATE_CHANGED              0x01
29765312Smsmith
29865312Smsmith
29965312Smsmith/*  UtilEventRegister Function Message Frame structure */
30065312Smsmith
30165312Smsmithtypedef struct _I2O_UTIL_EVENT_REGISTER_MESSAGE {
30265312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
30365312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
30465312Smsmith    U32                        EventMask;
30565312Smsmith} I2O_UTIL_EVENT_REGISTER_MESSAGE, *PI2O_UTIL_EVENT_REGISTER_MESSAGE;
30665312Smsmith
30765312Smsmith/* UtilEventRegister Reply structure */
30865312Smsmith
30965312Smsmithtypedef struct _I2O_UTIL_EVENT_REGISTER_REPLY {
31065312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
31165312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
31265312Smsmith    U32                        EventIndicator;
31365312Smsmith    U32                        EventData[1];
31465312Smsmith} I2O_UTIL_EVENT_REGISTER_REPLY, *PI2O_UTIL_EVENT_REGISTER_REPLY;
31565312Smsmith
31665312Smsmith
31765312Smsmith/****************************************************************************/
31865312Smsmith
31965312Smsmith/* UtilLock Function Message Frame structure. */
32065312Smsmith
32165312Smsmithtypedef struct _I2O_UTIL_LOCK_MESSAGE {
32265312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
32365312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
32465312Smsmith} I2O_UTIL_LOCK_MESSAGE, *PI2O_UTIL_LOCK_MESSAGE;
32565312Smsmith
32665312Smsmith/****************************************************************************/
32765312Smsmith
32865312Smsmith/* UtilLockRelease Function Message Frame structure. */
32965312Smsmith
33065312Smsmithtypedef struct _I2O_UTIL_LOCK_RELEASE_MESSAGE {
33165312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
33265312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
33365312Smsmith} I2O_UTIL_LOCK_RELEASE_MESSAGE, *PI2O_UTIL_LOCK_RELEASE_MESSAGE;
33465312Smsmith
33565312Smsmith
33665312Smsmith/****************************************************************************/
33765312Smsmith
33865312Smsmith/* UtilNOP Function Message Frame structure. */
33965312Smsmith
34065312Smsmithtypedef struct _I2O_UTIL_NOP_MESSAGE {
34165312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
34265312Smsmith} I2O_UTIL_NOP_MESSAGE, *PI2O_UTIL_NOP_MESSAGE;
34365312Smsmith
34465312Smsmith
34565312Smsmith/****************************************************************************/
34665312Smsmith
34765312Smsmith/* UtilParamsGet Message Frame structure. */
34865312Smsmith
34965312Smsmithtypedef struct _I2O_UTIL_PARAMS_GET_MESSAGE {
35065312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
35165312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
35265312Smsmith    U32                        OperationFlags;
35365312Smsmith    I2O_SG_ELEMENT             SGL;
35465312Smsmith} I2O_UTIL_PARAMS_GET_MESSAGE, *PI2O_UTIL_PARAMS_GET_MESSAGE;
35565312Smsmith
35665312Smsmith
35765312Smsmith/****************************************************************************/
35865312Smsmith
35965312Smsmith/* UtilParamsSet Message Frame structure. */
36065312Smsmith
36165312Smsmithtypedef struct _I2O_UTIL_PARAMS_SET_MESSAGE {
36265312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
36365312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
36465312Smsmith    U32                        OperationFlags;
36565312Smsmith    I2O_SG_ELEMENT             SGL;
36665312Smsmith} I2O_UTIL_PARAMS_SET_MESSAGE, *PI2O_UTIL_PARAMS_SET_MESSAGE;
36765312Smsmith
36865312Smsmith
36965312Smsmith/****************************************************************************/
37065312Smsmith
37165312Smsmith/* UtilReplyFaultNotify Message for Message Failure. */
37265312Smsmith
37365312Smsmithtypedef struct _I2O_UTIL_REPLY_FAULT_NOTIFY_MESSAGE {
37465312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
37565312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
37665312Smsmith    U8                         LowestVersion;
37765312Smsmith    U8                         HighestVersion;
37865312Smsmith    BF                         Severity:I2O_FAILCODE_SEVERITY_SZ;
37965312Smsmith    BF                         FailureCode:I2O_FAILCODE_CODE_SZ;
38065312Smsmith    BF                         FailingIOP_ID:I2O_IOP_ID_SZ;
38165312Smsmith    BF                         reserved:I2O_RESERVED_4BITS;
38265312Smsmith    BF                         FailingHostUnitID:I2O_UNIT_ID_SZ;
38365312Smsmith    U32                        AgeLimit;
38465312Smsmith#if I2O_64BIT_CONTEXT
38565312Smsmith    PI2O_MESSAGE_FRAME         OriginalMFA;
38665312Smsmith#else
38765312Smsmith    PI2O_MESSAGE_FRAME         OriginalMFALowPart;
38865312Smsmith    U32                        OriginalMFAHighPart;  /* Always 0000 */
38965312Smsmith#endif
39065312Smsmith} I2O_UTIL_REPLY_FAULT_NOTIFY_MESSAGE, *PI2O_UTIL_REPLY_FAULT_NOTIFY_MESSAGE;
39165312Smsmith
39265312Smsmith
39365312Smsmith/****************************************************************************/
39465312Smsmith
39565312Smsmith/* Device Reserve Function Message Frame structure. */
39665312Smsmith/* NOTE:  This was previously called the Reserve Message */
39765312Smsmith
39865312Smsmithtypedef struct _I2O_UTIL_DEVICE_RESERVE_MESSAGE {
39965312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
40065312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
40165312Smsmith} I2O_UTIL_DEVICE_RESERVE_MESSAGE, *PI2O_UTIL_DEVICE_RESERVE_MESSAGE;
40265312Smsmith
40365312Smsmith
40465312Smsmith/****************************************************************************/
40565312Smsmith
40665312Smsmith/* Device Release Function Message Frame structure. */
40765312Smsmith/* NOTE:  This was previously called the ReserveRelease Message */
40865312Smsmith
40965312Smsmithtypedef struct _I2O_UTIL_DEVICE_RELEASE_MESSAGE {
41065312Smsmith    I2O_MESSAGE_FRAME          StdMessageFrame;
41165312Smsmith    I2O_TRANSACTION_CONTEXT    TransactionContext;
41265312Smsmith} I2O_UTIL_DEVICE_RELEASE_MESSAGE, *PI2O_UTIL_DEVICE_RELEASE_MESSAGE;
41365312Smsmith
41465312Smsmith
41565312Smsmith/****************************************************************************/
41665312Smsmith
41765312SmsmithPRAGMA_PACK_POP
41865312SmsmithPRAGMA_ALIGN_POP
41965312Smsmith
42065312Smsmith#endif    /* I2O_UTILITY_HDR  */
421