Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | /* * Copyright (c) 2001-2002 LSI Logic Corporation. * * * Name: MPI_RAID.H * Title: MPI RAID message and structures * Creation Date: February 27, 2001 * * MPI_RAID.H Version: 01.02.07 * * Version History * --------------- * * Date Version Description * -------- -------- ------------------------------------------------------ * 02-27-01 01.01.01 Original release for this file. * 03-27-01 01.01.02 Added structure offset comments. * 08-08-01 01.02.01 Original release for v1.2 work. * 09-28-01 01.02.02 Major rework for MPI v1.2 Integrated RAID changes. * 10-04-01 01.02.03 Added ActionData defines for * MPI_RAID_ACTION_DELETE_VOLUME action. * 11-01-01 01.02.04 Added define for MPI_RAID_ACTION_ADATA_DO_NOT_SYNC. * 03-14-02 01.02.05 Added define for MPI_RAID_ACTION_ADATA_LOW_LEVEL_INIT. * 05-07-02 01.02.06 Added define for MPI_RAID_ACTION_ACTIVATE_VOLUME, * MPI_RAID_ACTION_INACTIVATE_VOLUME, and * MPI_RAID_ACTION_ADATA_INACTIVATE_ALL. * 07-12-02 01.02.07 Added structures for Mailbox request and reply. * -------------------------------------------------------------------------- */ #ifndef MPI_RAID_H #define MPI_RAID_H /****************************************************************************** * * R A I D M e s s a g e s * *******************************************************************************/ /****************************************************************************/ /* RAID Volume Request */ /****************************************************************************/ typedef struct _MSG_RAID_ACTION { U8 Action; /* 00h */ U8 Reserved1; /* 01h */ U8 ChainOffset; /* 02h */ U8 Function; /* 03h */ U8 VolumeID; /* 04h */ U8 VolumeBus; /* 05h */ U8 PhysDiskNum; /* 06h */ U8 MsgFlags; /* 07h */ U32 MsgContext; /* 08h */ U32 Reserved2; /* 0Ch */ U32 ActionDataWord; /* 10h */ SGE_SIMPLE_UNION ActionDataSGE; /* 14h */ } MSG_RAID_ACTION_REQUEST, MPI_POINTER PTR_MSG_RAID_ACTION_REQUEST, MpiRaidActionRequest_t , MPI_POINTER pMpiRaidActionRequest_t; /* RAID Action request Action values */ #define MPI_RAID_ACTION_STATUS (0x00) #define MPI_RAID_ACTION_INDICATOR_STRUCT (0x01) #define MPI_RAID_ACTION_CREATE_VOLUME (0x02) #define MPI_RAID_ACTION_DELETE_VOLUME (0x03) #define MPI_RAID_ACTION_DISABLE_VOLUME (0x04) #define MPI_RAID_ACTION_ENABLE_VOLUME (0x05) #define MPI_RAID_ACTION_QUIESCE_PHYS_IO (0x06) #define MPI_RAID_ACTION_ENABLE_PHYS_IO (0x07) #define MPI_RAID_ACTION_CHANGE_VOLUME_SETTINGS (0x08) #define MPI_RAID_ACTION_PHYSDISK_OFFLINE (0x0A) #define MPI_RAID_ACTION_PHYSDISK_ONLINE (0x0B) #define MPI_RAID_ACTION_CHANGE_PHYSDISK_SETTINGS (0x0C) #define MPI_RAID_ACTION_CREATE_PHYSDISK (0x0D) #define MPI_RAID_ACTION_DELETE_PHYSDISK (0x0E) #define MPI_RAID_ACTION_FAIL_PHYSDISK (0x0F) #define MPI_RAID_ACTION_REPLACE_PHYSDISK (0x10) #define MPI_RAID_ACTION_ACTIVATE_VOLUME (0x11) #define MPI_RAID_ACTION_INACTIVATE_VOLUME (0x12) /* ActionDataWord defines for use with MPI_RAID_ACTION_CREATE_VOLUME action */ #define MPI_RAID_ACTION_ADATA_DO_NOT_SYNC (0x00000001) #define MPI_RAID_ACTION_ADATA_LOW_LEVEL_INIT (0x00000002) /* ActionDataWord defines for use with MPI_RAID_ACTION_DELETE_VOLUME action */ #define MPI_RAID_ACTION_ADATA_KEEP_PHYS_DISKS (0x00000000) #define MPI_RAID_ACTION_ADATA_DEL_PHYS_DISKS (0x00000001) /* ActionDataWord defines for use with MPI_RAID_ACTION_ACTIVATE_VOLUME action */ #define MPI_RAID_ACTION_ADATA_INACTIVATE_ALL (0x00000001) /* RAID Action reply message */ typedef struct _MSG_RAID_ACTION_REPLY { U8 Action; /* 00h */ U8 Reserved; /* 01h */ U8 MsgLength; /* 02h */ U8 Function; /* 03h */ U8 VolumeID; /* 04h */ U8 VolumeBus; /* 05h */ U8 PhysDiskNum; /* 06h */ U8 MsgFlags; /* 07h */ U32 MsgContext; /* 08h */ U16 ActionStatus; /* 0Ch */ U16 IOCStatus; /* 0Eh */ U32 IOCLogInfo; /* 10h */ U32 VolumeStatus; /* 14h */ U32 ActionData; /* 18h */ } MSG_RAID_ACTION_REPLY, MPI_POINTER PTR_MSG_RAID_ACTION_REPLY, MpiRaidActionReply_t, MPI_POINTER pMpiRaidActionReply_t; /* RAID Volume reply ActionStatus values */ #define MPI_RAID_ACTION_ASTATUS_SUCCESS (0x0000) #define MPI_RAID_ACTION_ASTATUS_INVALID_ACTION (0x0001) #define MPI_RAID_ACTION_ASTATUS_FAILURE (0x0002) #define MPI_RAID_ACTION_ASTATUS_IN_PROGRESS (0x0003) /* RAID Volume reply RAID Volume Indicator structure */ typedef struct _MPI_RAID_VOL_INDICATOR { U64 TotalBlocks; /* 00h */ U64 BlocksRemaining; /* 08h */ } MPI_RAID_VOL_INDICATOR, MPI_POINTER PTR_MPI_RAID_VOL_INDICATOR, MpiRaidVolIndicator_t, MPI_POINTER pMpiRaidVolIndicator_t; /****************************************************************************/ /* SCSI IO RAID Passthrough Request */ /****************************************************************************/ typedef struct _MSG_SCSI_IO_RAID_PT_REQUEST { U8 PhysDiskNum; /* 00h */ U8 Reserved1; /* 01h */ U8 ChainOffset; /* 02h */ U8 Function; /* 03h */ U8 CDBLength; /* 04h */ U8 SenseBufferLength; /* 05h */ U8 Reserved2; /* 06h */ U8 MsgFlags; /* 07h */ U32 MsgContext; /* 08h */ U8 LUN[8]; /* 0Ch */ U32 Control; /* 14h */ U8 CDB[16]; /* 18h */ U32 DataLength; /* 28h */ U32 SenseBufferLowAddr; /* 2Ch */ SGE_IO_UNION SGL; /* 30h */ } MSG_SCSI_IO_RAID_PT_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO_RAID_PT_REQUEST, SCSIIORaidPassthroughRequest_t, MPI_POINTER pSCSIIORaidPassthroughRequest_t; /* SCSI IO RAID Passthrough reply structure */ typedef struct _MSG_SCSI_IO_RAID_PT_REPLY { U8 PhysDiskNum; /* 00h */ U8 Reserved1; /* 01h */ U8 MsgLength; /* 02h */ U8 Function; /* 03h */ U8 CDBLength; /* 04h */ U8 SenseBufferLength; /* 05h */ U8 Reserved2; /* 06h */ U8 MsgFlags; /* 07h */ U32 MsgContext; /* 08h */ U8 SCSIStatus; /* 0Ch */ U8 SCSIState; /* 0Dh */ U16 IOCStatus; /* 0Eh */ U32 IOCLogInfo; /* 10h */ U32 TransferCount; /* 14h */ U32 SenseCount; /* 18h */ U32 ResponseInfo; /* 1Ch */ } MSG_SCSI_IO_RAID_PT_REPLY, MPI_POINTER PTR_MSG_SCSI_IO_RAID_PT_REPLY, SCSIIORaidPassthroughReply_t, MPI_POINTER pSCSIIORaidPassthroughReply_t; /****************************************************************************/ /* Mailbox request structure */ /****************************************************************************/ typedef struct _MSG_MAILBOX_REQUEST { U16 Reserved1; U8 ChainOffset; U8 Function; U16 Reserved2; U8 Reserved3; U8 MsgFlags; U8 Command[10]; U16 Reserved4; SGE_IO_UNION SGL; } MSG_MAILBOX_REQUEST, MPI_POINTER PTR_MSG_MAILBOX_REQUEST, MailboxRequest_t, MPI_POINTER pMailboxRequest_t; /* Mailbox reply structure */ typedef struct _MSG_MAILBOX_REPLY { U16 Reserved1; /* 00h */ U8 MsgLength; /* 02h */ U8 Function; /* 03h */ U16 Reserved2; /* 04h */ U8 Reserved3; /* 06h */ U8 MsgFlags; /* 07h */ U32 MsgContext; /* 08h */ U16 MailboxStatus; /* 0Ch */ U16 IOCStatus; /* 0Eh */ U32 IOCLogInfo; /* 10h */ U32 Reserved4; /* 14h */ } MSG_MAILBOX_REPLY, MPI_POINTER PTR_MSG_MAILBOX_REPLY, MailboxReply_t, MPI_POINTER pMailboxReply_t; #endif |