drivers/scsi/mpt3sas/mpi/mpi2_init.h

Source file repositories/reference/linux-study-clean/drivers/scsi/mpt3sas/mpi/mpi2_init.h

File Facts

System
Linux kernel
Corpus path
drivers/scsi/mpt3sas/mpi/mpi2_init.h
Extension
.h
Size
23881 bytes
Lines
592
Domain
Driver Families
Bucket
drivers/scsi
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#ifndef MPI2_INIT_H
#define MPI2_INIT_H

/*****************************************************************************
*
*              SCSI Initiator Messages
*
*****************************************************************************/

/****************************************************************************
* SCSI IO messages and associated structures
****************************************************************************/

typedef struct _MPI2_SCSI_IO_CDB_EEDP32 {
	U8 CDB[20];		/*0x00 */
	__be32 PrimaryReferenceTag;	/*0x14 */
	U16 PrimaryApplicationTag;	/*0x18 */
	U16 PrimaryApplicationTagMask;	/*0x1A */
	U32 TransferLength;	/*0x1C */
} MPI2_SCSI_IO_CDB_EEDP32, *PTR_MPI2_SCSI_IO_CDB_EEDP32,
	Mpi2ScsiIoCdbEedp32_t, *pMpi2ScsiIoCdbEedp32_t;

/*MPI v2.0 CDB field */
typedef union _MPI2_SCSI_IO_CDB_UNION {
	U8 CDB32[32];
	MPI2_SCSI_IO_CDB_EEDP32 EEDP32;
	MPI2_SGE_SIMPLE_UNION SGE;
} MPI2_SCSI_IO_CDB_UNION, *PTR_MPI2_SCSI_IO_CDB_UNION,
	Mpi2ScsiIoCdb_t, *pMpi2ScsiIoCdb_t;

/*MPI v2.0 SCSI IO Request Message */
typedef struct _MPI2_SCSI_IO_REQUEST {
	U16 DevHandle;		/*0x00 */
	U8 ChainOffset;		/*0x02 */
	U8 Function;		/*0x03 */
	U16 Reserved1;		/*0x04 */
	U8 Reserved2;		/*0x06 */
	U8 MsgFlags;		/*0x07 */
	U8 VP_ID;		/*0x08 */
	U8 VF_ID;		/*0x09 */
	U16 Reserved3;		/*0x0A */
	U32 SenseBufferLowAddress;	/*0x0C */
	U16 SGLFlags;		/*0x10 */
	U8 SenseBufferLength;	/*0x12 */
	U8 Reserved4;		/*0x13 */
	U8 SGLOffset0;		/*0x14 */
	U8 SGLOffset1;		/*0x15 */
	U8 SGLOffset2;		/*0x16 */
	U8 SGLOffset3;		/*0x17 */
	U32 SkipCount;		/*0x18 */
	U32 DataLength;		/*0x1C */
	U32 BidirectionalDataLength;	/*0x20 */
	U16 IoFlags;		/*0x24 */
	U16 EEDPFlags;		/*0x26 */
	U32 EEDPBlockSize;	/*0x28 */
	U32 SecondaryReferenceTag;	/*0x2C */
	U16 SecondaryApplicationTag;	/*0x30 */
	U16 ApplicationTagTranslationMask;	/*0x32 */
	U8 LUN[8];		/*0x34 */
	U32 Control;		/*0x3C */
	MPI2_SCSI_IO_CDB_UNION CDB;	/*0x40 */

#ifdef MPI2_SCSI_IO_VENDOR_UNIQUE_REGION /*typically this is left undefined */
	MPI2_SCSI_IO_VENDOR_UNIQUE VendorRegion;
#endif

	MPI2_SGE_IO_UNION SGL;	/*0x60 */

} MPI2_SCSI_IO_REQUEST, *PTR_MPI2_SCSI_IO_REQUEST,
	Mpi2SCSIIORequest_t, *pMpi2SCSIIORequest_t;

/*SCSI IO MsgFlags bits */

/*MsgFlags for SenseBufferAddressSpace */
#define MPI2_SCSIIO_MSGFLAGS_MASK_SENSE_ADDR        (0x0C)
#define MPI2_SCSIIO_MSGFLAGS_SYSTEM_SENSE_ADDR      (0x00)
#define MPI2_SCSIIO_MSGFLAGS_IOCDDR_SENSE_ADDR      (0x04)
#define MPI2_SCSIIO_MSGFLAGS_IOCPLB_SENSE_ADDR      (0x08)
#define MPI2_SCSIIO_MSGFLAGS_IOCPLBNTA_SENSE_ADDR   (0x0C)
#define MPI26_SCSIIO_MSGFLAGS_IOCCTL_SENSE_ADDR     (0x08)

/*SCSI IO SGLFlags bits */

/*base values for Data Location Address Space */
#define MPI2_SCSIIO_SGLFLAGS_ADDR_MASK              (0x0C)
#define MPI2_SCSIIO_SGLFLAGS_SYSTEM_ADDR            (0x00)
#define MPI2_SCSIIO_SGLFLAGS_IOCDDR_ADDR            (0x04)
#define MPI2_SCSIIO_SGLFLAGS_IOCPLB_ADDR            (0x08)
#define MPI2_SCSIIO_SGLFLAGS_IOCPLBNTA_ADDR         (0x0C)

Annotation

Implementation Notes