1265236Sken/*- 2283661Sslm * Copyright (c) 2012-2015 LSI Corp. 3299263Sslm * Copyright (c) 2013-2016 Avago Technologies 4265236Sken * All rights reserved. 5265236Sken * 6265236Sken * Redistribution and use in source and binary forms, with or without 7265236Sken * modification, are permitted provided that the following conditions 8265236Sken * are met: 9265236Sken * 1. Redistributions of source code must retain the above copyright 10265236Sken * notice, this list of conditions and the following disclaimer. 11265236Sken * 2. Redistributions in binary form must reproduce the above copyright 12265236Sken * notice, this list of conditions and the following disclaimer in the 13265236Sken * documentation and/or other materials provided with the distribution. 14265236Sken * 3. Neither the name of the author nor the names of any co-contributors 15265236Sken * may be used to endorse or promote products derived from this software 16265236Sken * without specific prior written permission. 17265236Sken * 18265236Sken * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 19265236Sken * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20265236Sken * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21265236Sken * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22265236Sken * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23265236Sken * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24265236Sken * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25265236Sken * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26265236Sken * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27265236Sken * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28265236Sken * SUCH DAMAGE. 29265236Sken * 30283661Sslm * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD 31265236Sken * 32265236Sken * $FreeBSD$ 33265236Sken */ 34265236Sken 35265236Sken/* 36283661Sslm * Copyright (c) 2000-2015 LSI Corporation. 37299263Sslm * Copyright (c) 2013-2016 Avago Technologies 38299263Sslm * All rights reserved. 39265236Sken * 40265236Sken * 41265236Sken * Name: mpi2_sas.h 42265236Sken * Title: MPI Serial Attached SCSI structures and definitions 43265236Sken * Creation Date: February 9, 2007 44265236Sken * 45299263Sslm * mpi2_sas.h Version: 02.00.10 46265236Sken * 47265236Sken * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25 48265236Sken * prefix are for use only on MPI v2.5 products, and must not be used 49265236Sken * with MPI v2.0 products. Unless otherwise noted, names beginning with 50265236Sken * MPI2 or Mpi2 are for use with both MPI v2.0 and MPI v2.5 products. 51265236Sken * 52265236Sken * Version History 53265236Sken * --------------- 54265236Sken * 55265236Sken * Date Version Description 56265236Sken * -------- -------- ------------------------------------------------------ 57265236Sken * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A. 58265236Sken * 06-26-07 02.00.01 Added Clear All Persistent Operation to SAS IO Unit 59265236Sken * Control Request. 60265236Sken * 10-02-08 02.00.02 Added Set IOC Parameter Operation to SAS IO Unit Control 61265236Sken * Request. 62265236Sken * 10-28-09 02.00.03 Changed the type of SGL in MPI2_SATA_PASSTHROUGH_REQUEST 63265236Sken * to MPI2_SGE_IO_UNION since it supports chained SGLs. 64265236Sken * 05-12-10 02.00.04 Modified some comments. 65265236Sken * 08-11-10 02.00.05 Added NCQ operations to SAS IO Unit Control. 66265236Sken * 11-18-11 02.00.06 Incorporating additions for MPI v2.5. 67265236Sken * 07-10-12 02.00.07 Added MPI2_SATA_PT_SGE_UNION for use in the SATA 68265236Sken * Passthrough Request message. 69265236Sken * 08-19-13 02.00.08 Made MPI2_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL obsolete 70265236Sken * for anything newer than MPI v2.0. 71299263Sslm * 11-18-14 02.00.09 Updated copyright information. 72299263Sslm * 03-16-15 02.00.10 Updated for MPI v2.6. 73299263Sslm * Added MPI2_SATA_PT_REQ_PT_FLAGS_FPDMA. 74265236Sken * -------------------------------------------------------------------------- 75265236Sken */ 76265236Sken 77265236Sken#ifndef MPI2_SAS_H 78265236Sken#define MPI2_SAS_H 79265236Sken 80265236Sken/* 81265236Sken * Values for SASStatus. 82265236Sken */ 83265236Sken#define MPI2_SASSTATUS_SUCCESS (0x00) 84265236Sken#define MPI2_SASSTATUS_UNKNOWN_ERROR (0x01) 85265236Sken#define MPI2_SASSTATUS_INVALID_FRAME (0x02) 86265236Sken#define MPI2_SASSTATUS_UTC_BAD_DEST (0x03) 87265236Sken#define MPI2_SASSTATUS_UTC_BREAK_RECEIVED (0x04) 88265236Sken#define MPI2_SASSTATUS_UTC_CONNECT_RATE_NOT_SUPPORTED (0x05) 89265236Sken#define MPI2_SASSTATUS_UTC_PORT_LAYER_REQUEST (0x06) 90265236Sken#define MPI2_SASSTATUS_UTC_PROTOCOL_NOT_SUPPORTED (0x07) 91265236Sken#define MPI2_SASSTATUS_UTC_STP_RESOURCES_BUSY (0x08) 92265236Sken#define MPI2_SASSTATUS_UTC_WRONG_DESTINATION (0x09) 93265236Sken#define MPI2_SASSTATUS_SHORT_INFORMATION_UNIT (0x0A) 94265236Sken#define MPI2_SASSTATUS_LONG_INFORMATION_UNIT (0x0B) 95265236Sken#define MPI2_SASSTATUS_XFER_RDY_INCORRECT_WRITE_DATA (0x0C) 96265236Sken#define MPI2_SASSTATUS_XFER_RDY_REQUEST_OFFSET_ERROR (0x0D) 97265236Sken#define MPI2_SASSTATUS_XFER_RDY_NOT_EXPECTED (0x0E) 98265236Sken#define MPI2_SASSTATUS_DATA_INCORRECT_DATA_LENGTH (0x0F) 99265236Sken#define MPI2_SASSTATUS_DATA_TOO_MUCH_READ_DATA (0x10) 100265236Sken#define MPI2_SASSTATUS_DATA_OFFSET_ERROR (0x11) 101265236Sken#define MPI2_SASSTATUS_SDSF_NAK_RECEIVED (0x12) 102265236Sken#define MPI2_SASSTATUS_SDSF_CONNECTION_FAILED (0x13) 103265236Sken#define MPI2_SASSTATUS_INITIATOR_RESPONSE_TIMEOUT (0x14) 104265236Sken 105265236Sken 106265236Sken/* 107265236Sken * Values for the SAS DeviceInfo field used in SAS Device Status Change Event 108265236Sken * data and SAS Configuration pages. 109265236Sken */ 110265236Sken#define MPI2_SAS_DEVICE_INFO_SEP (0x00004000) 111265236Sken#define MPI2_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000) 112265236Sken#define MPI2_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000) 113265236Sken#define MPI2_SAS_DEVICE_INFO_DIRECT_ATTACH (0x00000800) 114265236Sken#define MPI2_SAS_DEVICE_INFO_SSP_TARGET (0x00000400) 115265236Sken#define MPI2_SAS_DEVICE_INFO_STP_TARGET (0x00000200) 116265236Sken#define MPI2_SAS_DEVICE_INFO_SMP_TARGET (0x00000100) 117265236Sken#define MPI2_SAS_DEVICE_INFO_SATA_DEVICE (0x00000080) 118265236Sken#define MPI2_SAS_DEVICE_INFO_SSP_INITIATOR (0x00000040) 119265236Sken#define MPI2_SAS_DEVICE_INFO_STP_INITIATOR (0x00000020) 120265236Sken#define MPI2_SAS_DEVICE_INFO_SMP_INITIATOR (0x00000010) 121265236Sken#define MPI2_SAS_DEVICE_INFO_SATA_HOST (0x00000008) 122265236Sken 123265236Sken#define MPI2_SAS_DEVICE_INFO_MASK_DEVICE_TYPE (0x00000007) 124265236Sken#define MPI2_SAS_DEVICE_INFO_NO_DEVICE (0x00000000) 125265236Sken#define MPI2_SAS_DEVICE_INFO_END_DEVICE (0x00000001) 126265236Sken#define MPI2_SAS_DEVICE_INFO_EDGE_EXPANDER (0x00000002) 127265236Sken#define MPI2_SAS_DEVICE_INFO_FANOUT_EXPANDER (0x00000003) 128265236Sken 129265236Sken 130265236Sken/***************************************************************************** 131265236Sken* 132265236Sken* SAS Messages 133265236Sken* 134265236Sken*****************************************************************************/ 135265236Sken 136265236Sken/**************************************************************************** 137265236Sken* SMP Passthrough messages 138265236Sken****************************************************************************/ 139265236Sken 140265236Sken/* SMP Passthrough Request Message */ 141265236Skentypedef struct _MPI2_SMP_PASSTHROUGH_REQUEST 142265236Sken{ 143265236Sken U8 PassthroughFlags; /* 0x00 */ 144265236Sken U8 PhysicalPort; /* 0x01 */ 145265236Sken U8 ChainOffset; /* 0x02 */ 146265236Sken U8 Function; /* 0x03 */ 147265236Sken U16 RequestDataLength; /* 0x04 */ 148265236Sken U8 SGLFlags; /* 0x06 */ /* MPI v2.0 only. Reserved on MPI v2.5. */ 149265236Sken U8 MsgFlags; /* 0x07 */ 150265236Sken U8 VP_ID; /* 0x08 */ 151265236Sken U8 VF_ID; /* 0x09 */ 152265236Sken U16 Reserved1; /* 0x0A */ 153265236Sken U32 Reserved2; /* 0x0C */ 154265236Sken U64 SASAddress; /* 0x10 */ 155265236Sken U32 Reserved3; /* 0x18 */ 156265236Sken U32 Reserved4; /* 0x1C */ 157265236Sken MPI2_SIMPLE_SGE_UNION SGL; /* 0x20 */ /* MPI v2.5: IEEE Simple 64 elements only */ 158265236Sken} MPI2_SMP_PASSTHROUGH_REQUEST, MPI2_POINTER PTR_MPI2_SMP_PASSTHROUGH_REQUEST, 159265236Sken Mpi2SmpPassthroughRequest_t, MPI2_POINTER pMpi2SmpPassthroughRequest_t; 160265236Sken 161265236Sken/* values for PassthroughFlags field */ 162265236Sken#define MPI2_SMP_PT_REQ_PT_FLAGS_IMMEDIATE (0x80) 163265236Sken 164265236Sken/* MPI v2.0: use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 165265236Sken 166265236Sken 167265236Sken/* SMP Passthrough Reply Message */ 168265236Skentypedef struct _MPI2_SMP_PASSTHROUGH_REPLY 169265236Sken{ 170265236Sken U8 PassthroughFlags; /* 0x00 */ 171265236Sken U8 PhysicalPort; /* 0x01 */ 172265236Sken U8 MsgLength; /* 0x02 */ 173265236Sken U8 Function; /* 0x03 */ 174265236Sken U16 ResponseDataLength; /* 0x04 */ 175265236Sken U8 SGLFlags; /* 0x06 */ 176265236Sken U8 MsgFlags; /* 0x07 */ 177265236Sken U8 VP_ID; /* 0x08 */ 178265236Sken U8 VF_ID; /* 0x09 */ 179265236Sken U16 Reserved1; /* 0x0A */ 180265236Sken U8 Reserved2; /* 0x0C */ 181265236Sken U8 SASStatus; /* 0x0D */ 182265236Sken U16 IOCStatus; /* 0x0E */ 183265236Sken U32 IOCLogInfo; /* 0x10 */ 184265236Sken U32 Reserved3; /* 0x14 */ 185265236Sken U8 ResponseData[4]; /* 0x18 */ 186265236Sken} MPI2_SMP_PASSTHROUGH_REPLY, MPI2_POINTER PTR_MPI2_SMP_PASSTHROUGH_REPLY, 187265236Sken Mpi2SmpPassthroughReply_t, MPI2_POINTER pMpi2SmpPassthroughReply_t; 188265236Sken 189265236Sken/* values for PassthroughFlags field */ 190265236Sken#define MPI2_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE (0x80) 191265236Sken 192265236Sken/* values for SASStatus field are at the top of this file */ 193265236Sken 194265236Sken 195265236Sken/**************************************************************************** 196265236Sken* SATA Passthrough messages 197265236Sken****************************************************************************/ 198265236Sken 199265236Skentypedef union _MPI2_SATA_PT_SGE_UNION 200265236Sken{ 201265236Sken MPI2_SGE_SIMPLE_UNION MpiSimple; /* MPI v2.0 only */ 202265236Sken MPI2_SGE_CHAIN_UNION MpiChain; /* MPI v2.0 only */ 203265236Sken MPI2_IEEE_SGE_SIMPLE_UNION IeeeSimple; 204265236Sken MPI2_IEEE_SGE_CHAIN_UNION IeeeChain; /* MPI v2.0 only */ 205265236Sken MPI25_IEEE_SGE_CHAIN64 IeeeChain64; /* MPI v2.5 only */ 206265236Sken} MPI2_SATA_PT_SGE_UNION, MPI2_POINTER PTR_MPI2_SATA_PT_SGE_UNION, 207265236Sken Mpi2SataPTSGEUnion_t, MPI2_POINTER pMpi2SataPTSGEUnion_t; 208265236Sken 209265236Sken 210265236Sken/* SATA Passthrough Request Message */ 211265236Skentypedef struct _MPI2_SATA_PASSTHROUGH_REQUEST 212265236Sken{ 213265236Sken U16 DevHandle; /* 0x00 */ 214265236Sken U8 ChainOffset; /* 0x02 */ 215265236Sken U8 Function; /* 0x03 */ 216265236Sken U16 PassthroughFlags; /* 0x04 */ 217265236Sken U8 SGLFlags; /* 0x06 */ /* MPI v2.0 only. Reserved on MPI v2.5. */ 218265236Sken U8 MsgFlags; /* 0x07 */ 219265236Sken U8 VP_ID; /* 0x08 */ 220265236Sken U8 VF_ID; /* 0x09 */ 221265236Sken U16 Reserved1; /* 0x0A */ 222265236Sken U32 Reserved2; /* 0x0C */ 223265236Sken U32 Reserved3; /* 0x10 */ 224265236Sken U32 Reserved4; /* 0x14 */ 225265236Sken U32 DataLength; /* 0x18 */ 226265236Sken U8 CommandFIS[20]; /* 0x1C */ 227265236Sken MPI2_SATA_PT_SGE_UNION SGL; /* 0x30 */ /* MPI v2.5: IEEE 64 elements only */ 228265236Sken} MPI2_SATA_PASSTHROUGH_REQUEST, MPI2_POINTER PTR_MPI2_SATA_PASSTHROUGH_REQUEST, 229265236Sken Mpi2SataPassthroughRequest_t, MPI2_POINTER pMpi2SataPassthroughRequest_t; 230265236Sken 231265236Sken/* values for PassthroughFlags field */ 232265236Sken#define MPI2_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG (0x0100) 233299263Sslm#define MPI2_SATA_PT_REQ_PT_FLAGS_FPDMA (0x0040) /* MPI v2.6 and newer */ 234265236Sken#define MPI2_SATA_PT_REQ_PT_FLAGS_DMA (0x0020) 235265236Sken#define MPI2_SATA_PT_REQ_PT_FLAGS_PIO (0x0010) 236265236Sken#define MPI2_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU (0x0004) 237265236Sken#define MPI2_SATA_PT_REQ_PT_FLAGS_WRITE (0x0002) 238265236Sken#define MPI2_SATA_PT_REQ_PT_FLAGS_READ (0x0001) 239265236Sken 240265236Sken/* MPI v2.0: use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ 241265236Sken 242265236Sken 243265236Sken/* SATA Passthrough Reply Message */ 244265236Skentypedef struct _MPI2_SATA_PASSTHROUGH_REPLY 245265236Sken{ 246265236Sken U16 DevHandle; /* 0x00 */ 247265236Sken U8 MsgLength; /* 0x02 */ 248265236Sken U8 Function; /* 0x03 */ 249265236Sken U16 PassthroughFlags; /* 0x04 */ 250265236Sken U8 SGLFlags; /* 0x06 */ 251265236Sken U8 MsgFlags; /* 0x07 */ 252265236Sken U8 VP_ID; /* 0x08 */ 253265236Sken U8 VF_ID; /* 0x09 */ 254265236Sken U16 Reserved1; /* 0x0A */ 255265236Sken U8 Reserved2; /* 0x0C */ 256265236Sken U8 SASStatus; /* 0x0D */ 257265236Sken U16 IOCStatus; /* 0x0E */ 258265236Sken U32 IOCLogInfo; /* 0x10 */ 259265236Sken U8 StatusFIS[20]; /* 0x14 */ 260265236Sken U32 StatusControlRegisters; /* 0x28 */ 261265236Sken U32 TransferCount; /* 0x2C */ 262265236Sken} MPI2_SATA_PASSTHROUGH_REPLY, MPI2_POINTER PTR_MPI2_SATA_PASSTHROUGH_REPLY, 263265236Sken Mpi2SataPassthroughReply_t, MPI2_POINTER pMpi2SataPassthroughReply_t; 264265236Sken 265265236Sken/* values for SASStatus field are at the top of this file */ 266265236Sken 267265236Sken 268265236Sken/**************************************************************************** 269265236Sken* SAS IO Unit Control messages 270299263Sslm* (MPI v2.5 and earlier only. 271299263Sslm* Replaced by IO Unit Control messages in MPI v2.6 and later.) 272265236Sken****************************************************************************/ 273265236Sken 274265236Sken/* SAS IO Unit Control Request Message */ 275265236Skentypedef struct _MPI2_SAS_IOUNIT_CONTROL_REQUEST 276265236Sken{ 277265236Sken U8 Operation; /* 0x00 */ 278265236Sken U8 Reserved1; /* 0x01 */ 279265236Sken U8 ChainOffset; /* 0x02 */ 280265236Sken U8 Function; /* 0x03 */ 281265236Sken U16 DevHandle; /* 0x04 */ 282265236Sken U8 IOCParameter; /* 0x06 */ 283265236Sken U8 MsgFlags; /* 0x07 */ 284265236Sken U8 VP_ID; /* 0x08 */ 285265236Sken U8 VF_ID; /* 0x09 */ 286265236Sken U16 Reserved3; /* 0x0A */ 287265236Sken U16 Reserved4; /* 0x0C */ 288265236Sken U8 PhyNum; /* 0x0E */ 289265236Sken U8 PrimFlags; /* 0x0F */ 290265236Sken U32 Primitive; /* 0x10 */ 291265236Sken U8 LookupMethod; /* 0x14 */ 292265236Sken U8 Reserved5; /* 0x15 */ 293265236Sken U16 SlotNumber; /* 0x16 */ 294265236Sken U64 LookupAddress; /* 0x18 */ 295265236Sken U32 IOCParameterValue; /* 0x20 */ 296265236Sken U32 Reserved7; /* 0x24 */ 297265236Sken U32 Reserved8; /* 0x28 */ 298265236Sken} MPI2_SAS_IOUNIT_CONTROL_REQUEST, 299265236Sken MPI2_POINTER PTR_MPI2_SAS_IOUNIT_CONTROL_REQUEST, 300265236Sken Mpi2SasIoUnitControlRequest_t, MPI2_POINTER pMpi2SasIoUnitControlRequest_t; 301265236Sken 302265236Sken/* values for the Operation field */ 303265236Sken#define MPI2_SAS_OP_CLEAR_ALL_PERSISTENT (0x02) 304265236Sken#define MPI2_SAS_OP_PHY_LINK_RESET (0x06) 305265236Sken#define MPI2_SAS_OP_PHY_HARD_RESET (0x07) 306265236Sken#define MPI2_SAS_OP_PHY_CLEAR_ERROR_LOG (0x08) 307265236Sken#define MPI2_SAS_OP_SEND_PRIMITIVE (0x0A) 308265236Sken#define MPI2_SAS_OP_FORCE_FULL_DISCOVERY (0x0B) 309265236Sken#define MPI2_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C) /* MPI v2.0 only */ 310265236Sken#define MPI2_SAS_OP_REMOVE_DEVICE (0x0D) 311265236Sken#define MPI2_SAS_OP_LOOKUP_MAPPING (0x0E) 312265236Sken#define MPI2_SAS_OP_SET_IOC_PARAMETER (0x0F) 313265236Sken#define MPI25_SAS_OP_ENABLE_FP_DEVICE (0x10) 314265236Sken#define MPI25_SAS_OP_DISABLE_FP_DEVICE (0x11) 315265236Sken#define MPI25_SAS_OP_ENABLE_FP_ALL (0x12) 316265236Sken#define MPI25_SAS_OP_DISABLE_FP_ALL (0x13) 317265236Sken#define MPI2_SAS_OP_DEV_ENABLE_NCQ (0x14) 318265236Sken#define MPI2_SAS_OP_DEV_DISABLE_NCQ (0x15) 319265236Sken#define MPI2_SAS_OP_PRODUCT_SPECIFIC_MIN (0x80) 320265236Sken 321265236Sken/* values for the PrimFlags field */ 322265236Sken#define MPI2_SAS_PRIMFLAGS_SINGLE (0x08) 323265236Sken#define MPI2_SAS_PRIMFLAGS_TRIPLE (0x02) 324265236Sken#define MPI2_SAS_PRIMFLAGS_REDUNDANT (0x01) 325265236Sken 326265236Sken/* values for the LookupMethod field */ 327265236Sken#define MPI2_SAS_LOOKUP_METHOD_SAS_ADDRESS (0x01) 328265236Sken#define MPI2_SAS_LOOKUP_METHOD_SAS_ENCLOSURE_SLOT (0x02) 329265236Sken#define MPI2_SAS_LOOKUP_METHOD_SAS_DEVICE_NAME (0x03) 330265236Sken 331265236Sken 332265236Sken/* SAS IO Unit Control Reply Message */ 333265236Skentypedef struct _MPI2_SAS_IOUNIT_CONTROL_REPLY 334265236Sken{ 335265236Sken U8 Operation; /* 0x00 */ 336265236Sken U8 Reserved1; /* 0x01 */ 337265236Sken U8 MsgLength; /* 0x02 */ 338265236Sken U8 Function; /* 0x03 */ 339265236Sken U16 DevHandle; /* 0x04 */ 340265236Sken U8 IOCParameter; /* 0x06 */ 341265236Sken U8 MsgFlags; /* 0x07 */ 342265236Sken U8 VP_ID; /* 0x08 */ 343265236Sken U8 VF_ID; /* 0x09 */ 344265236Sken U16 Reserved3; /* 0x0A */ 345265236Sken U16 Reserved4; /* 0x0C */ 346265236Sken U16 IOCStatus; /* 0x0E */ 347265236Sken U32 IOCLogInfo; /* 0x10 */ 348265236Sken} MPI2_SAS_IOUNIT_CONTROL_REPLY, 349265236Sken MPI2_POINTER PTR_MPI2_SAS_IOUNIT_CONTROL_REPLY, 350265236Sken Mpi2SasIoUnitControlReply_t, MPI2_POINTER pMpi2SasIoUnitControlReply_t; 351265236Sken 352265236Sken 353265236Sken#endif 354265236Sken 355265236Sken 356