megaraid_sas_fusion.h revision 9c915a8c99bce637226aa09cb05fc18486b229cb
19c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* 29c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Linux MegaRAID driver for SAS based RAID controllers 39c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * 49c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Copyright (c) 2009-2011 LSI Corporation. 59c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * 69c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * This program is free software; you can redistribute it and/or 79c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * modify it under the terms of the GNU General Public License 89c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * as published by the Free Software Foundation; either version 2 99c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * of the License, or (at your option) any later version. 109c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * 119c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * This program is distributed in the hope that it will be useful, 129c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * but WITHOUT ANY WARRANTY; without even the implied warranty of 139c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 149c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * GNU General Public License for more details. 159c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * 169c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * You should have received a copy of the GNU General Public License 179c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * along with this program; if not, write to the Free Software 189c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 199c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * 209c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * FILE: megaraid_sas_fusion.h 219c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * 229c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Authors: LSI Corporation 239c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Manoj Jose 249c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Sumant Patro 259c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * 269c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Send feedback to: <megaraidlinux@lsi.com> 279c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * 289c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Mail to: LSI Corporation, 1621 Barber Lane, Milpitas, CA 95035 299c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * ATTN: Linuxraid 309c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford */ 319c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 329c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#ifndef _MEGARAID_SAS_FUSION_H_ 339c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define _MEGARAID_SAS_FUSION_H_ 349c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 359c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* Fusion defines */ 369c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_MAX_SZ_CHAIN_FRAME 1024 379c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MFI_FUSION_ENABLE_INTERRUPT_MASK (0x00000009) 389c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE 256 399c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_MPI2_FUNCTION_PASSTHRU_IO_REQUEST 0xF0 409c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_MPI2_FUNCTION_LD_IO_REQUEST 0xF1 419c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_LOAD_BALANCE_FLAG 0x1 429c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_DCMD_MBOX_PEND_FLAG 0x1 439c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define HOST_DIAG_WRITE_ENABLE 0x80 449c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define HOST_DIAG_RESET_ADAPTER 0x4 459c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_FUSION_MAX_RESET_TRIES 3 469c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 479c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* T10 PI defines */ 489c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MR_PROT_INFO_TYPE_CONTROLLER 0x8 499c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_SCSI_VARIABLE_LENGTH_CMD 0x7f 509c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_SCSI_SERVICE_ACTION_READ32 0x9 519c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_SCSI_SERVICE_ACTION_WRITE32 0xB 529c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_SCSI_ADDL_CDB_LEN 0x18 539c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_RD_WR_PROTECT_CHECK_ALL 0x20 549c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_RD_WR_PROTECT_CHECK_NONE 0x60 559c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_EEDPBLOCKSIZE 512 569c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 579c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* 589c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Raid context flags 599c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford */ 609c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 619c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT 0x4 629c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_MASK 0x30 639c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordenum MR_RAID_FLAGS_IO_SUB_TYPE { 649c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford MR_RAID_FLAGS_IO_SUB_TYPE_NONE = 0, 659c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford MR_RAID_FLAGS_IO_SUB_TYPE_SYSTEM_PD = 1, 669c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 679c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 689c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* 699c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Request descriptor types 709c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford */ 719c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_REQ_DESCRIPT_FLAGS_LD_IO 0x7 729c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_REQ_DESCRIPT_FLAGS_MFA 0x1 739c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 749c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT 1 759c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 769c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_FP_CMD_LEN 16 779c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MEGASAS_FUSION_IN_RESET 0 789c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 799c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* 809c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Raid Context structure which describes MegaRAID specific IO Paramenters 819c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * This resides at offset 0x60 where the SGL normally starts in MPT IO Frames 829c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford */ 839c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 849c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct RAID_CONTEXT { 859c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 resvd0; 869c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 timeoutValue; 879c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 regLockFlags; 889c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 resvd1; 899c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 VirtualDiskTgtId; 909c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 regLockRowLBA; 919c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 regLockLength; 929c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 nextLMId; 939c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 exStatus; 949c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 status; 959c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 RAIDFlags; 969c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 numSGE; 979c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 configSeqNum; 989c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 spanArm; 999c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 resvd2[3]; 1009c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 1019c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 1029c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define RAID_CTX_SPANARM_ARM_SHIFT (0) 1039c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define RAID_CTX_SPANARM_ARM_MASK (0x1f) 1049c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 1059c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define RAID_CTX_SPANARM_SPAN_SHIFT (5) 1069c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define RAID_CTX_SPANARM_SPAN_MASK (0xE0) 1079c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 1089c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* 1099c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * define region lock types 1109c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford */ 1119c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordenum REGION_TYPE { 1129c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford REGION_TYPE_UNUSED = 0, 1139c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford REGION_TYPE_SHARED_READ = 1, 1149c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford REGION_TYPE_SHARED_WRITE = 2, 1159c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford REGION_TYPE_EXCLUSIVE = 3, 1169c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 1179c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 1189c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* MPI2 defines */ 1199c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_FUNCTION_IOC_INIT (0x02) /* IOC Init */ 1209c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_WHOINIT_HOST_DRIVER (0x04) 1219c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_VERSION_MAJOR (0x02) 1229c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_VERSION_MINOR (0x00) 1239c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_VERSION_MAJOR_MASK (0xFF00) 1249c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_VERSION_MAJOR_SHIFT (8) 1259c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_VERSION_MINOR_MASK (0x00FF) 1269c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_VERSION_MINOR_SHIFT (0) 1279c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_VERSION ((MPI2_VERSION_MAJOR << MPI2_VERSION_MAJOR_SHIFT) | \ 1289c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford MPI2_VERSION_MINOR) 1299c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_HEADER_VERSION_UNIT (0x10) 1309c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_HEADER_VERSION_DEV (0x00) 1319c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_HEADER_VERSION_UNIT_MASK (0xFF00) 1329c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_HEADER_VERSION_UNIT_SHIFT (8) 1339c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_HEADER_VERSION_DEV_MASK (0x00FF) 1349c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_HEADER_VERSION_DEV_SHIFT (0) 1359c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_HEADER_VERSION ((MPI2_HEADER_VERSION_UNIT << 8) | \ 1369c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford MPI2_HEADER_VERSION_DEV) 1379c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR (0x03) 1389c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG (0x8000) 1399c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG (0x0400) 1409c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_SCSIIO_EEDPFLAGS_CHECK_REMOVE_OP (0x0003) 1419c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_SCSIIO_EEDPFLAGS_CHECK_APPTAG (0x0200) 1429c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD (0x0100) 1439c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_SCSIIO_EEDPFLAGS_INSERT_OP (0x0004) 1449c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_FUNCTION_SCSI_IO_REQUEST (0x00) /* SCSI IO */ 1459c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY (0x06) 1469c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO (0x00) 1479c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_SGE_FLAGS_64_BIT_ADDRESSING (0x02) 1489c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_SCSIIO_CONTROL_WRITE (0x01000000) 1499c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_SCSIIO_CONTROL_READ (0x02000000) 1509c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_REQ_DESCRIPT_FLAGS_TYPE_MASK (0x0E) 1519c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_RPY_DESCRIPT_FLAGS_UNUSED (0x0F) 1529c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_RPY_DESCRIPT_FLAGS_SCSI_IO_SUCCESS (0x00) 1539c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_RPY_DESCRIPT_FLAGS_TYPE_MASK (0x0F) 1549c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_WRSEQ_FLUSH_KEY_VALUE (0x0) 1559c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_WRITE_SEQUENCE_OFFSET (0x00000004) 1569c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_WRSEQ_1ST_KEY_VALUE (0xF) 1579c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_WRSEQ_2ND_KEY_VALUE (0x4) 1589c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_WRSEQ_3RD_KEY_VALUE (0xB) 1599c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_WRSEQ_4TH_KEY_VALUE (0x2) 1609c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_WRSEQ_5TH_KEY_VALUE (0x7) 1619c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MPI2_WRSEQ_6TH_KEY_VALUE (0xD) 1629c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 1639c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI25_IEEE_SGE_CHAIN64 { 1649c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 Address; 1659c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Length; 1669c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved1; 1679c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 NextChainOffset; 1689c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Flags; 1699c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 1709c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 1719c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_SGE_SIMPLE_UNION { 1729c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 FlagsLength; 1739c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union { 1749c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Address32; 1759c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 Address64; 1769c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford } u; 1779c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 1789c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 1799c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_SCSI_IO_CDB_EEDP32 { 1809c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 CDB[20]; /* 0x00 */ 1819c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 PrimaryReferenceTag; /* 0x14 */ 1829c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 PrimaryApplicationTag; /* 0x18 */ 1839c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 PrimaryApplicationTagMask; /* 0x1A */ 1849c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 TransferLength; /* 0x1C */ 1859c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 1869c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 1879c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_SGE_CHAIN_UNION { 1889c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Length; 1899c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 NextChainOffset; 1909c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Flags; 1919c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union { 1929c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Address32; 1939c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 Address64; 1949c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford } u; 1959c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 1969c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 1979c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_IEEE_SGE_SIMPLE32 { 1989c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Address; 1999c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 FlagsLength; 2009c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 2019c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 2029c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_IEEE_SGE_CHAIN32 { 2039c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Address; 2049c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 FlagsLength; 2059c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 2069c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 2079c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_IEEE_SGE_SIMPLE64 { 2089c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 Address; 2099c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Length; 2109c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved1; 2119c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Reserved2; 2129c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Flags; 2139c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 2149c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 2159c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_IEEE_SGE_CHAIN64 { 2169c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 Address; 2179c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Length; 2189c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved1; 2199c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Reserved2; 2209c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Flags; 2219c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 2229c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 2239c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordunion MPI2_IEEE_SGE_SIMPLE_UNION { 2249c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_IEEE_SGE_SIMPLE32 Simple32; 2259c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_IEEE_SGE_SIMPLE64 Simple64; 2269c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 2279c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 2289c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordunion MPI2_IEEE_SGE_CHAIN_UNION { 2299c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_IEEE_SGE_CHAIN32 Chain32; 2309c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_IEEE_SGE_CHAIN64 Chain64; 2319c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 2329c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 2339c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordunion MPI2_SGE_IO_UNION { 2349c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_SGE_SIMPLE_UNION MpiSimple; 2359c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_SGE_CHAIN_UNION MpiChain; 2369c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union MPI2_IEEE_SGE_SIMPLE_UNION IeeeSimple; 2379c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union MPI2_IEEE_SGE_CHAIN_UNION IeeeChain; 2389c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 2399c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 2409c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordunion MPI2_SCSI_IO_CDB_UNION { 2419c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 CDB32[32]; 2429c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_SCSI_IO_CDB_EEDP32 EEDP32; 2439c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_SGE_SIMPLE_UNION SGE; 2449c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 2459c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 2469c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* 2479c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * RAID SCSI IO Request Message 2489c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Total SGE count will be one less than _MPI2_SCSI_IO_REQUEST 2499c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford */ 2509c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_RAID_SCSI_IO_REQUEST { 2519c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 DevHandle; /* 0x00 */ 2529c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 ChainOffset; /* 0x02 */ 2539c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Function; /* 0x03 */ 2549c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved1; /* 0x04 */ 2559c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Reserved2; /* 0x06 */ 2569c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MsgFlags; /* 0x07 */ 2579c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 VP_ID; /* 0x08 */ 2589c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 VF_ID; /* 0x09 */ 2599c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved3; /* 0x0A */ 2609c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 SenseBufferLowAddress; /* 0x0C */ 2619c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SGLFlags; /* 0x10 */ 2629c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 SenseBufferLength; /* 0x12 */ 2639c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Reserved4; /* 0x13 */ 2649c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 SGLOffset0; /* 0x14 */ 2659c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 SGLOffset1; /* 0x15 */ 2669c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 SGLOffset2; /* 0x16 */ 2679c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 SGLOffset3; /* 0x17 */ 2689c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 SkipCount; /* 0x18 */ 2699c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 DataLength; /* 0x1C */ 2709c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 BidirectionalDataLength; /* 0x20 */ 2719c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 IoFlags; /* 0x24 */ 2729c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 EEDPFlags; /* 0x26 */ 2739c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 EEDPBlockSize; /* 0x28 */ 2749c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 SecondaryReferenceTag; /* 0x2C */ 2759c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SecondaryApplicationTag; /* 0x30 */ 2769c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 ApplicationTagTranslationMask; /* 0x32 */ 2779c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 LUN[8]; /* 0x34 */ 2789c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Control; /* 0x3C */ 2799c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union MPI2_SCSI_IO_CDB_UNION CDB; /* 0x40 */ 2809c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct RAID_CONTEXT RaidContext; /* 0x60 */ 2819c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union MPI2_SGE_IO_UNION SGL; /* 0x80 */ 2829c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 2839c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 2849c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* 2859c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * MPT RAID MFA IO Descriptor. 2869c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford */ 2879c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MEGASAS_RAID_MFA_IO_REQUEST_DESCRIPTOR { 2889c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 RequestFlags:8; 2899c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 MessageAddress1:24; /* bits 31:8*/ 2909c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 MessageAddress2; /* bits 61:32 */ 2919c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 2929c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 2939c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* Default Request Descriptor */ 2949c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_DEFAULT_REQUEST_DESCRIPTOR { 2959c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 RequestFlags; /* 0x00 */ 2969c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 2979c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SMID; /* 0x02 */ 2989c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 LMID; /* 0x04 */ 2999c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 DescriptorTypeDependent; /* 0x06 */ 3009c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3019c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 3029c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* High Priority Request Descriptor */ 3039c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR { 3049c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 RequestFlags; /* 0x00 */ 3059c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 3069c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SMID; /* 0x02 */ 3079c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 LMID; /* 0x04 */ 3089c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved1; /* 0x06 */ 3099c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3109c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 3119c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* SCSI IO Request Descriptor */ 3129c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_SCSI_IO_REQUEST_DESCRIPTOR { 3139c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 RequestFlags; /* 0x00 */ 3149c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 3159c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SMID; /* 0x02 */ 3169c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 LMID; /* 0x04 */ 3179c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 DevHandle; /* 0x06 */ 3189c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3199c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 3209c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* SCSI Target Request Descriptor */ 3219c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_SCSI_TARGET_REQUEST_DESCRIPTOR { 3229c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 RequestFlags; /* 0x00 */ 3239c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 3249c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SMID; /* 0x02 */ 3259c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 LMID; /* 0x04 */ 3269c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 IoIndex; /* 0x06 */ 3279c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3289c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 3299c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* RAID Accelerator Request Descriptor */ 3309c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_RAID_ACCEL_REQUEST_DESCRIPTOR { 3319c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 RequestFlags; /* 0x00 */ 3329c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 3339c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SMID; /* 0x02 */ 3349c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 LMID; /* 0x04 */ 3359c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved; /* 0x06 */ 3369c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3379c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 3389c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* union of Request Descriptors */ 3399c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordunion MEGASAS_REQUEST_DESCRIPTOR_UNION { 3409c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_DEFAULT_REQUEST_DESCRIPTOR Default; 3419c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR HighPriority; 3429c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_SCSI_IO_REQUEST_DESCRIPTOR SCSIIO; 3439c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_SCSI_TARGET_REQUEST_DESCRIPTOR SCSITarget; 3449c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_RAID_ACCEL_REQUEST_DESCRIPTOR RAIDAccelerator; 3459c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MEGASAS_RAID_MFA_IO_REQUEST_DESCRIPTOR MFAIo; 3469c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union { 3479c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct { 3489c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 low; 3499c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 high; 3509c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford } u; 3519c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 Words; 3529c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford }; 3539c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3549c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 3559c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* Default Reply Descriptor */ 3569c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_DEFAULT_REPLY_DESCRIPTOR { 3579c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 ReplyFlags; /* 0x00 */ 3589c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 3599c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 DescriptorTypeDependent1; /* 0x02 */ 3609c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 DescriptorTypeDependent2; /* 0x04 */ 3619c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3629c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 3639c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* Address Reply Descriptor */ 3649c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_ADDRESS_REPLY_DESCRIPTOR { 3659c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 ReplyFlags; /* 0x00 */ 3669c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 3679c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SMID; /* 0x02 */ 3689c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 ReplyFrameAddress; /* 0x04 */ 3699c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3709c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 3719c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* SCSI IO Success Reply Descriptor */ 3729c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR { 3739c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 ReplyFlags; /* 0x00 */ 3749c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 3759c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SMID; /* 0x02 */ 3769c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 TaskTag; /* 0x04 */ 3779c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved1; /* 0x06 */ 3789c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3799c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 3809c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* TargetAssist Success Reply Descriptor */ 3819c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR { 3829c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 ReplyFlags; /* 0x00 */ 3839c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 3849c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SMID; /* 0x02 */ 3859c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 SequenceNumber; /* 0x04 */ 3869c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Reserved1; /* 0x05 */ 3879c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 IoIndex; /* 0x06 */ 3889c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3899c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 3909c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* Target Command Buffer Reply Descriptor */ 3919c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR { 3929c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 ReplyFlags; /* 0x00 */ 3939c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 3949c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 VP_ID; /* 0x02 */ 3959c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Flags; /* 0x03 */ 3969c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 InitiatorDevHandle; /* 0x04 */ 3979c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 IoIndex; /* 0x06 */ 3989c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 3999c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 4009c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* RAID Accelerator Success Reply Descriptor */ 4019c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR { 4029c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 ReplyFlags; /* 0x00 */ 4039c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MSIxIndex; /* 0x01 */ 4049c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SMID; /* 0x02 */ 4059c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Reserved; /* 0x04 */ 4069c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 4079c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 4089c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* union of Reply Descriptors */ 4099c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordunion MPI2_REPLY_DESCRIPTORS_UNION { 4109c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_DEFAULT_REPLY_DESCRIPTOR Default; 4119c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_ADDRESS_REPLY_DESCRIPTOR AddressReply; 4129c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR SCSIIOSuccess; 4139c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_TARGETASSIST_SUCCESS_REPLY_DESCRIPTOR TargetAssistSuccess; 4149c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_TARGET_COMMAND_BUFFER_REPLY_DESCRIPTOR TargetCommandBuffer; 4159c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR 4169c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford RAIDAcceleratorSuccess; 4179c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 Words; 4189c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 4199c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 4209c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* IOCInit Request message */ 4219c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MPI2_IOC_INIT_REQUEST { 4229c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 WhoInit; /* 0x00 */ 4239c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Reserved1; /* 0x01 */ 4249c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 ChainOffset; /* 0x02 */ 4259c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Function; /* 0x03 */ 4269c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved2; /* 0x04 */ 4279c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Reserved3; /* 0x06 */ 4289c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 MsgFlags; /* 0x07 */ 4299c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 VP_ID; /* 0x08 */ 4309c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 VF_ID; /* 0x09 */ 4319c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved4; /* 0x0A */ 4329c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 MsgVersion; /* 0x0C */ 4339c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 HeaderVersion; /* 0x0E */ 4349c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Reserved5; /* 0x10 */ 4359c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved6; /* 0x14 */ 4369c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 Reserved7; /* 0x16 */ 4379c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 HostMSIxVectors; /* 0x17 */ 4389c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 Reserved8; /* 0x18 */ 4399c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 SystemRequestFrameSize; /* 0x1A */ 4409c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 ReplyDescriptorPostQueueDepth; /* 0x1C */ 4419c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 ReplyFreeQueueDepth; /* 0x1E */ 4429c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 SenseBufferAddressHigh; /* 0x20 */ 4439c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 SystemReplyAddressHigh; /* 0x24 */ 4449c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 SystemRequestFrameBaseAddress; /* 0x28 */ 4459c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 ReplyDescriptorPostQueueAddress;/* 0x30 */ 4469c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 ReplyFreeQueueAddress; /* 0x38 */ 4479c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 TimeStamp; /* 0x40 */ 4489c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 4499c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 4509c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford/* mrpriv defines */ 4519c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MR_PD_INVALID 0xFFFF 4529c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_SPAN_DEPTH 8 4539c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_RAIDMAP_SPAN_DEPTH (MAX_SPAN_DEPTH) 4549c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_ROW_SIZE 32 4559c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_RAIDMAP_ROW_SIZE (MAX_ROW_SIZE) 4569c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_LOGICAL_DRIVES 64 4579c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_RAIDMAP_LOGICAL_DRIVES (MAX_LOGICAL_DRIVES) 4589c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_RAIDMAP_VIEWS (MAX_LOGICAL_DRIVES) 4599c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_ARRAYS 128 4609c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_RAIDMAP_ARRAYS (MAX_ARRAYS) 4619c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_PHYSICAL_DEVICES 256 4629c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MAX_RAIDMAP_PHYSICAL_DEVICES (MAX_PHYSICAL_DEVICES) 4639c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define MR_DCMD_LD_MAP_GET_INFO 0x0300e101 4649c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 4659c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_DEV_HANDLE_INFO { 4669c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 curDevHdl; 4679c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 validHandles; 4689c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 reserved; 4699c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 devHandle[2]; 4709c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 4719c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 4729c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_ARRAY_INFO { 4739c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 pd[MAX_RAIDMAP_ROW_SIZE]; 4749c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 4759c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 4769c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_QUAD_ELEMENT { 4779c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 logStart; 4789c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 logEnd; 4799c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 offsetInSpan; 4809c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 diff; 4819c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 reserved1; 4829c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 4839c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 4849c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_SPAN_INFO { 4859c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 noElements; 4869c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 reserved1; 4879c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_QUAD_ELEMENT quad[MAX_RAIDMAP_SPAN_DEPTH]; 4889c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 4899c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 4909c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_LD_SPAN { 4919c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 startBlk; 4929c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 numBlks; 4939c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 arrayRef; 4949c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 reserved[6]; 4959c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 4969c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 4979c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_SPAN_BLOCK_INFO { 4989c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 num_rows; 4999c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_LD_SPAN span; 5009c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_SPAN_INFO block_span_info; 5019c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 5029c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5039c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_LD_RAID { 5049c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct { 5059c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 fpCapable:1; 5069c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 reserved5:3; 5079c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 ldPiMode:4; 5089c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 pdPiMode:4; 5099c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 encryptionType:8; 5109c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 fpWriteCapable:1; 5119c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 fpReadCapable:1; 5129c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 fpWriteAcrossStripe:1; 5139c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 fpReadAcrossStripe:1; 5149c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 reserved4:8; 5159c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford } capability; 5169c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 reserved6; 5179c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 size; 5189c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 spanDepth; 5199c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 level; 5209c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 stripeShift; 5219c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 rowSize; 5229c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 rowDataSize; 5239c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 writeMode; 5249c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 PRL; 5259c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 SRL; 5269c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 targetId; 5279c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 ldState; 5289c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 regTypeReqOnWrite; 5299c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 modFactor; 5309c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 reserved2[1]; 5319c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 seqNum; 5329c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5339c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct { 5349c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 ldSyncRequired:1; 5359c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 reserved:31; 5369c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford } flags; 5379c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5389c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 reserved3[0x5C]; 5399c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 5409c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5419c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_LD_SPAN_MAP { 5429c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_LD_RAID ldRaid; 5439c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 dataArmMap[MAX_RAIDMAP_ROW_SIZE]; 5449c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_SPAN_BLOCK_INFO spanBlock[MAX_RAIDMAP_SPAN_DEPTH]; 5459c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 5469c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5479c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_FW_RAID_MAP { 5489c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 totalSize; 5499c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union { 5509c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct { 5519c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 maxLd; 5529c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 maxSpanDepth; 5539c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 maxRowSize; 5549c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 maxPdCount; 5559c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 maxArrays; 5569c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford } validationInfo; 5579c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 version[5]; 5589c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 reserved1[5]; 5599c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford }; 5609c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5619c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 ldCount; 5629c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 Reserved1; 5639c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 ldTgtIdToLd[MAX_RAIDMAP_LOGICAL_DRIVES+ 5649c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford MAX_RAIDMAP_VIEWS]; 5659c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 fpPdIoTimeoutSec; 5669c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 reserved2[7]; 5679c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_ARRAY_INFO arMapInfo[MAX_RAIDMAP_ARRAYS]; 5689c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_DEV_HANDLE_INFO devHndlInfo[MAX_RAIDMAP_PHYSICAL_DEVICES]; 5699c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_LD_SPAN_MAP ldSpanMap[1]; 5709c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 5719c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5729c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct IO_REQUEST_INFO { 5739c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 ldStartBlock; 5749c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 numBlocks; 5759c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 ldTgtId; 5769c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 isRead; 5779c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 devHandle; 5789c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 pdBlock; 5799c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 fpOkForIo; 5809c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 5819c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5829c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_LD_TARGET_SYNC { 5839c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 targetId; 5849c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 reserved; 5859c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 seqNum; 5869c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 5879c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5889c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define IEEE_SGE_FLAGS_ADDR_MASK (0x03) 5899c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define IEEE_SGE_FLAGS_SYSTEM_ADDR (0x00) 5909c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define IEEE_SGE_FLAGS_IOCDDR_ADDR (0x01) 5919c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define IEEE_SGE_FLAGS_IOCPLB_ADDR (0x02) 5929c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define IEEE_SGE_FLAGS_IOCPLBNTA_ADDR (0x03) 5939c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define IEEE_SGE_FLAGS_CHAIN_ELEMENT (0x80) 5949c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#define IEEE_SGE_FLAGS_END_OF_LIST (0x40) 5959c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5969c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct megasas_register_set; 5979c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct megasas_instance; 5989c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 5999c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordunion desc_word { 6009c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 word; 6019c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct { 6029c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 low; 6039c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 high; 6049c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford } u; 6059c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 6069c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6079c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct megasas_cmd_fusion { 6089c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MPI2_RAID_SCSI_IO_REQUEST *io_request; 6099c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford dma_addr_t io_request_phys_addr; 6109c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6119c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union MPI2_SGE_IO_UNION *sg_frame; 6129c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford dma_addr_t sg_frame_phys_addr; 6139c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6149c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 *sense; 6159c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford dma_addr_t sense_phys_addr; 6169c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6179c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct list_head list; 6189c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct scsi_cmnd *scmd; 6199c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct megasas_instance *instance; 6209c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6219c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 retry_for_fw_reset; 6229c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union MEGASAS_REQUEST_DESCRIPTOR_UNION *request_desc; 6239c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6249c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford /* 6259c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Context for a MFI frame. 6269c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford * Used to get the mfi cmd from list when a MFI cmd is completed 6279c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford */ 6289c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 sync_cmd_idx; 6299c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 index; 6309c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 flags; 6319c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 6329c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6339c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct LD_LOAD_BALANCE_INFO { 6349c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 loadBalanceFlag; 6359c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 reserved1; 6369c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 raid1DevHandle[2]; 6379c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford atomic_t scsi_pending_cmds[2]; 6389c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 last_accessed_block[2]; 6399c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 6409c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6419c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct MR_FW_RAID_MAP_ALL { 6429c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_FW_RAID_MAP raidMap; 6439c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_LD_SPAN_MAP ldSpanMap[MAX_LOGICAL_DRIVES - 1]; 6449c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford} __attribute__ ((packed)); 6459c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6469c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordstruct fusion_context { 6479c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct megasas_cmd_fusion **cmd_list; 6489c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct list_head cmd_pool; 6499c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6509c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford spinlock_t cmd_pool_lock; 6519c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6529c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford dma_addr_t req_frames_desc_phys; 6539c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 *req_frames_desc; 6549c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6559c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct dma_pool *io_request_frames_pool; 6569c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford dma_addr_t io_request_frames_phys; 6579c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 *io_request_frames; 6589c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6599c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct dma_pool *sg_dma_pool; 6609c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct dma_pool *sense_dma_pool; 6619c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6629c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford dma_addr_t reply_frames_desc_phys; 6639c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford union MPI2_REPLY_DESCRIPTORS_UNION *reply_frames_desc; 6649c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct dma_pool *reply_frames_desc_pool; 6659c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6669c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 last_reply_idx; 6679c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6689c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 reply_q_depth; 6699c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 request_alloc_sz; 6709c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 reply_alloc_sz; 6719c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 io_frames_alloc_sz; 6729c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6739c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 max_sge_in_main_msg; 6749c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u16 max_sge_in_chain; 6759c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6769c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 chain_offset_io_request; 6779c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 chain_offset_mfi_pthru; 6789c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6799c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct MR_FW_RAID_MAP_ALL *ld_map[2]; 6809c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford dma_addr_t ld_map_phys[2]; 6819c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6829c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 map_sz; 6839c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u8 fast_path_io; 6849c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct LD_LOAD_BALANCE_INFO load_balance_info[MAX_LOGICAL_DRIVES]; 6859c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 6869c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6879c915a8c99bce637226aa09cb05fc18486b229cbAdam Radfordunion desc_value { 6889c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u64 word; 6899c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford struct { 6909c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 low; 6919c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford u32 high; 6929c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford } u; 6939c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford}; 6949c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford 6959c915a8c99bce637226aa09cb05fc18486b229cbAdam Radford#endif /* _MEGARAID_SAS_FUSION_H_ */ 696