📄 csmisas.h
字号:
/**************************************************************************Module Name: CSMISAS.HAbstract: This file contains constants and data structure definitions used by drivers that support the Common Storage Management Interface specification for SAS or SATA in either the Windows or Linux. This should be considered as a reference implementation only. Changes may be necessary to accommodate a specific build environment or target OS.Revision History: 001 SEF 8/12/03 Initial release. 002 SEF 8/20/03 Cleanup to match documentation. 003 SEF 9/12/03 Additional cleanup, created combined header 004 SEF 9/23/03 Changed base types to match linux defaults Added RAID signature Added bControllerFlags to CSMI_SAS_CNTLR_CONFIG Changed CSMI_SAS_BEGIN_PACK to 8 for common structures Fixed other typos identified in first compilation test 005 SEF 10/03/03 Additions to match first version of CSMI document 006 SEF 10/14/03 Fixed typedef struct _CSMI_SAS_SMP_PASSTHRU_BUFFER Added defines for bConnectionRate 007 SEF 10/15/03 Added Firmware Download Control Code and support Added CSMI revision support 008 SEF 10/30/03 No functional change, just updated version to track spec changes 009 SEF 12/09/03 No functional change, just updated version to track spec changes 010 SEF 3/11/04 Fixed typedef struct CSMI_SAS_RAID_DRIVES to include the bFirmware member that is defined in the spec, but was missing in this file, added CC_CSMI_SAS_TASK_MANAGEMENT 011 SEF 4/02/04 No functional change, added comment line before CC_CSMI_SAS_TASK_MANAGEMENT 012 SEF 4/16/04 Added IOControllerNumber to linux header, Modified linux control codes to have upper word of 0xCC77.... to indicate CSMI version 77 Added bSignalClass to CC_CSMI_SET_PHY_INFO Added CC_CSMI_SAS_PHY_CONTROL support 013 SEF 5/14/04 Added CC_CSMI_SAS_GET_CONNECTOR_INFO support 014 SEF 5/24/04 No functional change, just updated version to track spec changes 015 SEF 6/16/04 changed bPinout to uPinout to reflect proper size, changed width of bLocation defines to reflect size 016 SEF 6/17/04 changed bLengthOfControls in CSMI_SAS_PHY_CONTROL to be proper size 017 SEF 9/17/04 added CSMI_SAS_SATA_PORT_SELECTOR, CSMI_SAS_LINK_VIRTUAL, CSMI_SAS_CON_NOT_PRESENT, and CSMI_SAS_CON_NOT_CONNECTED 018 SEF 9/20/04 added CSMI_SAS_PHY_USER_PATTERN, changed definition of CSMI_SAS_PHY_FIXED_PATTERN to not conflict with activate definition 019 SEF 12/06/04 added CSMI_SAS_GET_LOCATION added bSSPStatus to CSMI_SAS_SSP_PASSTHRU_STATUS structure**************************************************************************/#ifndef _CSMI_SAS_H_#define _CSMI_SAS_H_// CSMI Specification Revision, the intent is that all versions of the// specification will be backward compatible after the 1.00 release.// Major revision number, corresponds to xxxx. of CSMI specification// Minor revision number, corresponds to .xxxx of CSMI specification#define CSMI_MAJOR_REVISION 0#define CSMI_MINOR_REVISION 83/*************************************************************************//* TARGET OS LINUX SPECIFIC CODE *//*************************************************************************/// EDM #ifdef _linux#ifdef __KERNEL__// Linux base types#include <linux/types.h>// pack definition// EDM #define CSMI_SAS_BEGIN_PACK(x) pack(x)// EDM #define CSMI_SAS_END_PACK pack()// IOCTL Control Codes// (IoctlHeader.ControlCode)// Control Codes prior to 0.77// Control Codes requiring CSMI_ALL_SIGNATURE// #define CC_CSMI_SAS_GET_DRIVER_INFO 0x12345678// #define CC_CSMI_SAS_GET_CNTLR_CONFIG 0x23456781// #define CC_CSMI_SAS_GET_CNTLR_STATUS 0x34567812// #define CC_CSMI_SAS_FIRMWARE_DOWNLOAD 0x92345678// Control Codes requiring CSMI_RAID_SIGNATURE// #define CC_CSMI_SAS_GET_RAID_INFO 0x45678123// #define CC_CSMI_SAS_GET_RAID_CONFIG 0x56781234// Control Codes requiring CSMI_SAS_SIGNATURE// #define CC_CSMI_SAS_GET_PHY_INFO 0x67812345// #define CC_CSMI_SAS_SET_PHY_INFO 0x78123456// #define CC_CSMI_SAS_GET_LINK_ERRORS 0x81234567// #define CC_CSMI_SAS_SMP_PASSTHRU 0xA1234567// #define CC_CSMI_SAS_SSP_PASSTHRU 0xB1234567// #define CC_CSMI_SAS_STP_PASSTHRU 0xC1234567// #define CC_CSMI_SAS_GET_SATA_SIGNATURE 0xD1234567// #define CC_CSMI_SAS_GET_SCSI_ADDRESS 0xE1234567// #define CC_CSMI_SAS_GET_DEVICE_ADDRESS 0xF1234567// #define CC_CSMI_SAS_TASK_MANAGEMENT 0xA2345678// Control Codes for 0.77 and later// Control Codes requiring CSMI_ALL_SIGNATURE#define CC_CSMI_SAS_GET_DRIVER_INFO 0xCC770001#define CC_CSMI_SAS_GET_CNTLR_CONFIG 0xCC770002#define CC_CSMI_SAS_GET_CNTLR_STATUS 0xCC770003#define CC_CSMI_SAS_FIRMWARE_DOWNLOAD 0xCC770004// Control Codes requiring CSMI_RAID_SIGNATURE#define CC_CSMI_SAS_GET_RAID_INFO 0xCC77000A#define CC_CSMI_SAS_GET_RAID_CONFIG 0xCC77000B// Control Codes requiring CSMI_SAS_SIGNATURE#define CC_CSMI_SAS_GET_PHY_INFO 0xCC770014#define CC_CSMI_SAS_SET_PHY_INFO 0xCC770015#define CC_CSMI_SAS_GET_LINK_ERRORS 0xCC770016#define CC_CSMI_SAS_SMP_PASSTHRU 0xCC770017#define CC_CSMI_SAS_SSP_PASSTHRU 0xCC770018#define CC_CSMI_SAS_STP_PASSTHRU 0xCC770019#define CC_CSMI_SAS_GET_SATA_SIGNATURE 0xCC770020#define CC_CSMI_SAS_GET_SCSI_ADDRESS 0xCC770021#define CC_CSMI_SAS_GET_DEVICE_ADDRESS 0xCC770022#define CC_CSMI_SAS_TASK_MANAGEMENT 0xCC770023#define CC_CSMI_SAS_GET_CONNECTOR_INFO 0xCC770024#define CC_CSMI_SAS_GET_LOCATION 0xCC770025// Control Codes requiring CSMI_PHY_SIGNATURE#define CC_CSMI_SAS_PHY_CONTROL 0xCC77003C// EDM #pragma CSMI_SAS_BEGIN_PACK(8)#pragma pack(8)// IOCTL_HEADERtypedef struct _IOCTL_HEADER { __u32 IOControllerNumber; __u32 Length; __u32 ReturnCode; __u32 Timeout; __u16 Direction;} IOCTL_HEADER, *PIOCTL_HEADER;// EDM #pragma CSMI_SAS_END_PACK#pragma pack()#endif#define __i8 char/*************************************************************************//* TARGET OS WINDOWS SPECIFIC CODE *//*************************************************************************/#ifdef _WIN32// windows IOCTL definitions#ifndef _NTDDSCSIH_#include <ntddscsi.h>#endif// pack definition#if defined _MSC_VER #define CSMI_SAS_BEGIN_PACK(x) pack(push,x) #define CSMI_SAS_END_PACK pack(pop)#elif defined __BORLANDC__ #define CSMI_SAS_BEGIN_PACK(x) option -a##x #define CSMI_SAS_END_PACK option -a.#else #error "CSMISAS.H - Must externally define a pack compiler designator."#endif// base types#define __u8 unsigned char#define __u32 unsigned long#define __u16 unsigned short#define __i8 char// IOCTL Control Codes// (IoctlHeader.ControlCode)// Control Codes requiring CSMI_ALL_SIGNATURE#define CC_CSMI_SAS_GET_DRIVER_INFO 1#define CC_CSMI_SAS_GET_CNTLR_CONFIG 2#define CC_CSMI_SAS_GET_CNTLR_STATUS 3#define CC_CSMI_SAS_FIRMWARE_DOWNLOAD 4// Control Codes requiring CSMI_RAID_SIGNATURE#define CC_CSMI_SAS_GET_RAID_INFO 10#define CC_CSMI_SAS_GET_RAID_CONFIG 11// Control Codes requiring CSMI_SAS_SIGNATURE#define CC_CSMI_SAS_GET_PHY_INFO 20#define CC_CSMI_SAS_SET_PHY_INFO 21#define CC_CSMI_SAS_GET_LINK_ERRORS 22#define CC_CSMI_SAS_SMP_PASSTHRU 23#define CC_CSMI_SAS_SSP_PASSTHRU 24#define CC_CSMI_SAS_STP_PASSTHRU 25#define CC_CSMI_SAS_GET_SATA_SIGNATURE 26#define CC_CSMI_SAS_GET_SCSI_ADDRESS 27#define CC_CSMI_SAS_GET_DEVICE_ADDRESS 28#define CC_CSMI_SAS_TASK_MANAGEMENT 29#define CC_CSMI_SAS_GET_CONNECTOR_INFO 30#define CC_CSMI_SAS_GET_LOCATION 31// Control Codes requiring CSMI_PHY_SIGNATURE#define CC_CSMI_SAS_PHY_CONTROL 60#define IOCTL_HEADER SRB_IO_CONTROL#define PIOCTL_HEADER PSRB_IO_CONTROL#else /* _WIN32 */#define _WIN32 0#endif /* _WIN32 *//*************************************************************************//* TARGET OS NOT DEFINED ERROR *//*************************************************************************/// EDM #if (!_WIN32 && !_linux)#if (!_WIN32 && !__KERNEL__) #error "Unknown target OS."#endif/*************************************************************************//* OS INDEPENDENT CODE *//*************************************************************************//* * * * * * * * * * Class Independent IOCTL Constants * * * * * * * * * */// Return codes for all IOCTL's regardless of class// (IoctlHeader.ReturnCode)#define CSMI_SAS_STATUS_SUCCESS 0#define CSMI_SAS_STATUS_FAILED 1#define CSMI_SAS_STATUS_BAD_CNTL_CODE 2#define CSMI_SAS_STATUS_INVALID_PARAMETER 3#define CSMI_SAS_STATUS_WRITE_ATTEMPTED 4// Signature value// (IoctlHeader.Signature)#define CSMI_ALL_SIGNATURE "CSMIALL"// Timeout value default of 60 seconds// (IoctlHeader.Timeout)#define CSMI_ALL_TIMEOUT 60// Direction values for data flow on this IOCTL// (IoctlHeader.Direction, Linux only)#define CSMI_SAS_DATA_READ 0#define CSMI_SAS_DATA_WRITE 1// I/O Bus Types// ISA and EISA bus types are not supported// (bIoBusType)#define CSMI_SAS_BUS_TYPE_PCI 3#define CSMI_SAS_BUS_TYPE_PCMCIA 4// Controller Status// (uStatus)#define CSMI_SAS_CNTLR_STATUS_GOOD 1#define CSMI_SAS_CNTLR_STATUS_FAILED 2#define CSMI_SAS_CNTLR_STATUS_OFFLINE 3#define CSMI_SAS_CNTLR_STATUS_POWEROFF 4// Offline Status Reason// (uOfflineReason)#define CSMI_SAS_OFFLINE_REASON_NO_REASON 0#define CSMI_SAS_OFFLINE_REASON_INITIALIZING 1#define CSMI_SAS_OFFLINE_REASON_BACKSIDE_BUS_DEGRADED 2#define CSMI_SAS_OFFLINE_REASON_BACKSIDE_BUS_FAILURE 3// Controller Class// (bControllerClass)#define CSMI_SAS_CNTLR_CLASS_HBA 5// Controller Flag bits// (uControllerFlags)#define CSMI_SAS_CNTLR_SAS_HBA 0x00000001#define CSMI_SAS_CNTLR_SAS_RAID 0x00000002#define CSMI_SAS_CNTLR_SATA_HBA 0x00000004#define CSMI_SAS_CNTLR_SATA_RAID 0x00000008// for firmware download#define CSMI_SAS_CNTLR_FWD_SUPPORT 0x00010000#define CSMI_SAS_CNTLR_FWD_ONLINE 0x00020000#define CSMI_SAS_CNTLR_FWD_SRESET 0x00040000#define CSMI_SAS_CNTLR_FWD_HRESET 0x00080000#define CSMI_SAS_CNTLR_FWD_RROM 0x00100000// Download Flag bits// (uDownloadFlags)#define CSMI_SAS_FWD_VALIDATE 0x00000001#define CSMI_SAS_FWD_SOFT_RESET 0x00000002#define CSMI_SAS_FWD_HARD_RESET 0x00000004// Firmware Download Status// (usStatus)#define CSMI_SAS_FWD_SUCCESS 0#define CSMI_SAS_FWD_FAILED 1#define CSMI_SAS_FWD_USING_RROM 2#define CSMI_SAS_FWD_REJECT 3#define CSMI_SAS_FWD_DOWNREV 4// Firmware Download Severity// (usSeverity>#define CSMI_SAS_FWD_INFORMATION 0#define CSMI_SAS_FWD_WARNING 1#define CSMI_SAS_FWD_ERROR 2#define CSMI_SAS_FWD_FATAL 3/* * * * * * * * * * SAS RAID Class IOCTL Constants * * * * * * * * */// Return codes for the RAID IOCTL's regardless of class// (IoctlHeader.ControlCode)#define CSMI_SAS_RAID_SET_OUT_OF_RANGE 1000// Signature value// (IoctlHeader.Signature)#define CSMI_RAID_SIGNATURE "CSMIARY"// Timeout value default of 60 seconds// (IoctlHeader.Timeout)#define CSMI_RAID_TIMEOUT 60// RAID Types// (bRaidType)#define CSMI_SAS_RAID_TYPE_NONE 0#define CSMI_SAS_RAID_TYPE_0 1#define CSMI_SAS_RAID_TYPE_1 2#define CSMI_SAS_RAID_TYPE_10 3#define CSMI_SAS_RAID_TYPE_5 4#define CSMI_SAS_RAID_TYPE_15 5#define CSMI_SAS_RAID_TYPE_OTHER 255// RAID Status// (bStatus)#define CSMI_SAS_RAID_SET_STATUS_OK 0#define CSMI_SAS_RAID_SET_STATUS_DEGRADED 1#define CSMI_SAS_RAID_SET_STATUS_REBUILDING 2#define CSMI_SAS_RAID_SET_STATUS_FAILED 3// RAID Drive Status// (bDriveStatus)#define CSMI_SAS_DRIVE_STATUS_OK 0#define CSMI_SAS_DRIVE_STATUS_REBUILDING 1#define CSMI_SAS_DRIVE_STATUS_FAILED 2#define CSMI_SAS_DRIVE_STATUS_DEGRADED 3// RAID Drive Usage// (bDriveUsage)#define CSMI_SAS_DRIVE_CONFIG_NOT_USED 0#define CSMI_SAS_DRIVE_CONFIG_MEMBER 1#define CSMI_SAS_DRIVE_CONFIG_SPARE 2/* * * * * * * * * * SAS HBA Class IOCTL Constants * * * * * * * * * */// Return codes for SAS IOCTL's// (IoctlHeader.ReturnCode)#define CSMI_SAS_PHY_INFO_CHANGED CSMI_SAS_STATUS_SUCCESS#define CSMI_SAS_PHY_INFO_NOT_CHANGEABLE 2000#define CSMI_SAS_LINK_RATE_OUT_OF_RANGE 2001#define CSMI_SAS_PHY_DOES_NOT_EXIST 2002#define CSMI_SAS_PHY_DOES_NOT_MATCH_PORT 2003
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -