File:  [DragonFly] / src / sys / dev / raid / asr / i2oexec.h
Revision 1.4: download - view: text, annotated - select for diffs
Thu Feb 12 00:00:19 2004 UTC (10 years, 8 months ago) by dillon
Branches: MAIN
CVS tags: HEAD, DragonFly_Stable, DragonFly_Snap29Sep2004, DragonFly_Snap13Sep2004, DragonFly_RELEASE_2_0_Slip, DragonFly_RELEASE_2_0, DragonFly_RELEASE_1_8_Slip, DragonFly_RELEASE_1_8, DragonFly_RELEASE_1_6_Slip, DragonFly_RELEASE_1_6, DragonFly_RELEASE_1_4_Slip, DragonFly_RELEASE_1_4, DragonFly_RELEASE_1_2_Slip, DragonFly_RELEASE_1_2, DragonFly_RELEASE_1_12_Slip, DragonFly_RELEASE_1_12, DragonFly_RELEASE_1_10_Slip, DragonFly_RELEASE_1_10, DragonFly_Preview, DragonFly_1_0_REL, DragonFly_1_0_RC1, DragonFly_1_0A_REL
sys/dev __FreeBSD__ -> __DragonFly__ cleanups.

Submitted-by: Aaron Malone <aaron@munge.net>

    1: /* $FreeBSD: src/sys/dev/asr/i2oexec.h,v 1.1.2.1 2000/09/21 20:33:50 msmith Exp $ */
    2: /* $DragonFly: src/sys/dev/raid/asr/i2oexec.h,v 1.4 2004/02/12 00:00:19 dillon Exp $ */
    3: /****************************************************************
    4:  * Copyright (c) 1996-2000 Distributed Processing Technology Corporation
    5:  * Copyright (c) 2000 Adaptec Corporation.
    6:  * All rights reserved.
    7:  * 
    8:  * Copyright 1999 I2O Special Interest Group (I2O SIG).  All rights reserved.
    9:  * All rights reserved
   10:  * 
   11:  * TERMS AND CONDITIONS OF USE
   12:  * 
   13:  * Redistribution and use in source form, with or without modification, are
   14:  * permitted provided that redistributions of source code must retain the
   15:  * above copyright notice, this list of conditions and the following disclaimer.
   16:  * 
   17:  * This software is provided `as is' by Distributed Processing Technology and
   18:  * any express or implied warranties, including, but not limited to, the
   19:  * implied warranties of merchantability and fitness for a particular purpose,
   20:  * are disclaimed. In no event shall Distributed Processing Technology be
   21:  * liable for any direct, indirect, incidental, special, exemplary or
   22:  * consequential damages (including, but not limited to, procurement of
   23:  * substitute goods or services; loss of use, data, or profits; or business
   24:  * interruptions) however caused and on any theory of liability, whether in
   25:  * contract, strict liability, or tort (including negligence or otherwise)
   26:  * arising in any way out of the use of this driver software, even if advised
   27:  * of the possibility of such damage.
   28:  * 
   29:  * This header file, and any modifications of this header file, are provided
   30:  * contingent upon your agreement and adherence to the here-listed terms and
   31:  * conditions.  By accepting and/or using this header file, you agree to abide
   32:  * by these terms and conditions and that these terms and conditions will be
   33:  * construed and governed in accordance with the laws of the State of California,
   34:  * without reference to conflict-of-law provisions.  If you do not agree
   35:  * to these terms and conditions, please delete this file, and any copies,
   36:  * permanently, without making any use thereof.
   37:  * 
   38:  * THIS HEADER FILE IS PROVIDED FREE OF CHARGE ON AN AS-IS BASIS WITHOUT
   39:  * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
   40:  * TO IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   41:  * PURPOSE.  I2O SIG DOES NOT WARRANT THAT THIS HEADER FILE WILL MEET THE
   42:  * USER'S REQUIREMENTS OR THAT ITS OPERATION WILL BE UNINTERRUPTED OR
   43:  * ERROR-FREE.
   44:  * 
   45:  * I2O SIG DISCLAIMS ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF
   46:  * ANY PROPRIETARY RIGHTS, RELATING TO THE IMPLEMENTATION OF THE I2O
   47:  * SPECIFICATIONS.  I2O SIG DOES NOT WARRANT OR REPRESENT THAT SUCH
   48:  * IMPLEMENTATIONS WILL NOT INFRINGE SUCH RIGHTS.
   49:  * 
   50:  * THE USER OF THIS HEADER FILE SHALL HAVE NO RECOURSE TO I2O SIG FOR ANY
   51:  * ACTUAL OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, LOST DATA
   52:  * OR LOST PROFITS ARISING OUT OF THE USE OR INABILITY TO USE THIS PROGRAM.
   53:  * 
   54:  * I2O SIG grants the user of this header file a license to copy, distribute,
   55:  * and modify it, for any purpose, under the following terms.  Any copying,
   56:  * distribution, or modification of this header file must not delete or alter
   57:  * the copyright notice of I2O SIG or any of these Terms and Conditions.
   58:  * 
   59:  * Any distribution of this header file must not include a charge for the
   60:  * header file (unless such charges are strictly for the physical acts of
   61:  * copying or transferring copies).  However, distribution of a product in
   62:  * which this header file is embedded may include a charge so long as any
   63:  * such charge does not include any charge for the header file itself.
   64:  * 
   65:  * Any modification of this header file constitutes a derivative work based
   66:  * on this header file.  Any distribution of such derivative work: (1) must
   67:  * include prominent notices that the header file has been changed from the
   68:  * original, together with the dates of any changes; (2) automatically includes 
   69:  * this same license to the original header file from I2O SIG, without any
   70:  * restriction thereon from the distributing user; and (3) must include a
   71:  * grant of license of the modified file under the same terms and conditions
   72:  * as these Terms and Conditions.
   73:  * 
   74:  * The I2O SIG Web site can be found at: http://www.i2osig.org
   75:  * 
   76:  * The I2O SIG encourages you to deposit derivative works based on this
   77:  * header file at the I2O SIG Web site.  Furthermore, to become a Registered
   78:  * Developer of the I2O SIG, sign up at the Web site or call 415.750.8352
   79:  * (United States).
   80:  ****************************************************************/
   81: 
   82: /*********************************************************************
   83:  * I2OExec.h -- I2O Executive Class Message definition file
   84:  *
   85:  * This file contains information presented in Chapter 4 of the I2O(tm)
   86:  * Specification.
   87:  **********************************************************************/
   88: 
   89: #if !defined(I2O_EXECUTIVE_HDR)
   90: #define I2O_EXECUTIVE_HDR
   91: 
   92: #define I2OEXEC_REV 1_5_4  /* I2OExec header file revision string */
   93: 
   94: #if ((defined(KERNEL) || defined(_KERNEL)) && defined(__DragonFly__))
   95: # if (!defined(KERN_VERSION))
   96: #  include <sys/sysctl.h>
   97: # endif
   98: # if (KERN_VERSION < 3)
   99: #  include "i2omsg.h"      /* Include the Base Message file */
  100: #  include "i2outil.h"
  101: # else
  102: #  include "i2omsg.h"      /* Include the Base Message file */
  103: #  include "i2outil.h"
  104: # endif
  105: #else
  106: # include   "i2omsg.h"      /* Include the Base Message file */
  107: # include   "i2outil.h"
  108: #endif
  109: 
  110: 
  111: /*
  112:     NOTES:
  113: 
  114:     Gets, reads, receives, etc. are all even numbered functions.
  115:     Sets, writes, sends, etc. are all odd numbered functions.
  116:     Functions that both send and receive data can be either but an attempt is made
  117:         to use the function number that indicates the greater transfer amount.
  118:     Functions that do not send or receive data use odd function numbers.
  119: 
  120:     Some functions are synonyms like read, receive and send, write.
  121: 
  122:     All common functions will have a code of less than 0x80.
  123:     Unique functions to a class will start at 0x80.
  124:     Executive Functions start at 0xA0.
  125: 
  126:     Utility Message function codes range from 0 - 0x1f
  127:     Base Message function codes range from 0x20 - 0xfe
  128:     Private Message function code is 0xff.
  129: */
  130: 
  131: PRAGMA_ALIGN_PUSH
  132: PRAGMA_PACK_PUSH
  133: 
  134: /*  I2O Executive Function Codes.  */
  135: 
  136: #define    I2O_EXEC_ADAPTER_ASSIGN                     0xB3
  137: #define    I2O_EXEC_ADAPTER_READ                       0xB2
  138: #define    I2O_EXEC_ADAPTER_RELEASE                    0xB5
  139: #define    I2O_EXEC_BIOS_INFO_SET                      0xA5
  140: #define    I2O_EXEC_BOOT_DEVICE_SET                    0xA7
  141: #define    I2O_EXEC_CONFIG_VALIDATE                    0xBB
  142: #define    I2O_EXEC_CONN_SETUP                         0xCA
  143: #define    I2O_EXEC_DDM_DESTROY                        0xB1
  144: #define    I2O_EXEC_DDM_ENABLE                         0xD5
  145: #define    I2O_EXEC_DDM_QUIESCE                        0xC7
  146: #define    I2O_EXEC_DDM_RESET                          0xD9
  147: #define    I2O_EXEC_DDM_SUSPEND                        0xAF
  148: #define    I2O_EXEC_DEVICE_ASSIGN                      0xB7
  149: #define    I2O_EXEC_DEVICE_RELEASE                     0xB9
  150: #define    I2O_EXEC_HRT_GET                            0xA8
  151: #define    I2O_EXEC_IOP_CLEAR                          0xBE
  152: #define    I2O_EXEC_IOP_CONNECT                        0xC9
  153: #define    I2O_EXEC_IOP_RESET                          0xBD
  154: #define    I2O_EXEC_LCT_NOTIFY                         0xA2
  155: #define    I2O_EXEC_OUTBOUND_INIT                      0xA1
  156: #define    I2O_EXEC_PATH_ENABLE                        0xD3
  157: #define    I2O_EXEC_PATH_QUIESCE                       0xC5
  158: #define    I2O_EXEC_PATH_RESET                         0xD7
  159: #define    I2O_EXEC_STATIC_MF_CREATE                   0xDD
  160: #define    I2O_EXEC_STATIC_MF_RELEASE                  0xDF
  161: #define    I2O_EXEC_STATUS_GET                         0xA0
  162: #define    I2O_EXEC_SW_DOWNLOAD                        0xA9
  163: #define    I2O_EXEC_SW_UPLOAD                          0xAB
  164: #define    I2O_EXEC_SW_REMOVE                          0xAD
  165: #define    I2O_EXEC_SYS_ENABLE                         0xD1
  166: #define    I2O_EXEC_SYS_MODIFY                         0xC1
  167: #define    I2O_EXEC_SYS_QUIESCE                        0xC3
  168: #define    I2O_EXEC_SYS_TAB_SET                        0xA3
  169: 
  170: 
  171: /* I2O Get Status State values */
  172: 
  173: #define    I2O_IOP_STATE_INITIALIZING                  0x01
  174: #define    I2O_IOP_STATE_RESET                         0x02
  175: #define    I2O_IOP_STATE_HOLD                          0x04
  176: #define    I2O_IOP_STATE_READY                         0x05
  177: #define    I2O_IOP_STATE_OPERATIONAL                   0x08
  178: #define    I2O_IOP_STATE_FAILED                        0x10
  179: #define    I2O_IOP_STATE_FAULTED                       0x11
  180: 
  181: 
  182: /* Event Indicator Assignments for the Executive Class. */
  183: 
  184: #define    I2O_EVENT_IND_RESOURCE_LIMIT                0x00000001
  185: #define    I2O_EVENT_IND_CONNECTION_FAIL               0x00000002
  186: #define    I2O_EVENT_IND_ADAPTER_FAULT                 0x00000004
  187: #define    I2O_EVENT_IND_POWER_FAIL                    0x00000008
  188: #define    I2O_EVENT_IND_RESET_PENDING                 0x00000010
  189: #define    I2O_EVENT_IND_RESET_IMMINENT                0x00000020
  190: #define    I2O_EVENT_IND_HARDWARE_FAIL                 0x00000040
  191: #define    I2O_EVENT_IND_XCT_CHANGE                    0x00000080
  192: #define    I2O_EVENT_IND_NEW_LCT_ENTRY                 0x00000100
  193: #define    I2O_EVENT_IND_MODIFIED_LCT                  0x00000200
  194: #define    I2O_EVENT_IND_DDM_AVAILABILITY              0x00000400
  195: 
  196: /* Resource Limit Event Data */
  197: 
  198: #define    I2O_EVENT_RESOURCE_LIMIT_LOW_MEMORY         0x00000001
  199: #define    I2O_EVENT_RESOURCE_LIMIT_INBOUND_POOL_LOW   0x00000002
  200: #define    I2O_EVENT_RESOURCE_LIMIT_OUTBOUND_POOL_LOW  0x00000004
  201: 
  202: /* Connection Fail Event Data */
  203: 
  204: #define    I2O_EVENT_CONNECTION_FAIL_REPOND_NORMAL     0x00000000
  205: #define    I2O_EVENT_CONNECTION_FAIL_NOT_REPONDING     0x00000001
  206: #define    I2O_EVENT_CONNECTION_FAIL_NO_AVAILABLE_FRAMES 0x00000002
  207: 
  208: /* Reset Pending Event Data */
  209: 
  210: #define    I2O_EVENT_RESET_PENDING_POWER_LOSS          0x00000001
  211: #define    I2O_EVENT_RESET_PENDING_CODE_VIOLATION      0x00000002
  212: 
  213: /* Reset Imminent Event Data */
  214: 
  215: #define    I2O_EVENT_RESET_IMMINENT_UNKNOWN_CAUSE      0x00000000
  216: #define    I2O_EVENT_RESET_IMMINENT_POWER_LOSS         0x00000001
  217: #define    I2O_EVENT_RESET_IMMINENT_CODE_VIOLATION     0x00000002
  218: #define    I2O_EVENT_RESET_IMMINENT_PARITY_ERROR       0x00000003
  219: #define    I2O_EVENT_RESET_IMMINENT_CODE_EXCEPTION     0x00000004
  220: #define    I2O_EVENT_RESET_IMMINENT_WATCHDOG_TIMEOUT   0x00000005
  221: 
  222: /* Hardware Fail Event Data */
  223: 
  224: #define    I2O_EVENT_HARDWARE_FAIL_UNKNOWN_CAUSE       0x00000000
  225: #define    I2O_EVENT_HARDWARE_FAIL_CPU_FAILURE         0x00000001
  226: #define    I2O_EVENT_HARDWARE_FAIL_MEMORY_FAULT        0x00000002
  227: #define    I2O_EVENT_HARDWARE_FAIL_DMA_FAILURE         0x00000003
  228: #define    I2O_EVENT_HARDWARE_FAIL_IO_BUS_FAILURE      0x00000004
  229: 
  230: /* DDM Availability Event Data */
  231: 
  232: #define    I2O_EVENT_DDM_AVAILIBILITY_RESPOND_NORMAL   0x00000000
  233: #define    I2O_EVENT_DDM_AVAILIBILITY_CONGESTED        0x00000001
  234: #define    I2O_EVENT_DDM_AVAILIBILITY_NOT_RESPONDING   0x00000002
  235: #define    I2O_EVENT_DDM_AVAILIBILITY_PROTECTION_VIOLATION 0x00000003
  236: #define    I2O_EVENT_DDM_AVAILIBILITY_CODE_VIOLATION   0x00000004
  237: 
  238: /****************************************************************************/
  239: 
  240: #define    I2O_OPERATION_FLAG_ASSIGN_PERMANENT         0x01
  241: 
  242: /* ExecAdapterAssign Function Message Frame structure. */
  243: 
  244: typedef struct _I2O_EXEC_ADAPTER_ASSIGN_MESSAGE {
  245:    I2O_MESSAGE_FRAME           StdMessageFrame;
  246:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  247: #if (defined(__BORLANDC__))
  248:    U32                         DdmTID;
  249: #else
  250:    BF                          DdmTID:I2O_TID_SZ;
  251:    BF                          reserved:I2O_RESERVED_12BITS;
  252:    BF                          OperationFlags:I2O_8BIT_FLAGS_SZ;
  253: #endif
  254:    I2O_HRT_ENTRY               HRTEntry;
  255: } I2O_EXEC_ADAPTER_ASSIGN_MESSAGE, *PI2O_EXEC_ADAPTER_ASSIGN_MESSAGE;
  256: 
  257: 
  258: /****************************************************************************/
  259: 
  260: #define    I2O_REQUEST_FLAG_CONFIG_REGISTER            0x00000000
  261: #define    I2O_REQUEST_FLAG_IO_REGISTER                0x00000001
  262: #define    I2O_REQUEST_FLAG_ADAPTER_MEMORY             0x00000002
  263: 
  264: /* ExecAdapterRead Function Message Frame structure. */
  265: 
  266: typedef struct _I2O_EXEC_ADAPTER_READ_MESSAGE {
  267:    I2O_MESSAGE_FRAME           StdMessageFrame;
  268:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  269:    U32                         AdapterID;
  270:    U32                         RequestFlags;
  271:    U32                         Offset;
  272:    U32                         Length;
  273:    I2O_SG_ELEMENT              SGL;
  274: } I2O_EXEC_ADAPTER_READ_MESSAGE, *PI2O_EXEC_ADAPTER_READ_MESSAGE;
  275: 
  276: 
  277: /****************************************************************************/
  278: 
  279: #define    I2O_OPERATION_FLAG_RELEASE_PERMANENT        0x01
  280: 
  281: /* ExecAdapterRelease Function Message Frame structure. */
  282: 
  283: typedef struct _I2O_EXEC_ADAPTER_RELEASE_MESSAGE {
  284:    I2O_MESSAGE_FRAME           StdMessageFrame;
  285:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  286:    U8                          reserved[3];
  287:    U8                          OperationFlags;
  288:    I2O_HRT_ENTRY               HRTEntry;
  289: } I2O_EXEC_ADAPTER_RELEASE_MESSAGE, *PI2O_EXEC_ADAPTER_RELEASE_MESSAGE;
  290: 
  291: 
  292: /****************************************************************************/
  293: 
  294: /* ExecBiosInfoSet Function Message Frame structure. */
  295: 
  296: typedef struct _I2O_EXEC_BIOS_INFO_SET_MESSAGE {
  297:    I2O_MESSAGE_FRAME           StdMessageFrame;
  298:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  299: #if (defined(__BORLANDC__))
  300:    U32                         DeviceTID;
  301: #else
  302:    BF                          DeviceTID:I2O_TID_SZ;
  303:    BF                          reserved:I2O_RESERVED_12BITS;
  304:    BF                          BiosInfo:I2O_BIOS_INFO_SZ;
  305: #endif
  306: } I2O_EXEC_BIOS_INFO_SET_MESSAGE, *PI2O_EXEC_BIOS_INFO_SET_MESSAGE;
  307: 
  308: 
  309: /****************************************************************************/
  310: 
  311: /* ExecBootDeviceSet Function Message Frame structure. */
  312: 
  313: typedef struct _I2O_EXEC_BOOT_DEVICE_SET_MESSAGE {
  314:    I2O_MESSAGE_FRAME           StdMessageFrame;
  315:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  316:    BF                          BootDevice:I2O_TID_SZ;
  317:    BF                          reserved:I2O_RESERVED_4BITS;
  318:    BF                          reserved1:I2O_RESERVED_16BITS;
  319: } I2O_EXEC_BOOT_DEVICE_SET_MESSAGE, *PI2O_EXEC_BOOT_DEVICE_SET_MESSAGE;
  320: 
  321: 
  322: /****************************************************************************/
  323: 
  324: /* ExecConfigValidate Function Message Frame structure. */
  325: 
  326: typedef struct _I2O_EXEC_CONFIG_VALIDATE_MESSAGE {
  327:    I2O_MESSAGE_FRAME           StdMessageFrame;
  328:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  329: } I2O_EXEC_CONFIG_VALIDATE_MESSAGE, *PI2O_EXEC_CONFIG_VALIDATE_MESSAGE;
  330: 
  331: 
  332: /****************************************************************************/
  333: 
  334: /* ExecConnSetup Requestor  */
  335: 
  336: typedef struct _I2O_ALIAS_CONNECT_SETUP {
  337: #if (defined(__BORLANDC__))
  338:    U32                         IOP1AliasForTargetDevice;
  339: #else
  340:    BF                          IOP1AliasForTargetDevice:I2O_TID_SZ;
  341:    BF                          IOP2AliasForInitiatorDevice:I2O_TID_SZ;
  342:    BF                          reserved:I2O_RESERVED_8BITS;
  343: #endif
  344: } I2O_ALIAS_CONNECT_SETUP, *PI2O_ALIAS_CONNECT_SETUP;
  345: 
  346: #define    I2O_OPERATION_FLAG_PEER_TO_PEER_BIDIRECTIONAL   0x01
  347: 
  348: /* ExecConnSetup Object  */
  349: 
  350: typedef struct _I2O_OBJECT_CONNECT_SETUP {
  351: #if (defined(__BORLANDC__))
  352:    U32                         TargetDevice;
  353: #else
  354:    BF                          TargetDevice:I2O_TID_SZ;
  355:    BF                          InitiatorDevice:I2O_TID_SZ;
  356:    BF                          OperationFlags:I2O_8BIT_FLAGS_SZ;
  357: #endif
  358: } I2O_OBJECT_CONNECT_SETUP, *PI2O_OBJECT_CONNECT_SETUP;
  359: 
  360: 
  361: /* ExecConnSetup Function Message Frame structure. */
  362: 
  363: typedef struct _I2O_EXEC_CONN_SETUP_MESSAGE {
  364:    I2O_MESSAGE_FRAME           StdMessageFrame;
  365:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  366:    I2O_OBJECT_CONNECT_SETUP    ObjectInfo;
  367:    I2O_ALIAS_CONNECT_SETUP     AliasInfo;
  368:    U16                         IOP2InboundMFrameSize;
  369:    U16                         reserved;
  370:    U32                         MessageClass;
  371: } I2O_EXEC_CONN_SETUP_MESSAGE, *PI2O_EXEC_CONN_SETUP_MESSAGE;
  372: 
  373: 
  374: /* ExecConnSetup Object Reply */
  375: 
  376: typedef struct _I2O_OBJECT_CONNECT_REPLY {
  377: #if (defined(__BORLANDC__))
  378:    U32                         TargetDevice;
  379: #else
  380:    BF                          TargetDevice:I2O_TID_SZ;
  381:    BF                          InitiatorDevice:I2O_TID_SZ;
  382:    BF                          ReplyStatusCode:I2O_8BIT_FLAGS_SZ;
  383: #endif
  384: } I2O_OBJECT_CONNECT_REPLY, *PI2O_OBJECT_CONNECT_REPLY;
  385: 
  386: 
  387: /* ExecConnSetup reply structure. */
  388: 
  389: typedef struct _I2O_EXEC_CONN_SETUP_REPLY {
  390:    I2O_MESSAGE_FRAME           StdMessageFrame;
  391:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  392:    I2O_OBJECT_CONNECT_REPLY    ObjectInfo;
  393:    I2O_ALIAS_CONNECT_SETUP     AliasInfo;
  394:    U16                         IOP2InboundMFrameSize;
  395:    U16                         reserved;
  396: } I2O_EXEC_CONN_SETUP_REPLY, *PI2O_EXEC_CONN_SETUP_REPLY;
  397: 
  398: 
  399: /****************************************************************************/
  400: 
  401: /* ExecDdmDestroy Function Message Frame structure. */
  402: 
  403: typedef struct _I2O_EXEC_DDM_DESTROY_MESSAGE {
  404:    I2O_MESSAGE_FRAME           StdMessageFrame;
  405:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  406:    BF                          DdmTID:I2O_TID_SZ;
  407:    BF                          reserved:I2O_RESERVED_4BITS;
  408:    BF                          reserved1:I2O_RESERVED_16BITS;
  409: } I2O_EXEC_DDM_DESTROY_MESSAGE, *PI2O_EXEC_DDM_DESTROY_MESSAGE;
  410: 
  411: 
  412: /****************************************************************************/
  413: 
  414: /* ExecDdmEnable Function Message Frame structure. */
  415: 
  416: typedef struct _I2O_EXEC_DDM_ENABLE_MESSAGE {
  417:    I2O_MESSAGE_FRAME           StdMessageFrame;
  418:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  419:    BF                          DeviceTID:I2O_TID_SZ;
  420:    BF                          reserved2:I2O_RESERVED_4BITS;
  421:    BF                          reserved1:I2O_RESERVED_16BITS;
  422:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  423:    BF                          reserved:I2O_RESERVED_4BITS;
  424:    BF                          HostUnitID:I2O_UNIT_ID_SZ;
  425: } I2O_EXEC_DDM_ENABLE_MESSAGE, *PI2O_EXEC_DDM_ENABLE_MESSAGE;
  426: 
  427: 
  428: /****************************************************************************/
  429: 
  430: /* ExecDdmQuiesce Function Message Frame structure. */
  431: 
  432: typedef struct _I2O_EXEC_DDM_QUIESCE_MESSAGE {
  433:    I2O_MESSAGE_FRAME           StdMessageFrame;
  434:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  435:    BF                          DeviceTID:I2O_TID_SZ;
  436:    BF                          reserved2:I2O_RESERVED_4BITS;
  437:    BF                          reserved1:I2O_RESERVED_16BITS;
  438:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  439:    BF                          reserved:I2O_RESERVED_4BITS;
  440:    BF                          HostUnitID:I2O_UNIT_ID_SZ;
  441: } I2O_EXEC_DDM_QUIESCE_MESSAGE, *PI2O_EXEC_DDM_QUIESCE_MESSAGE;
  442: 
  443: 
  444: /****************************************************************************/
  445: 
  446: /* ExecDdmReset Function Message Frame structure. */
  447: 
  448: typedef struct _I2O_EXEC_DDM_RESET_MESSAGE {
  449:    I2O_MESSAGE_FRAME           StdMessageFrame;
  450:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  451:    BF                          DeviceTID:I2O_TID_SZ;
  452:    BF                          reserved2:I2O_RESERVED_4BITS;
  453:    BF                          reserved1:I2O_RESERVED_16BITS;
  454:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  455:    BF                          reserved:I2O_RESERVED_4BITS;
  456:    BF                          HostUnitID:I2O_UNIT_ID_SZ;
  457: } I2O_EXEC_DDM_RESET_MESSAGE, *PI2O_EXEC_DDM_RESET_MESSAGE;
  458: 
  459: 
  460: /****************************************************************************/
  461: 
  462: /* ExecDdmSuspend Function Message Frame structure. */
  463: 
  464: typedef struct _I2O_EXEC_DDM_SUSPEND_MESSAGE {
  465:    I2O_MESSAGE_FRAME           StdMessageFrame;
  466:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  467:    BF                          DdmTID:I2O_TID_SZ;
  468:    BF                          reserved:I2O_RESERVED_4BITS;
  469:    BF                          reserved1:I2O_RESERVED_16BITS;
  470: } I2O_EXEC_DDM_SUSPEND_MESSAGE, *PI2O_EXEC_DDM_SUSPEND_MESSAGE;
  471: 
  472: 
  473: /****************************************************************************/
  474: 
  475: #define    I2O_OPERATION_FLAG_ASSIGN_PERMANENT         0x01
  476: 
  477: /* ExecDeviceAssign Function Message Frame structure. */
  478: 
  479: typedef struct _I2O_EXEC_DEVICE_ASSIGN_MESSAGE {
  480:    I2O_MESSAGE_FRAME           StdMessageFrame;
  481:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  482: #if (defined(__BORLANDC__))
  483:    U32                         DeviceTID;
  484: #else
  485:    BF                          DeviceTID:I2O_TID_SZ;
  486:    BF                          DdmTID:I2O_TID_SZ;
  487:    BF                          OperationFlags:I2O_8BIT_FLAGS_SZ;
  488: #endif
  489:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  490:    BF                          reserved:I2O_RESERVED_4BITS;
  491:    BF                          HostUnitID:I2O_UNIT_ID_SZ;
  492: } I2O_EXEC_DEVICE_ASSIGN_MESSAGE, *PI2O_EXEC_DEVICE_ASSIGN_MESSAGE;
  493: 
  494: 
  495: /****************************************************************************/
  496: 
  497: #define    I2O_OPERATION_FLAG_RELEASE_PERMANENT        0x01
  498: 
  499: /* ExecDeviceRelease Function Message Frame structure. */
  500: 
  501: typedef struct _I2O_EXEC_DEVICE_RELEASE_MESSAGE {
  502:    I2O_MESSAGE_FRAME           StdMessageFrame;
  503:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  504: #if (defined(__BORLANDC__))
  505:    U32                         DeviceTID;
  506: #else
  507:    BF                          DeviceTID:I2O_TID_SZ;
  508:    BF                          DdmTID:I2O_TID_SZ;
  509:    BF                          OperationFlags:I2O_8BIT_FLAGS_SZ;
  510: #endif
  511:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  512:    BF                          reserved:I2O_RESERVED_4BITS;
  513:    BF                          HostUnitID:I2O_UNIT_ID_SZ;
  514: } I2O_EXEC_DEVICE_RELEASE_MESSAGE, *PI2O_EXEC_DEVICE_RELEASE_MESSAGE;
  515: 
  516: 
  517: /****************************************************************************/
  518: 
  519: /* HRT Entry Structure defined in I2OMSG.H */
  520: 
  521: /* ExecHrtGet Function Message Frame structure. */
  522: 
  523: typedef struct _I2O_EXEC_HRT_GET_MESSAGE {
  524:    I2O_MESSAGE_FRAME           StdMessageFrame;
  525:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  526:    I2O_SG_ELEMENT              SGL;
  527: } I2O_EXEC_HRT_GET_MESSAGE, *PI2O_EXEC_HRT_GET_MESSAGE;
  528: 
  529: 
  530: /****************************************************************************/
  531: 
  532: 
  533: /* ExecIopClear Function Message Frame structure. */
  534: 
  535: typedef struct _I2O_EXEC_IOP_CLEAR_MESSAGE {
  536:    I2O_MESSAGE_FRAME           StdMessageFrame;
  537:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  538: } I2O_EXEC_IOP_CLEAR_MESSAGE, *PI2O_EXEC_IOP_CLEAR_MESSAGE;
  539: 
  540: 
  541: /****************************************************************************/
  542: 
  543: 
  544: /* ExecIopConnect Function Message Frame structure. */
  545: 
  546: typedef struct _I2O_EXEC_IOP_CONNECT_MESSAGE {
  547:    I2O_MESSAGE_FRAME           StdMessageFrame;
  548:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  549:    BF                          reserved:I2O_RESERVED_16BITS;
  550:    BF                          reserved3:I2O_RESERVED_8BITS;
  551:    BF                          IOP1MsgerType:I2O_MESSENGER_TYPE_SZ;
  552:    U16                         IOP1InboundMFrameSize;
  553:    BF                          IOP1AliasForIOP2:I2O_TID_SZ;
  554:    U8                          reserved1;
  555:    BF                          IOP_ID1:I2O_IOP_ID_SZ;
  556:    BF                          reserved2:I2O_RESERVED_4BITS;
  557:    BF                          HostUnitID1:I2O_UNIT_ID_SZ;
  558: } I2O_EXEC_IOP_CONNECT_MESSAGE, *PI2O_EXEC_IOP_CONNECT_MESSAGE;
  559: 
  560: 
  561:     /* ExecIopConnect reply structure */
  562: 
  563: typedef struct _I2O_EXEC_IOP_CONNECT_IOP_REPLY {
  564:    I2O_MESSAGE_FRAME           StdMessageFrame;
  565:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  566:    U16                         DetailedStatusCode;
  567:    U8                          reserved;
  568:    U8                          ReqStatus;
  569:    U16                         IOP2InboundMFrameSize;
  570:    BF                          IOP2AliasForIOP1:I2O_TID_SZ;
  571:    U8                          reserved1;
  572:    BF                          IOP_ID2:I2O_IOP_ID_SZ;
  573:    BF                          reserved2:I2O_RESERVED_4BITS;
  574:    BF                          HostUnitID2:I2O_UNIT_ID_SZ;
  575: } I2O_EXEC_IOP_CONNECT_REPLY, *PI2O_EXEC_IOP_CONNECT_REPLY;
  576: 
  577: 
  578: /****************************************************************************/
  579: 
  580: 
  581: #define    I2O_EXEC_IOP_RESET_RESERVED_SZ              16
  582: 
  583: #define    I2O_EXEC_IOP_RESET_IN_PROGRESS              0x01
  584: #define    I2O_EXEC_IOP_RESET_REJECTED                 0x02
  585: 
  586: #define    I2O_EXEC_IOP_RESET_STATUS_RESERVED_SZ       3
  587: 
  588: typedef struct _I2O_EXEC_IOP_RESET_STATUS {
  589: #   if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
  590:         U32                    ResetStatus;
  591: #   else
  592:         U8                     ResetStatus;
  593:         U8                     reserved[I2O_EXEC_IOP_RESET_STATUS_RESERVED_SZ];
  594: #   endif
  595: } I2O_EXEC_IOP_RESET_STATUS, *PI2O_EXEC_IOP_RESET_STATUS;
  596: 
  597: 
  598: /* ExecIopReset Function Message Frame structure. */
  599: 
  600: typedef struct _I2O_EXEC_IOP_RESET_MESSAGE {
  601:    U8                          VersionOffset;
  602:    U8                          MsgFlags;
  603:    U16                         MessageSize;
  604: #if (defined(__BORLANDC__) || defined(sparc))
  605:    U32                         TargetAddress;
  606: #else
  607:    BF                          TargetAddress:I2O_TID_SZ;
  608:    BF                          InitiatorAddress:I2O_TID_SZ;
  609:    BF                          Function:I2O_FUNCTION_SZ;
  610: #endif
  611:    U8                          Reserved[I2O_EXEC_IOP_RESET_RESERVED_SZ];
  612:    U32                         StatusWordLowAddress;
  613:    U32                         StatusWordHighAddress;
  614: } I2O_EXEC_IOP_RESET_MESSAGE, *PI2O_EXEC_IOP_RESET_MESSAGE;
  615: 
  616: 
  617: /****************************************************************************/
  618: 
  619: /* LCT Entry Structure defined in I2OMSG.H */
  620: 
  621: /* ExecLCTNotify Function Message Frame structure. */
  622: 
  623: typedef struct _I2O_EXEC_LCT_NOTIFY_MESSAGE {
  624:    I2O_MESSAGE_FRAME           StdMessageFrame;
  625:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  626:    U32                         ClassIdentifier;
  627:    U32                         LastReportedChangeIndicator;
  628:    I2O_SG_ELEMENT              SGL;
  629: } I2O_EXEC_LCT_NOTIFY_MESSAGE, *PI2O_EXEC_LCT_NOTIFY_MESSAGE;
  630: 
  631: 
  632: /****************************************************************************/
  633: 
  634: 
  635: /* ExecOutboundInit Function Message Frame structure. */
  636: 
  637: typedef struct _I2O_EXEC_OUTBOUND_INIT_MESSAGE {
  638:    I2O_MESSAGE_FRAME           StdMessageFrame;
  639:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  640:    U32                         HostPageFrameSize;
  641:    U8                          InitCode;
  642:    U8                          reserved;
  643:    U16                         OutboundMFrameSize;
  644:    I2O_SG_ELEMENT              SGL;
  645: } I2O_EXEC_OUTBOUND_INIT_MESSAGE, *PI2O_EXEC_OUTBOUND_INIT_MESSAGE;
  646: 
  647: 
  648: #define    I2O_EXEC_OUTBOUND_INIT_IN_PROGRESS          0x01
  649: #define    I2O_EXEC_OUTBOUND_INIT_REJECTED             0x02
  650: #define    I2O_EXEC_OUTBOUND_INIT_FAILED               0x03
  651: #define    I2O_EXEC_OUTBOUND_INIT_COMPLETE             0x04
  652: 
  653: #define    I2O_EXEC_OUTBOUND_INIT_RESERVED_SZ          3
  654: 
  655: 
  656: typedef struct _I2O_EXEC_OUTBOUND_INIT_STATUS {
  657:    U8                          InitStatus;
  658:    U8                          reserved[I2O_EXEC_OUTBOUND_INIT_RESERVED_SZ];
  659: } I2O_EXEC_OUTBOUND_INIT_STATUS, *PI2O_EXEC_OUTBOUND_INIT_STATUS;
  660: 
  661: 
  662: typedef struct _I2O_EXEC_OUTBOUND_INIT_RECLAIM_LIST {
  663:    U32                         MFACount;
  664:    U32                         MFAReleaseCount;
  665:    U32                         MFAAddress[1];
  666: } I2O_EXEC_OUTBOUND_INIT_RECLAIM_LIST, *PI2O_EXEC_OUTBOUND_INIT_RECLAIM_LIST;
  667: 
  668: 
  669: /****************************************************************************/
  670: 
  671: /* ExecPathEnable Function Message Frame structure. */
  672: 
  673: typedef struct _I2O_EXEC_PATH_ENABLE_MESSAGE {
  674:    I2O_MESSAGE_FRAME           StdMessageFrame;
  675:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  676:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  677:    BF                          reserved:I2O_RESERVED_4BITS;
  678:    BF                          HostUnitID:I2O_UNIT_ID_SZ;
  679: } I2O_EXEC_PATH_ENABLE_MESSAGE, *PI2O_EXEC_PATH_ENABLE_MESSAGE;
  680: 
  681: 
  682: /****************************************************************************/
  683: 
  684: /* ExecPathQuiesce Function Message Frame structure. */
  685: 
  686: typedef struct _I2O_EXEC_PATH_QUIESCE_MESSAGE {
  687:    I2O_MESSAGE_FRAME           StdMessageFrame;
  688:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  689:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  690:    BF                          reserved:I2O_RESERVED_4BITS;
  691:    BF                          HostUnitID:I2O_UNIT_ID_SZ;
  692: } I2O_EXEC_PATH_QUIESCE_MESSAGE, *PI2O_EXEC_PATH_QUIESCE_MESSAGE;
  693: 
  694: 
  695: /****************************************************************************/
  696: 
  697: /* ExecPathReset Function Message Frame structure. */
  698: 
  699: typedef struct _I2O_EXEC_PATH_RESET_MESSAGE {
  700:    I2O_MESSAGE_FRAME           StdMessageFrame;
  701:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  702:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  703:    BF                          reserved:I2O_RESERVED_4BITS;
  704:    BF                          HostUnitID:I2O_UNIT_ID_SZ;
  705: } I2O_EXEC_PATH_RESET_MESSAGE, *PI2O_EXEC_PATH_RESET_MESSAGE;
  706: 
  707: 
  708: /****************************************************************************/
  709: 
  710: #define    I2O_EXEC_STATIC_MF_CREATE_RESERVED_SZ        3
  711: 
  712: /* ExecStaticMfCreate Message Frame  structure */
  713: 
  714: typedef struct _I2O_EXEC_STATIC_MF_CREATE_MESSAGE {
  715:    I2O_MESSAGE_FRAME           StdMessageFrame;
  716:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  717:    U8                          MaxOutstanding;
  718:    U8                          reserved[I2O_EXEC_STATIC_MF_CREATE_RESERVED_SZ];
  719:    I2O_MESSAGE_FRAME           StaticMessageFrame;
  720: } I2O_EXEC_STATIC_MF_CREATE_MESSAGE, *PI2O_EXEC_STATIC_MF_CREATE_MESSAGE;
  721: 
  722: 
  723: /* ExecStaticMfCreate Message Frame reply */
  724: 
  725: typedef struct _I2O_EXEC_STATIC_MF_CREATE_REPLY {
  726:    I2O_SINGLE_REPLY_MESSAGE_FRAME  StdReplyFrame;
  727:    PI2O_MESSAGE_FRAME              StaticMFA;
  728: } I2O_EXEC_STATIC_MF_CREATE_REPLY, *PI2O_EXEC_STATIC_MF_CREATE_REPLY;
  729: 
  730: 
  731: /* ExecStaticMfRelease Message Frame structure */
  732: 
  733: typedef struct _I2O_EXEC_STATIC_MF_RELEASE_MESSAGE {
  734:    I2O_MESSAGE_FRAME           StdMessageFrame;
  735:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  736:    PI2O_MESSAGE_FRAME          StaticMFA;
  737: } I2O_EXEC_STATIC_MF_RELEASE_MESSAGE, *PI2O_EXEC_STATIC_MF_RELEASE_MESSAGE;
  738: 
  739: 
  740: /****************************************************************************/
  741: 
  742: #define    I2O_EXEC_STATUS_GET_RESERVED_SZ             16
  743: 
  744: /* ExecStatusGet Function Message Frame structure. */
  745: 
  746: typedef struct _I2O_EXEC_STATUS_GET_MESSAGE {
  747:    U8                          VersionOffset;
  748:    U8                          MsgFlags;
  749:    U16                         MessageSize;
  750: #if (defined(__BORLANDC__) || defined(_DPT_BIG_ENDIAN) || defined(sparc))
  751:    U32                         TargetAddress;
  752: #else
  753:    BF                          TargetAddress:I2O_TID_SZ;
  754:    BF                          InitiatorAddress:I2O_TID_SZ;
  755:    BF                          Function:I2O_FUNCTION_SZ;
  756: #endif
  757:    U8                          Reserved[I2O_EXEC_STATUS_GET_RESERVED_SZ];
  758:    U32                         ReplyBufferAddressLow;
  759:    U32                         ReplyBufferAddressHigh;
  760:    U32                         ReplyBufferLength;
  761: } I2O_EXEC_STATUS_GET_MESSAGE, *PI2O_EXEC_STATUS_GET_MESSAGE;
  762: 
  763: 
  764: #define    I2O_IOP_STATUS_PROD_ID_STR_SZ               24
  765: #define    I2O_EXEC_STATUS_GET_REPLY_RESERVED_SZ       6
  766: 
  767: /* ExecStatusGet reply Structure */
  768: 
  769: #define    I2O_IOP_CAP_CONTEXT_32_ONLY                 0x00000000
  770: #define    I2O_IOP_CAP_CONTEXT_64_ONLY                 0x00000001
  771: #define    I2O_IOP_CAP_CONTEXT_32_64_NOT_CURRENTLY     0x00000002
  772: #define    I2O_IOP_CAP_CONTEXT_32_64_CURRENTLY         0x00000003
  773: #define    I2O_IOP_CAP_CURRENT_CONTEXT_NOT_CONFIG      0x00000000
  774: #define    I2O_IOP_CAP_CURRENT_CONTEXT_32_ONLY         0x00000004
  775: #define    I2O_IOP_CAP_CURRENT_CONTEXT_64_ONLY         0x00000008
  776: #define    I2O_IOP_CAP_CURRENT_CONTEXT_32_64           0x0000000C
  777: #define    I2O_IOP_CAP_INBOUND_PEER_SUPPORT            0x00000010
  778: #define    I2O_IOP_CAP_OUTBOUND_PEER_SUPPORT           0x00000020
  779: #define    I2O_IOP_CAP_PEER_TO_PEER_SUPPORT            0x00000040
  780: 
  781: typedef struct _I2O_EXEC_STATUS_GET_REPLY {
  782:    U16                         OrganizationID;
  783:    U16                         reserved;
  784: #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
  785:    U32                         IOP_ID;
  786: #else
  787:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  788:    BF                          reserved1:I2O_RESERVED_4BITS;
  789:    BF                          HostUnitID:I2O_UNIT_ID_SZ;
  790: #endif
  791: #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
  792:    U32                         SegmentNumber;
  793: #else
  794:    BF                          SegmentNumber:I2O_SEGMENT_NUMBER_SZ;
  795:    BF                          I2oVersion:I2O_4BIT_VERSION_SZ;
  796:    BF                          IopState:I2O_IOP_STATE_SZ;
  797:    BF                          MessengerType:I2O_MESSENGER_TYPE_SZ;
  798: #endif
  799:    U16                         InboundMFrameSize;
  800:    U8                          InitCode;
  801:    U8                          reserved2;
  802:    U32                         MaxInboundMFrames;
  803:    U32                         CurrentInboundMFrames;
  804:    U32                         MaxOutboundMFrames;
  805:    U8                          ProductIDString[I2O_IOP_STATUS_PROD_ID_STR_SZ];
  806:    U32                         ExpectedLCTSize;
  807:    U32                         IopCapabilities;
  808:    U32                         DesiredPrivateMemSize;
  809:    U32                         CurrentPrivateMemSize;
  810:    U32                         CurrentPrivateMemBase;
  811:    U32                         DesiredPrivateIOSize;
  812:    U32                         CurrentPrivateIOSize;
  813:    U32                         CurrentPrivateIOBase;
  814:    U8                          reserved3[3];
  815:    U8                          SyncByte;
  816: } I2O_EXEC_STATUS_GET_REPLY, *PI2O_EXEC_STATUS_GET_REPLY;
  817: 
  818: 
  819: /****************************************************************************/
  820: 
  821: #define    I2O_EXEC_SW_DOWNLOAD_FLAG_LOAD_MEMORY       0x00
  822: #define    I2O_EXEC_SW_DOWNLOAD_FLAG_PERMANENT_STORE   0x01
  823: #define    I2O_EXEC_SW_DOWNLOAD_FLAG_EXPERIMENTAL      0x00
  824: #define    I2O_EXEC_SW_DOWNLOAD_FLAG_OVERRIDE          0x02
  825: 
  826: #define    I2O_EXEC_SW_TYPE_DDM                        0x01
  827: #define    I2O_EXEC_SW_TYPE_DDM_MPB                    0x02
  828: #define    I2O_EXEC_SW_TYPE_DDM_CONFIG_TABLE           0x03
  829: #define    I2O_EXEC_SW_TYPE_IRTOS                      0x11
  830: #define    I2O_EXEC_SW_TYPE_IRTOS_PRIVATE_MODULE       0x12
  831: #define    I2O_EXEC_SW_TYPE_IRTOS_DIALOG_TABLE         0x13
  832: #define    I2O_EXEC_SW_TYPE_IOP_PRIVATE_MODULE         0x22
  833: #define    I2O_EXEC_SW_TYPE_IOP_DIALOG_TABLE           0x23
  834: 
  835: 
  836: /* I2O ExecSwDownload/Upload/Remove SwID Structure */
  837: 
  838: typedef struct _I2O_SW_ID {
  839:    U16                                      ModuleID;
  840:    U16                                      OrganizationID;
  841: } I2O_SW_ID, *PI2O_SW_ID;
  842: 
  843: 
  844: /* ExecSwDownload Function Message Frame structure. */
  845: 
  846: typedef struct _I2O_EXEC_SW_DOWNLOAD_MESSAGE {
  847:    I2O_MESSAGE_FRAME           StdMessageFrame;
  848:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  849:    U8                          CurrentFragment;
  850:    U8                          TotalFragments;
  851:    U8                          SwType;
  852:    U8                          DownloadFlags;
  853:    U32                         SWSize;
  854:    I2O_SW_ID                   SwID;
  855:    I2O_SG_ELEMENT              SGL;
  856: } I2O_EXEC_SW_DOWNLOAD_MESSAGE, *PI2O_EXEC_SW_DOWNLOAD_MESSAGE;
  857: 
  858: 
  859: /****************************************************************************/
  860: 
  861: 
  862: /* ExecSwUpload Function Message Frame structure. */
  863: 
  864: typedef struct _I2O_EXEC_SW_UPLOAD_MESSAGE {
  865:    I2O_MESSAGE_FRAME           StdMessageFrame;
  866:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  867:    U8                          CurrentFragment;
  868:    U8                          TotalFragments;
  869:    U8                          SwType;
  870:    U8                          UploadFlags;
  871:    U32                         SWSize;
  872:    I2O_SW_ID                   SwID;
  873:    I2O_SG_ELEMENT              SGL;
  874: } I2O_EXEC_SW_UPLOAD_MESSAGE, *PI2O_EXEC_SW_UPLOAD_MESSAGE;
  875: 
  876: 
  877: /****************************************************************************/
  878: 
  879: 
  880: /* ExecSwRemove Function Message Frame structure. */
  881: 
  882: typedef struct _I2O_EXEC_SW_REMOVE_MESSAGE {
  883:    I2O_MESSAGE_FRAME           StdMessageFrame;
  884:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  885:    U16                         reserved;
  886:    U8                          SwType;
  887:    U8                          RemoveFlags;
  888:    U32                         SWSize;
  889:    I2O_SW_ID                   SwID;
  890: } I2O_EXEC_SW_REMOVE_MESSAGE, *PI2O_EXEC_SW_REMOVE_MESSAGE;
  891: 
  892: 
  893: /****************************************************************************/
  894: 
  895: 
  896: /* ExecSysEnable Function Message Frame structure. */
  897: 
  898: typedef struct _I2O_EXEC_SYS_ENABLE_MESSAGE {
  899:    I2O_MESSAGE_FRAME           StdMessageFrame;
  900:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  901: } I2O_EXEC_SYS_ENABLE_MESSAGE, *PI2O_EXEC_SYS_ENABLE_MESSAGE;
  902: 
  903: 
  904: /****************************************************************************/
  905: 
  906: 
  907: /* ExecSysModify Function Message Frame structure. */
  908: 
  909: typedef struct _I2O_EXEC_SYS_MODIFY_MESSAGE {
  910:    I2O_MESSAGE_FRAME           StdMessageFrame;
  911:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  912:    I2O_SG_ELEMENT              SGL;
  913: } I2O_EXEC_SYS_MODIFY_MESSAGE, *PI2O_EXEC_SYS_MODIFY_MESSAGE;
  914: 
  915: 
  916: /****************************************************************************/
  917: 
  918: 
  919: /* ExecSysQuiesce Function Message Frame structure. */
  920: 
  921: typedef struct _I2O_EXEC_SYS_QUIESCE_MESSAGE {
  922:    I2O_MESSAGE_FRAME           StdMessageFrame;
  923:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  924: } I2O_EXEC_SYS_QUIESCE_MESSAGE, *PI2O_EXEC_SYS_QUIESCE_MESSAGE;
  925: 
  926: 
  927: /****************************************************************************/
  928: 
  929: 
  930: /* ExecSysTabSet (System Table) Function Message Frame structure. */
  931: 
  932: #define I2O_EXEC_SYS_TAB_IOP_ID_LOCAL_IOP           0x000
  933: #define I2O_EXEC_SYS_TAB_IOP_ID_LOCAL_HOST          0x001
  934: #define I2O_EXEC_SYS_TAB_IOP_ID_UNKNOWN_IOP         0xFFF
  935: #define I2O_EXEC_SYS_TAB_HOST_UNIT_ID_LOCAL_UNIT    0x0000
  936: #define I2O_EXEC_SYS_TAB_HOST_UNIT_ID_UNKNOWN_UNIT  0xffff
  937: #define I2O_EXEC_SYS_TAB_SEG_NUMBER_LOCAL_SEGMENT   0x000
  938: #define I2O_EXEC_SYS_TAB_SEG_NUMBER_UNKNOWN_SEGMENT 0xfff
  939: 
  940: typedef struct _I2O_EXEC_SYS_TAB_SET_MESSAGE {
  941:    I2O_MESSAGE_FRAME           StdMessageFrame;
  942:    I2O_TRANSACTION_CONTEXT     TransactionContext;
  943: #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
  944:    U32                         IOP_ID;
  945: #else
  946:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  947:    BF                          reserved:I2O_RESERVED_4BITS;
  948:    BF                          HostUnitID:I2O_UNIT_ID_SZ;
  949: #endif
  950: #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
  951:    U32                         SegmentNumber;
  952: #else
  953:    BF                          SegmentNumber:I2O_SEGMENT_NUMBER_SZ;
  954:    BF                          reserved2:I2O_RESERVED_4BITS;
  955:    BF                          reserved3:I2O_RESERVED_16BITS;
  956: #endif
  957:    I2O_SG_ELEMENT              SGL;
  958: } I2O_EXEC_SYS_TAB_SET_MESSAGE, *PI2O_EXEC_SYS_TAB_SET_MESSAGE;
  959: 
  960: 
  961: /* ExecSysTabSet (System Table) Header Reply structure. */
  962: 
  963: #define    I2O_SET_SYSTAB_RESERVED_SZ                  8
  964: 
  965: typedef struct _I2O_SET_SYSTAB_HEADER {
  966:    U8                          NumberEntries;
  967:    U8                          SysTabVersion;
  968:    U16                         reserved;
  969:    U32                         CurrentChangeIndicator;
  970:    U8                          reserved1[I2O_SET_SYSTAB_RESERVED_SZ];
  971: /*    I2O_SYSTAB_ENTRY    SysTabEntry[1]; */
  972: } I2O_SET_SYSTAB_HEADER, *PI2O_SET_SYSTAB_HEADER;
  973: 
  974: 
  975: #define    I2O_RESOURCE_MANAGER_VERSION        0
  976: 
  977: typedef struct _MESSENGER_INFO {
  978:    U32                         InboundMessagePortAddressLow;
  979:    U32                         InboundMessagePortAddressHigh;
  980:    } I2O_MESSENGER_INFO, *PI2O_MESSENGER_INFO;
  981: 
  982: /* ExecSysTabSet IOP Descriptor Entry structure. */
  983: 
  984: typedef struct _I2O_IOP_ENTRY {
  985:    U16                         OrganizationID;
  986:    U16                         reserved;
  987: #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
  988:    U32                         IOP_ID;
  989: #else
  990:    BF                          IOP_ID:I2O_IOP_ID_SZ;
  991:    BF                          reserved3:I2O_RESERVED_4BITS;
  992:    BF                          reserved1:I2O_RESERVED_16BITS;
  993: #endif
  994: #if (defined(_DPT_BIG_ENDIAN) || defined(sparc))
  995:    U32                         SegmentNumber;
  996: #else
  997:    BF                          SegmentNumber:I2O_SEGMENT_NUMBER_SZ;
  998:    BF                          I2oVersion:I2O_4BIT_VERSION_SZ;
  999:    BF                          IopState:I2O_IOP_STATE_SZ;
 1000:    BF                          MessengerType:I2O_MESSENGER_TYPE_SZ;
 1001: #endif
 1002:    U16                         InboundMessageFrameSize;
 1003:    U16                         reserved2;
 1004:    U32                         LastChanged;
 1005:    U32                         IopCapabilities;
 1006:    I2O_MESSENGER_INFO          MessengerInfo;
 1007: } I2O_IOP_ENTRY, *PI2O_IOP_ENTRY;
 1008: 
 1009: 
 1010: /****************************************************************************/
 1011: /* Executive Parameter Groups */
 1012: /****************************************************************************/
 1013: 
 1014: 
 1015: #define    I2O_EXEC_IOP_HARDWARE_GROUP_NO              0x0000
 1016: #define    I2O_EXEC_IOP_MESSAGE_IF_GROUP_NO            0x0001
 1017: #define    I2O_EXEC_EXECUTING_ENVIRONMENT_GROUP_NO     0x0002
 1018: #define    I2O_EXEC_EXECUTING_DDM_LIST_GROUP_NO        0x0003
 1019: #define    I2O_EXEC_DRIVER_STORE_GROUP_NO              0x0004
 1020: #define    I2O_EXEC_DRIVER_STORE_TABLE_GROUP_NO        0x0005
 1021: #define    I2O_EXEC_IOP_BUS_ATTRIBUTES_GROUP_NO        0x0006
 1022: #define    I2O_EXEC_IOP_SW_ATTRIBUTES_GROUP_NO         0x0007
 1023: #define    I2O_EXEC_HARDWARE_RESOURCE_TABLE_GROUP_NO   0x0100
 1024: #define    I2O_EXEC_LCT_SCALAR_GROUP_NO                0x0101
 1025: #define    I2O_EXEC_LCT_TABLE_GROUP_NO                 0x0102
 1026: #define    I2O_EXEC_SYSTEM_TABLE_GROUP_NO              0x0103
 1027: #define    I2O_EXEC_EXTERNAL_CONN_TABLE_GROUP_NO       0x0104
 1028: 
 1029: 
 1030: /* EXEC Group 0000h - IOP Hardware Parameter Group */
 1031: 
 1032: /* IOP HardWare Capabilities defines */
 1033: 
 1034: #define    I2O_IOP_HW_CAP_SELF_BOOT                    0x00000001
 1035: #define    I2O_IOP_HW_CAP_IRTOS_UPGRADEABLE            0x00000002
 1036: #define    I2O_IOP_HW_CAP_DOWNLOADABLE_DDM             0x00000004
 1037: #define    I2O_IOP_HW_CAP_INSTALLABLE_DDM              0x00000008
 1038: #define    I2O_IOP_HW_CAP_BATTERY_BACKUP_RAM           0x00000010
 1039: 
 1040: /* IOP Processor Type defines */
 1041: 
 1042: #define    I2O_IOP_PROC_TYPE_INTEL_80960               0x00
 1043: #define    I2O_IOP_PROC_TYPE_AMD_29000                 0x01
 1044: #define    I2O_IOP_PROC_TYPE_MOTOROLA_68000            0x02
 1045: #define    I2O_IOP_PROC_TYPE_ARM                       0x03
 1046: #define    I2O_IOP_PROC_TYPE_MIPS                      0x04
 1047: #define    I2O_IOP_PROC_TYPE_SPARC                     0x05
 1048: #define    I2O_IOP_PROC_TYPE_POWER_PC                  0x06
 1049: #define    I2O_IOP_PROC_TYPE_ALPHA                     0x07
 1050: #define    I2O_IOP_PROC_TYPE_INTEL_X86                 0x08
 1051: #define    I2O_IOP_PROC_TYPE_OTHER                     0xFF
 1052: 
 1053: 
 1054: typedef struct _I2O_EXEC_IOP_HARDWARE_SCALAR {
 1055:    U16                         I2oVendorID;
 1056:    U16                         ProductID;
 1057:    U32                         ProcessorMemory;
 1058:    U32                         PermMemory;
 1059:    U32                         HWCapabilities;
 1060:    U8                          ProcessorType;
 1061:    U8                          ProcessorVersion;
 1062: } I2O_EXEC_IOP_HARDWARE_SCALAR, *PI2O_EXEC_IOP_HARDWARE_SCALAR;
 1063: 
 1064: 
 1065: /* EXEC Group 0001h - IOP Message Interface Parameter Group */
 1066: 
 1067: /* InitCode defines */
 1068: #define    I2O_MESSAGE_IF_INIT_CODE_NO_OWNER           0x00
 1069: #define    I2O_MESSAGE_IF_INIT_CODE_BIOS               0x10
 1070: #define    I2O_MESSAGE_IF_INIT_CODE_OEM_BIOS_EXTENSION 0x20
 1071: #define    I2O_MESSAGE_IF_INIT_CODE_ROM_BIOS_EXTENSION 0x30
 1072: #define    I2O_MESSAGE_IF_INIT_CODE_OS                 0x80
 1073: 
 1074: typedef struct _I2O_EXEC_IOP_MESSAGE_IF_SCALAR {
 1075:    U32                     InboundFrameSize;
 1076:    U32                     InboundSizeTarget;
 1077:    U32                     InboundMax;
 1078:    U32                     InboundTarget;
 1079:    U32                     InboundPoolCount;
 1080:    U32                     InboundCurrentFree;
 1081:    U32                     InboundCurrentPost;
 1082:    U16                     StaticCount;
 1083:    U16                     StaticInstanceCount;
 1084:    U16                     StaticLimit;
 1085:    U16                     StaticInstanceLimit;
 1086:    U32                     OutboundFrameSize;
 1087:    U32                     OutboundMax;
 1088:    U32                     OutboundMaxTarget;
 1089:    U32                     OutboundCurrentFree;
 1090:    U32                     OutboundCurrentPost;
 1091:    U8                      InitCode;
 1092: } I2O_EXEC_IOP_MESSAGE_IF_SCALAR, *PI2O_EXEC_IOP_MESSAGE_IF_SCALAR;
 1093: 
 1094: 
 1095: /* EXEC Group 0002h - Executing Environment Parameter Group */
 1096: 
 1097: typedef struct _I2O_EXEC_EXECUTE_ENVIRONMENT_SCALAR {
 1098:    U32                     MemTotal;
 1099:    U32                     MemFree;
 1100:    U32                     PageSize;
 1101:    U32                     EventQMax;
 1102:    U32                     EventQCurrent;
 1103:    U32                     DDMLoadMax;
 1104: } I2O_EXEC_EXECUTE_ENVIRONMENT_SCALAR, *PI2O_EXEC_EXECUTE_ENVIRONMENT_SCALAR;
 1105: 
 1106: 
 1107: /* EXEC Group 0003h - Executing DDM's Parameter Group */
 1108: 
 1109: /* ModuleType Defines */
 1110: 
 1111: #define    I2O_EXEC_DDM_MODULE_TYPE_OTHER              0x00
 1112: #define    I2O_EXEC_DDM_MODULE_TYPE_DOWNLOAD           0x01
 1113: #define    I2O_EXEC_DDM_MODULE_TYPE_EMBEDDED           0x22
 1114: 
 1115: 
 1116: typedef struct _I2O_EXEC_EXECUTE_DDM_TABLE {
 1117:    U16                     DdmTID;
 1118:    U8                      ModuleType;
 1119:    U8                      reserved;
 1120:    U16                     I2oVendorID;
 1121:    U16                     ModuleID;
 1122:    U8                      ModuleName[I2O_MODULE_NAME_SZ];
 1123:    U32                     ModuleVersion;
 1124:    U32                     DataSize;
 1125:    U32                     CodeSize;
 1126: } I2O_EXEC_EXECUTE_DDM_TABLE, *PI2O_EXEC_EXECUTE_DDM_TABLE;
 1127: 
 1128: 
 1129: /* EXEC Group 0004h - Driver Store Environment Parameter Group */
 1130: 
 1131: 
 1132: typedef struct _I2O_EXEC_DRIVER_STORE_SCALAR {
 1133:    U32                     ModuleLimit;
 1134:    U32                     ModuleCount;
 1135:    U32                     CurrentSpace;
 1136:    U32                     FreeSpace;
 1137: } I2O_EXEC_DRIVER_STORE_SCALAR, *PI2O_EXEC_DRIVER_STORE_SCALAR;
 1138: 
 1139: 
 1140: /* EXEC Group 0005h - Driver Store Parameter Group */
 1141: 
 1142: 
 1143: typedef struct _I2O_EXEC_DRIVER_STORE_TABLE {
 1144:    U16                     StoredDdmIndex;
 1145:    U8                      ModuleType;
 1146:    U8                      reserved;
 1147:    U16                     I2oVendorID;
 1148:    U16                     ModuleID;
 1149:    U8                      ModuleName[I2O_MODULE_NAME_SZ];
 1150:    U32                     ModuleVersion;
 1151:    U16                     DateDay;
 1152:    U16                     DateMonth;
 1153:    U32                     DateYear;
 1154:    U32                     ModuleSize;
 1155:    U32                     MpbSize;
 1156:    U32                     ModuleFlags;
 1157: } I2O_EXEC_DRIVER_STORE_TABLE, *PI2O_EXEC_DRIVER_STORE_TABLE;
 1158: 
 1159: 
 1160: /* EXEC Group 0006h - IOP's Bus Attributes Parameter Group */
 1161: 
 1162: #define    I2O_EXEC_IOP_BUS_ATTRIB_SYSTEM_BUS          0x00
 1163: #define    I2O_EXEC_IOP_BUS_ATTRIB_BRIDGED_SYSTEM_BUS  0x01
 1164: #define    I2O_EXEC_IOP_BUS_ATTRIB_PRIVATE             0x02
 1165: 
 1166: typedef struct _I2O_EXEC_IOP_BUS_ATTRIBUTE_TABLE {
 1167:    U32                     BusID;
 1168:    U8                      BusType;
 1169:    U8                      MaxAdapters;
 1170:    U8                      AdapterCount;
 1171:    U8                      BusAttributes;
 1172: } I2O_EXEC_IOP_BUS_ATTRIBUTE_TABLE, *PI2O_EXEC_IOP_BUS_ATTRIBUTE_TABLE;
 1173: 
 1174: 
 1175: /* EXEC Group 0007h - IOP's Bus Attributes Parameter Group */
 1176: 
 1177: #define    I2O_EXEC_IOP_SW_CAP_IRTOS_I2O_COMPLIANT     0x00000001
 1178: #define    I2O_EXEC_IOP_SW_CAP_IRTOS_UPGRADEABLE       0x00000002
 1179: #define    I2O_EXEC_IOP_SW_CAP_DOWNLOADABLE_DDM        0x00000004
 1180: #define    I2O_EXEC_IOP_SW_CAP_INSTALLABLE_DDM         0x00000008
 1181: 
 1182: typedef struct _I2O_EXEC_IOP_SW_ATTRIBUTES_SCALAR {
 1183:    U16                     I2oVendorID;
 1184:    U16                     ProductID;
 1185:    U32                     CodeSize;
 1186:    U32                     SWCapabilities;
 1187: } I2O_EXEC_IOP_SW_ATTRIBUTES_SCALAR, *PI2O_EXEC_IOP_SW_ATTRIBUTES_SCALAR;
 1188: 
 1189: 
 1190: /* EXEC Group 0100h - Hardware Resource Table Parameter Group */
 1191: 
 1192: typedef struct _I2O_EXEC_HARDWARE_RESOURCE_TABLE {
 1193:    U32                         AdapterID;
 1194:    U16                         StateInfo;  /* AdapterState plus Local TID */
 1195:    U8                          BusNumber;
 1196:    U8                          BusType;
 1197:    U64                         PhysicalLocation;
 1198:    U32                         MemorySpace;
 1199:    U32                         IoSpace;
 1200: } I2O_EXEC_HARDWARE_RESOURCE_TABLE, *PI2O_EXEC_HARDWARE_RESOURCE_TABLE;
 1201: 
 1202: /* EXEC Group 0101h - Logical Configuration Table Scalar Parameter Group */
 1203: 
 1204: typedef struct _I2O_EXEC_LCT_SCALAR {
 1205:    U16                         BootDevice;
 1206:    U32                         IopFlags;
 1207:    U32                         CurrentChangeIndicator;
 1208: } I2O_EXEC_LCT_SCALAR, *PI2O_EXEC_LCT_SCALAR;
 1209: 
 1210: /* EXEC Group 0102h - Logical Configuration Table Parameter Group */
 1211: 
 1212: typedef struct _I2O_EXEC_LCT_TABLE {
 1213:    U16                         LocalTID;
 1214:    U16                         UserTID;
 1215:    U16                         ParentTID;
 1216:    U16                         DdmTID;
 1217:    U32                         ChangeIndicator;
 1218:    U32                         DeviceFlags;
 1219:    U32                         ClassID;
 1220:    U32                         SubClass;
 1221:    U8                          IdentityTag[I2O_IDENTITY_TAG_SZ];
 1222:    U32                         EventCapabilities;
 1223:    U8                          BiosInfo;
 1224: } I2O_EXEC_LCT_TABLE, *PI2O_EXEC_LCT_TABLE;
 1225: 
 1226: /* EXEC Group 0103h - System Table Parameter Group */
 1227: 
 1228: #define    I2O_MESSENGER_TYPE_MEMORY_MAPPED_MESSAGE_UNIT  0x0
 1229: 
 1230: typedef struct _I2O_EXEC_SYSTEM_TABLE {
 1231:    U16                         IOP_ID;
 1232:    U16                         OrganizationID;
 1233:    U16                         SegmentNumber;
 1234:    U8                          Version;
 1235:    U8                          IopState;
 1236:    U8                          MessengerType;
 1237:    U8                          reserved;
 1238:    U32                         InboundMessagePortAddress;
 1239:    U16                         InboundMessageFrameSize;
 1240:    U32                         IopCapabilities;
 1241:    I2O_MESSENGER_INFO          MessengerInfo;
 1242: } I2O_EXEC_SYSTEM_TABLE, *PI2O_EXEC_SYSTEM_TABLE;
 1243: 
 1244: 
 1245: /* EXEC Group 0104h - External Connection Table Parameter Group */
 1246: 
 1247: #define  I2O_EXEC_XCT_FLAGS_REMOTE_IOP_CREATED_CONNECTION     0x00
 1248: #define  I2O_EXEC_XCT_FLAGS_THIS_IOP_CREATED_CONNECTION       0x01
 1249: 
 1250: typedef struct _I2O_EXEC_EXTERNAL_CONNECTION_TABLE {
 1251:    U16                         LocalAliasTID;
 1252:    U16                         RemoteTID;
 1253:    U16                         RemoteIOP;
 1254:    U16                         RemoteUnitID;
 1255:    U8                          Flags;
 1256:    U8                          reserved;
 1257: } I2O_EXEC_EXTERNAL_CONNECTION_TABLE, *PI2O_EXEC_EXTERNAL_CONNECTION_TABLE;
 1258: 
 1259: 
 1260: /****************************************************************************/
 1261: 
 1262: PRAGMA_PACK_POP
 1263: 
 1264: PRAGMA_ALIGN_POP
 1265: 
 1266: #endif        /* I2O_EXECUTIVE_HDR */