1*2d1d418eSSumit Saxena /* 2*2d1d418eSSumit Saxena * SPDX-License-Identifier: BSD-2-Clause 3*2d1d418eSSumit Saxena * 4*2d1d418eSSumit Saxena * Copyright (c) 2016-2023, Broadcom Inc. All rights reserved. 5*2d1d418eSSumit Saxena * Support: <fbsd-storage-driver.pdl@broadcom.com> 6*2d1d418eSSumit Saxena * 7*2d1d418eSSumit Saxena * Redistribution and use in source and binary forms, with or without 8*2d1d418eSSumit Saxena * modification, are permitted provided that the following conditions are 9*2d1d418eSSumit Saxena * met: 10*2d1d418eSSumit Saxena * 11*2d1d418eSSumit Saxena * 1. Redistributions of source code must retain the above copyright notice, 12*2d1d418eSSumit Saxena * this list of conditions and the following disclaimer. 13*2d1d418eSSumit Saxena * 2. Redistributions in binary form must reproduce the above copyright notice, 14*2d1d418eSSumit Saxena * this list of conditions and the following disclaimer in the documentation and/or other 15*2d1d418eSSumit Saxena * materials provided with the distribution. 16*2d1d418eSSumit Saxena * 3. Neither the name of the Broadcom Inc. nor the names of its contributors 17*2d1d418eSSumit Saxena * may be used to endorse or promote products derived from this software without 18*2d1d418eSSumit Saxena * specific prior written permission. 19*2d1d418eSSumit Saxena * 20*2d1d418eSSumit Saxena * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21*2d1d418eSSumit Saxena * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22*2d1d418eSSumit Saxena * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23*2d1d418eSSumit Saxena * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24*2d1d418eSSumit Saxena * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25*2d1d418eSSumit Saxena * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26*2d1d418eSSumit Saxena * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27*2d1d418eSSumit Saxena * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28*2d1d418eSSumit Saxena * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29*2d1d418eSSumit Saxena * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30*2d1d418eSSumit Saxena * POSSIBILITY OF SUCH DAMAGE. 31*2d1d418eSSumit Saxena * 32*2d1d418eSSumit Saxena * The views and conclusions contained in the software and documentation are 33*2d1d418eSSumit Saxena * those of the authors and should not be interpreted as representing 34*2d1d418eSSumit Saxena * official policies,either expressed or implied, of the FreeBSD Project. 35*2d1d418eSSumit Saxena * 36*2d1d418eSSumit Saxena * Mail to: Broadcom Inc 1320 Ridder Park Dr, San Jose, CA 95131 37*2d1d418eSSumit Saxena * 38*2d1d418eSSumit Saxena * Broadcom Inc. (Broadcom) MPI3MR Adapter FreeBSD 39*2d1d418eSSumit Saxena * 40*2d1d418eSSumit Saxena */ 41*2d1d418eSSumit Saxena 42*2d1d418eSSumit Saxena #ifndef MPI30_TARG_H 43*2d1d418eSSumit Saxena #define MPI30_TARG_H 1 44*2d1d418eSSumit Saxena 45*2d1d418eSSumit Saxena /***************************************************************************** 46*2d1d418eSSumit Saxena * Command Buffer Formats * 47*2d1d418eSSumit Saxena ****************************************************************************/ 48*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_SSP_CMD_BUFFER 49*2d1d418eSSumit Saxena { 50*2d1d418eSSumit Saxena U8 FrameType; /* 0x00 */ 51*2d1d418eSSumit Saxena U8 Reserved01; /* 0x01 */ 52*2d1d418eSSumit Saxena U16 InitiatorConnectionTag; /* 0x02 */ 53*2d1d418eSSumit Saxena U32 HashedSourceSASAddress; /* 0x04 */ 54*2d1d418eSSumit Saxena U16 Reserved08; /* 0x08 */ 55*2d1d418eSSumit Saxena U16 Flags; /* 0x0A */ 56*2d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 57*2d1d418eSSumit Saxena U16 Tag; /* 0x10 */ 58*2d1d418eSSumit Saxena U16 TargetPortTransferTag; /* 0x12 */ 59*2d1d418eSSumit Saxena U32 DataOffset; /* 0x14 */ 60*2d1d418eSSumit Saxena U8 LogicalUnitNumber[8]; /* 0x18 */ 61*2d1d418eSSumit Saxena U8 Reserved20; /* 0x20 */ 62*2d1d418eSSumit Saxena U8 TaskAttribute; /* 0x21 */ 63*2d1d418eSSumit Saxena U8 Reserved22; /* 0x22 */ 64*2d1d418eSSumit Saxena U8 AdditionalCDBLength; /* 0x23 */ 65*2d1d418eSSumit Saxena U8 CDB[16]; /* 0x24 */ 66*2d1d418eSSumit Saxena /* AdditionalCDBBytes field starts here */ /* 0x34 */ 67*2d1d418eSSumit Saxena } MPI3_TARGET_SSP_CMD_BUFFER, MPI3_POINTER PTR_MPI3_TARGET_SSP_CMD_BUFFER, 68*2d1d418eSSumit Saxena Mpi3TargetSspCmdBuffer_t, MPI3_POINTER pMpi3TargetSspCmdBuffer_t; 69*2d1d418eSSumit Saxena 70*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_SSP_TASK_BUFFER 71*2d1d418eSSumit Saxena { 72*2d1d418eSSumit Saxena U8 FrameType; /* 0x00 */ 73*2d1d418eSSumit Saxena U8 Reserved01; /* 0x01 */ 74*2d1d418eSSumit Saxena U16 InitiatorConnectionTag; /* 0x02 */ 75*2d1d418eSSumit Saxena U32 HashedSourceSASAddress; /* 0x04 */ 76*2d1d418eSSumit Saxena U16 Reserved08; /* 0x08 */ 77*2d1d418eSSumit Saxena U16 Flags; /* 0x0A */ 78*2d1d418eSSumit Saxena U32 Reserved0C; /* 0x0C */ 79*2d1d418eSSumit Saxena U16 Tag; /* 0x10 */ 80*2d1d418eSSumit Saxena U16 TargetPortTransferTag; /* 0x12 */ 81*2d1d418eSSumit Saxena U32 DataOffset; /* 0x14 */ 82*2d1d418eSSumit Saxena U8 LogicalUnitNumber[8]; /* 0x18 */ 83*2d1d418eSSumit Saxena U16 Reserved20; /* 0x20 */ 84*2d1d418eSSumit Saxena U8 TaskManagementFunction; /* 0x22 */ 85*2d1d418eSSumit Saxena U8 Reserved23; /* 0x23 */ 86*2d1d418eSSumit Saxena U16 ManagedTaskTag; /* 0x24 */ 87*2d1d418eSSumit Saxena U16 Reserved26; /* 0x26 */ 88*2d1d418eSSumit Saxena U32 Reserved28[3]; /* 0x28 */ 89*2d1d418eSSumit Saxena } MPI3_TARGET_SSP_TASK_BUFFER, MPI3_POINTER PTR_MPI3_TARGET_SSP_TASK_BUFFER, 90*2d1d418eSSumit Saxena Mpi3TargetSspTaskBuffer_t, MPI3_POINTER pMpi3TargetSspTaskBuffer_t; 91*2d1d418eSSumit Saxena 92*2d1d418eSSumit Saxena /**** Defines for the FrameType field ****/ 93*2d1d418eSSumit Saxena #define MPI3_TARGET_FRAME_TYPE_COMMAND (0x06) 94*2d1d418eSSumit Saxena #define MPI3_TARGET_FRAME_TYPE_TASK (0x16) 95*2d1d418eSSumit Saxena 96*2d1d418eSSumit Saxena /**** Defines for the HashedSourceSASAddress field ****/ 97*2d1d418eSSumit Saxena #define MPI3_TARGET_HASHED_SAS_ADDRESS_MASK (0xFFFFFF00) 98*2d1d418eSSumit Saxena #define MPI3_TARGET_HASHED_SAS_ADDRESS_SHIFT (8) 99*2d1d418eSSumit Saxena 100*2d1d418eSSumit Saxena 101*2d1d418eSSumit Saxena /***************************************************************************** 102*2d1d418eSSumit Saxena * Target Command Buffer Post Base Request Message * 103*2d1d418eSSumit Saxena ****************************************************************************/ 104*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_CMD_BUF_POST_BASE_REQUEST 105*2d1d418eSSumit Saxena { 106*2d1d418eSSumit Saxena U16 HostTag; /* 0x00 */ 107*2d1d418eSSumit Saxena U8 IOCUseOnly02; /* 0x02 */ 108*2d1d418eSSumit Saxena U8 Function; /* 0x03 */ 109*2d1d418eSSumit Saxena U16 IOCUseOnly04; /* 0x04 */ 110*2d1d418eSSumit Saxena U8 IOCUseOnly06; /* 0x06 */ 111*2d1d418eSSumit Saxena U8 MsgFlags; /* 0x07 */ 112*2d1d418eSSumit Saxena U16 ChangeCount; /* 0x08 */ 113*2d1d418eSSumit Saxena U8 BufferPostFlags; /* 0x0A */ 114*2d1d418eSSumit Saxena U8 Reserved0B; /* 0x0B */ 115*2d1d418eSSumit Saxena U16 MinReplyQueueID; /* 0x0C */ 116*2d1d418eSSumit Saxena U16 MaxReplyQueueID; /* 0x0E */ 117*2d1d418eSSumit Saxena U64 BaseAddress; /* 0x10 */ 118*2d1d418eSSumit Saxena U16 CmdBufferLength; /* 0x18 */ 119*2d1d418eSSumit Saxena U16 TotalCmdBuffers; /* 0x1A */ 120*2d1d418eSSumit Saxena U32 Reserved1C; /* 0x1C */ 121*2d1d418eSSumit Saxena } MPI3_TARGET_CMD_BUF_POST_BASE_REQUEST, MPI3_POINTER PTR_MPI3_TARGET_CMD_BUF_POST_BASE_REQUEST, 122*2d1d418eSSumit Saxena Mpi3TargetCmdBufPostBaseRequest_t, MPI3_POINTER pMpi3TargetCmdBufPostBaseRequest_t; 123*2d1d418eSSumit Saxena 124*2d1d418eSSumit Saxena /**** Defines for the BufferPostFlags field ****/ 125*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_FLAGS_DLAS_MASK (0x0C) 126*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_FLAGS_DLAS_SYSTEM (0x00) 127*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_FLAGS_DLAS_IOCUDP (0x04) 128*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_FLAGS_DLAS_IOCCTL (0x08) 129*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_FLAGS_AUTO_POST_ALL (0x01) 130*2d1d418eSSumit Saxena 131*2d1d418eSSumit Saxena /**** Defines for the CmdBufferLength field ****/ 132*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_MIN_BUF_LENGTH (0x34) 133*2d1d418eSSumit Saxena #define MPI3_CMD_BUF_POST_BASE_MAX_BUF_LENGTH (0x3FC) 134*2d1d418eSSumit Saxena 135*2d1d418eSSumit Saxena /***************************************************************************** 136*2d1d418eSSumit Saxena * Target Command Buffer Post List Request Message * 137*2d1d418eSSumit Saxena ****************************************************************************/ 138*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_CMD_BUF_POST_LIST_REQUEST 139*2d1d418eSSumit Saxena { 140*2d1d418eSSumit Saxena U16 HostTag; /* 0x00 */ 141*2d1d418eSSumit Saxena U8 IOCUseOnly02; /* 0x02 */ 142*2d1d418eSSumit Saxena U8 Function; /* 0x03 */ 143*2d1d418eSSumit Saxena U16 IOCUseOnly04; /* 0x04 */ 144*2d1d418eSSumit Saxena U8 IOCUseOnly06; /* 0x06 */ 145*2d1d418eSSumit Saxena U8 MsgFlags; /* 0x07 */ 146*2d1d418eSSumit Saxena U16 ChangeCount; /* 0x08 */ 147*2d1d418eSSumit Saxena U16 Reserved0A; /* 0x0A */ 148*2d1d418eSSumit Saxena U8 CmdBufferCount; /* 0x0C */ 149*2d1d418eSSumit Saxena U8 Reserved0D[3]; /* 0x0D */ 150*2d1d418eSSumit Saxena U16 IoIndex[2]; /* 0x10 */ 151*2d1d418eSSumit Saxena } MPI3_TARGET_CMD_BUF_POST_LIST_REQUEST, MPI3_POINTER PTR_MPI3_TARGET_CMD_BUF_POST_LIST_REQUEST, 152*2d1d418eSSumit Saxena Mpi3TargetCmdBufPostListRequest_t, MPI3_POINTER pMpi3TargetCmdBufPostListRequest_t; 153*2d1d418eSSumit Saxena 154*2d1d418eSSumit Saxena 155*2d1d418eSSumit Saxena /***************************************************************************** 156*2d1d418eSSumit Saxena * Target Command Buffer Post Base List Reply Message * 157*2d1d418eSSumit Saxena ****************************************************************************/ 158*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_CMD_BUF_POST_REPLY 159*2d1d418eSSumit Saxena { 160*2d1d418eSSumit Saxena U16 HostTag; /* 0x00 */ 161*2d1d418eSSumit Saxena U8 IOCUseOnly02; /* 0x02 */ 162*2d1d418eSSumit Saxena U8 Function; /* 0x03 */ 163*2d1d418eSSumit Saxena U16 IOCUseOnly04; /* 0x04 */ 164*2d1d418eSSumit Saxena U8 IOCUseOnly06; /* 0x06 */ 165*2d1d418eSSumit Saxena U8 MsgFlags; /* 0x07 */ 166*2d1d418eSSumit Saxena U16 IOCUseOnly08; /* 0x08 */ 167*2d1d418eSSumit Saxena U16 IOCStatus; /* 0x0A */ 168*2d1d418eSSumit Saxena U32 IOCLogInfo; /* 0x0C */ 169*2d1d418eSSumit Saxena U8 CmdBufferCount; /* 0x10 */ 170*2d1d418eSSumit Saxena U8 Reserved11[3]; /* 0x11 */ 171*2d1d418eSSumit Saxena U16 IoIndex[2]; /* 0x14 */ 172*2d1d418eSSumit Saxena } MPI3_TARGET_CMD_BUF_POST_REPLY, MPI3_POINTER PTR_MPI3_TARGET_CMD_BUF_POST_REPLY, 173*2d1d418eSSumit Saxena Mpi3TargetCmdBufPostReply_t, MPI3_POINTER pMpi3TargetCmdBufPostReply_t; 174*2d1d418eSSumit Saxena 175*2d1d418eSSumit Saxena 176*2d1d418eSSumit Saxena /***************************************************************************** 177*2d1d418eSSumit Saxena * Target Assist Request Message * 178*2d1d418eSSumit Saxena ****************************************************************************/ 179*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_ASSIST_REQUEST 180*2d1d418eSSumit Saxena { 181*2d1d418eSSumit Saxena U16 HostTag; /* 0x00 */ 182*2d1d418eSSumit Saxena U8 IOCUseOnly02; /* 0x02 */ 183*2d1d418eSSumit Saxena U8 Function; /* 0x03 */ 184*2d1d418eSSumit Saxena U16 IOCUseOnly04; /* 0x04 */ 185*2d1d418eSSumit Saxena U8 IOCUseOnly06; /* 0x06 */ 186*2d1d418eSSumit Saxena U8 MsgFlags; /* 0x07 */ 187*2d1d418eSSumit Saxena U16 ChangeCount; /* 0x08 */ 188*2d1d418eSSumit Saxena U16 DevHandle; /* 0x0A */ 189*2d1d418eSSumit Saxena U32 Flags; /* 0x0C */ 190*2d1d418eSSumit Saxena U16 Reserved10; /* 0x10 */ 191*2d1d418eSSumit Saxena U16 QueueTag; /* 0x12 */ 192*2d1d418eSSumit Saxena U16 IoIndex; /* 0x14 */ 193*2d1d418eSSumit Saxena U16 InitiatorConnectionTag; /* 0x16 */ 194*2d1d418eSSumit Saxena U32 SkipCount; /* 0x18 */ 195*2d1d418eSSumit Saxena U32 DataLength; /* 0x1C */ 196*2d1d418eSSumit Saxena U32 PortTransferLength; /* 0x20 */ 197*2d1d418eSSumit Saxena U32 PrimaryReferenceTag; /* 0x24 */ 198*2d1d418eSSumit Saxena U16 PrimaryApplicationTag; /* 0x28 */ 199*2d1d418eSSumit Saxena U16 PrimaryApplicationTagMask; /* 0x2A */ 200*2d1d418eSSumit Saxena U32 RelativeOffset; /* 0x2C */ 201*2d1d418eSSumit Saxena MPI3_SGE_UNION SGL[5]; /* 0x30 */ 202*2d1d418eSSumit Saxena } MPI3_TARGET_ASSIST_REQUEST, MPI3_POINTER PTR_MPI3_TARGET_ASSIST_REQUEST, 203*2d1d418eSSumit Saxena Mpi3TargetAssistRequest_t, MPI3_POINTER pMpi3TargetAssistRequest_t; 204*2d1d418eSSumit Saxena 205*2d1d418eSSumit Saxena /**** Defines for the MsgFlags field ****/ 206*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_MSGFLAGS_METASGL_VALID (0x80) 207*2d1d418eSSumit Saxena 208*2d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 209*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_REPOST_CMD_BUFFER (0x00200000) 210*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_AUTO_STATUS (0x00100000) 211*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_DATADIRECTION_MASK (0x000C0000) 212*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_DATADIRECTION_WRITE (0x00040000) 213*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_DATADIRECTION_READ (0x00080000) 214*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_DMAOPERATION_MASK (0x00030000) 215*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_FLAGS_DMAOPERATION_HOST_PI (0x00010000) 216*2d1d418eSSumit Saxena 217*2d1d418eSSumit Saxena /**** Defines for the SGL field ****/ 218*2d1d418eSSumit Saxena #define MPI3_TARGET_ASSIST_METASGL_INDEX (4) 219*2d1d418eSSumit Saxena 220*2d1d418eSSumit Saxena /***************************************************************************** 221*2d1d418eSSumit Saxena * Target Status Send Request Message * 222*2d1d418eSSumit Saxena ****************************************************************************/ 223*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_STATUS_SEND_REQUEST 224*2d1d418eSSumit Saxena { 225*2d1d418eSSumit Saxena U16 HostTag; /* 0x00 */ 226*2d1d418eSSumit Saxena U8 IOCUseOnly02; /* 0x02 */ 227*2d1d418eSSumit Saxena U8 Function; /* 0x03 */ 228*2d1d418eSSumit Saxena U16 IOCUseOnly04; /* 0x04 */ 229*2d1d418eSSumit Saxena U8 IOCUseOnly06; /* 0x06 */ 230*2d1d418eSSumit Saxena U8 MsgFlags; /* 0x07 */ 231*2d1d418eSSumit Saxena U16 ChangeCount; /* 0x08 */ 232*2d1d418eSSumit Saxena U16 DevHandle; /* 0x0A */ 233*2d1d418eSSumit Saxena U16 ResponseIULength; /* 0x0C */ 234*2d1d418eSSumit Saxena U16 Flags; /* 0x0E */ 235*2d1d418eSSumit Saxena U16 Reserved10; /* 0x10 */ 236*2d1d418eSSumit Saxena U16 QueueTag; /* 0x12 */ 237*2d1d418eSSumit Saxena U16 IoIndex; /* 0x14 */ 238*2d1d418eSSumit Saxena U16 InitiatorConnectionTag; /* 0x16 */ 239*2d1d418eSSumit Saxena U32 IOCUseOnly18[6]; /* 0x18 */ 240*2d1d418eSSumit Saxena U32 IOCUseOnly30[4]; /* 0x30 */ 241*2d1d418eSSumit Saxena MPI3_SGE_UNION SGL; /* 0x40 */ 242*2d1d418eSSumit Saxena } MPI3_TARGET_STATUS_SEND_REQUEST, MPI3_POINTER PTR_MPI3_TARGET_STATUS_SEND_REQUEST, 243*2d1d418eSSumit Saxena Mpi3TargetStatusSendRequest_t, MPI3_POINTER pMpi3TargetStatusSendRequest_t; 244*2d1d418eSSumit Saxena 245*2d1d418eSSumit Saxena /**** Defines for the Flags field ****/ 246*2d1d418eSSumit Saxena #define MPI3_TSS_FLAGS_REPOST_CMD_BUFFER (0x0020) 247*2d1d418eSSumit Saxena #define MPI3_TSS_FLAGS_AUTO_SEND_GOOD_STATUS (0x0010) 248*2d1d418eSSumit Saxena 249*2d1d418eSSumit Saxena 250*2d1d418eSSumit Saxena /***************************************************************************** 251*2d1d418eSSumit Saxena * Standard Target Mode Reply Message * 252*2d1d418eSSumit Saxena ****************************************************************************/ 253*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_STANDARD_REPLY 254*2d1d418eSSumit Saxena { 255*2d1d418eSSumit Saxena U16 HostTag; /* 0x00 */ 256*2d1d418eSSumit Saxena U8 IOCUseOnly02; /* 0x02 */ 257*2d1d418eSSumit Saxena U8 Function; /* 0x03 */ 258*2d1d418eSSumit Saxena U16 IOCUseOnly04; /* 0x04 */ 259*2d1d418eSSumit Saxena U8 IOCUseOnly06; /* 0x06 */ 260*2d1d418eSSumit Saxena U8 MsgFlags; /* 0x07 */ 261*2d1d418eSSumit Saxena U16 IOCUseOnly08; /* 0x08 */ 262*2d1d418eSSumit Saxena U16 IOCStatus; /* 0x0A */ 263*2d1d418eSSumit Saxena U32 IOCLogInfo; /* 0x0C */ 264*2d1d418eSSumit Saxena U32 TransferCount; /* 0x10 */ 265*2d1d418eSSumit Saxena } MPI3_TARGET_STANDARD_REPLY, MPI3_POINTER PTR_MPI3_TARGET_STANDARD_REPLY, 266*2d1d418eSSumit Saxena Mpi3TargetStandardReply_t, MPI3_POINTER pMpi3TargetStandardReply_t; 267*2d1d418eSSumit Saxena 268*2d1d418eSSumit Saxena 269*2d1d418eSSumit Saxena /***************************************************************************** 270*2d1d418eSSumit Saxena * Target Mode Abort Request Message * 271*2d1d418eSSumit Saxena ****************************************************************************/ 272*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_MODE_ABORT_REQUEST 273*2d1d418eSSumit Saxena { 274*2d1d418eSSumit Saxena U16 HostTag; /* 0x00 */ 275*2d1d418eSSumit Saxena U8 IOCUseOnly02; /* 0x02 */ 276*2d1d418eSSumit Saxena U8 Function; /* 0x03 */ 277*2d1d418eSSumit Saxena U16 IOCUseOnly04; /* 0x04 */ 278*2d1d418eSSumit Saxena U8 IOCUseOnly06; /* 0x06 */ 279*2d1d418eSSumit Saxena U8 MsgFlags; /* 0x07 */ 280*2d1d418eSSumit Saxena U16 ChangeCount; /* 0x08 */ 281*2d1d418eSSumit Saxena U8 AbortType; /* 0x0A */ 282*2d1d418eSSumit Saxena U8 Reserved0B; /* 0x0B */ 283*2d1d418eSSumit Saxena U16 RequestQueueIDToAbort; /* 0x0C */ 284*2d1d418eSSumit Saxena U16 HostTagToAbort; /* 0x0E */ 285*2d1d418eSSumit Saxena U16 DevHandle; /* 0x10 */ 286*2d1d418eSSumit Saxena U8 IOCUseOnly12; /* 0x12 */ 287*2d1d418eSSumit Saxena U8 Reserved13; /* 0x13 */ 288*2d1d418eSSumit Saxena } MPI3_TARGET_MODE_ABORT_REQUEST, MPI3_POINTER PTR_MPI3_TARGET_MODE_ABORT_REQUEST, 289*2d1d418eSSumit Saxena Mpi3TargetModeAbortRequest_t, MPI3_POINTER pMpi3TargetModeAbortRequest_t; 290*2d1d418eSSumit Saxena 291*2d1d418eSSumit Saxena /**** Defines for the AbortType field ****/ 292*2d1d418eSSumit Saxena #define MPI3_TARGET_MODE_ABORT_ALL_CMD_BUFFERS (0x00) 293*2d1d418eSSumit Saxena #define MPI3_TARGET_MODE_ABORT_EXACT_IO_REQUEST (0x01) 294*2d1d418eSSumit Saxena #define MPI3_TARGET_MODE_ABORT_ALL_COMMANDS (0x02) 295*2d1d418eSSumit Saxena 296*2d1d418eSSumit Saxena 297*2d1d418eSSumit Saxena /***************************************************************************** 298*2d1d418eSSumit Saxena * Target Mode Abort Reply Message * 299*2d1d418eSSumit Saxena ****************************************************************************/ 300*2d1d418eSSumit Saxena typedef struct _MPI3_TARGET_MODE_ABORT_REPLY 301*2d1d418eSSumit Saxena { 302*2d1d418eSSumit Saxena U16 HostTag; /* 0x00 */ 303*2d1d418eSSumit Saxena U8 IOCUseOnly02; /* 0x02 */ 304*2d1d418eSSumit Saxena U8 Function; /* 0x03 */ 305*2d1d418eSSumit Saxena U16 IOCUseOnly04; /* 0x04 */ 306*2d1d418eSSumit Saxena U8 IOCUseOnly06; /* 0x06 */ 307*2d1d418eSSumit Saxena U8 MsgFlags; /* 0x07 */ 308*2d1d418eSSumit Saxena U16 IOCUseOnly08; /* 0x08 */ 309*2d1d418eSSumit Saxena U16 IOCStatus; /* 0x0A */ 310*2d1d418eSSumit Saxena U32 IOCLogInfo; /* 0x0C */ 311*2d1d418eSSumit Saxena U32 AbortCount; /* 0x10 */ 312*2d1d418eSSumit Saxena } MPI3_TARGET_MODE_ABORT_REPLY, MPI3_POINTER PTR_MPI3_TARGET_MODE_ABORT_REPLY, 313*2d1d418eSSumit Saxena Mpi3TargetModeAbortReply_t, MPI3_POINTER pMpi3TargetModeAbortReply_t; 314*2d1d418eSSumit Saxena 315*2d1d418eSSumit Saxena #endif /* MPI30_TARG_H */ 316*2d1d418eSSumit Saxena 317