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