📄 mic.h
字号:
#define PMIC_LMM_ADD_INITIATOR (0x0001 | MIC_SCSIEMU_ID )
#define PMIC_LMM_DELETE_INITIATOR (0x0002 | MIC_SCSIEMU_ID )
#define PMIC_LMM_GET_LMMTABLE (0x0003 | MIC_SCSIEMU_ID )
#define PMIC_LMM_ADD_LMMENTRY (0x0004 | MIC_SCSIEMU_ID )
#define PMIC_LMM_SET_LMMENTRY (0x0005 | MIC_SCSIEMU_ID )
#define PMIC_LMM_DELETE_LMMENTRY (0x0006 | MIC_SCSIEMU_ID )
/* Redundancy check commands */
#define PMIC_RCK_START (PMIC_SUBOPCODE_START | MIC_REDUNDANCY_CHK_ID)
#define PMIC_RCK_STOP (PMIC_SUBOPCODE_STOP | MIC_REDUNDANCY_CHK_ID)
#define PMIC_RCK_PAUSE (PMIC_SUBOPCODE_PAUSE | MIC_REDUNDANCY_CHK_ID)
#define PMIC_RCK_RESUME (PMIC_SUBOPCODE_RESUME | MIC_REDUNDANCY_CHK_ID)
#define PMIC_RCK_GETPROGRESS (PMIC_SUBOPCODE_GET_PROGRESS | MIC_REDUNDANCY_CHK_ID)
#define PMIC_RCK_TEST (MIC_TEST_MODULE | MIC_REDUNDANCY_CHK_ID)
/* ISCSI Management Related Commands */
#define PMIC_ISCSI_GET_INFORMATION MIC_ISCSI_MGT_ID | 0x0001
#define PMIC_ISCSI_GET_PARAMETERS MIC_ISCSI_MGT_ID | 0x0002
#define PMIC_ISCSI_SET_PARAMETERS MIC_ISCSI_MGT_ID | 0x0003
#define PMIC_ISCSI_PING MIC_ISCSI_MGT_ID | 0x0004
#define PMIC_ISCSI_ADD_CHAP_RECORD MIC_ISCSI_MGT_ID | 0x0005
#define PMIC_ISCSI_DEL_CHAP_RECORD MIC_ISCSI_MGT_ID | 0x0006
#define PMIC_ISCSI_SET_CHAP_RECORD MIC_ISCSI_MGT_ID | 0x0007
#define PMIC_ISCSI_GET_CHAP_RECORD MIC_ISCSI_MGT_ID | 0x0008
#define PMIC_ISCSI_GET_NODE_LIST MIC_ISCSI_MGT_ID | 0x0009
/* Events */
#define PMIC_EVENT_CLEAR_LOG (0x0001 | MIC_EVENTMGR_ID)
#define PMIC_EVENT_DISABLE_LOGGING (0x0002 | MIC_EVENTMGR_ID)
#define PMIC_EVENT_ENABLE_LOGGING (0x0003 | MIC_EVENTMGR_ID)
#define PMIC_EVENT_GET (0x0004 | MIC_EVENTMGR_ID)
#define PMIC_EVENT_GET_EVENTINFO (0x0005 | MIC_EVENTMGR_ID)
#define PMIC_EVENT_GET_SETTINGS (0x0007 | MIC_EVENTMGR_ID)
#define PMIC_EVENT_RESET_EVENTINFO (0x0008 | MIC_EVENTMGR_ID)
#define PMIC_EVENT_SET_EVENTINFO (0x0009 | MIC_EVENTMGR_ID)
#define PMIC_EVENT_SET_SETTINGS (0x000b | MIC_EVENTMGR_ID)
#define PMIC_EVENT_GET_STATS (0x000c | MIC_EVENTMGR_ID)
/* Buzzer */
#define PMIC_BUZZER_TURN_ON (0x0000 | MIC_BUZZER_ID)
#define PMIC_BUZZER_TURN_OFF (0x0001 | MIC_BUZZER_ID)
#if DURATION_SUPPORTED
#define PMIC_BUZZER_SET_DURATION (0x0002 | MIC_BUZZER_ID)
#define PMIC_BUZZER_GET_DURATION (0x0003 | MIC_BUZZER_ID)
#endif
#define PMIC_BUZZER_GET_STATUS (0x0004 | MIC_BUZZER_ID)
/* Statistics monitoring */
#define PMIC_STATS_RESET (0x0000 | MIC_STATS_ID)
#define PMIC_STATS_GET_SUBSYSTEM (0x0001 | MIC_STATS_ID)
#define PMIC_STATS_GET_ENCLOSURE (0x0002 | MIC_STATS_ID)
#define PMIC_STATS_GET_CONTROLLER (0x0003 | MIC_STATS_ID)
#define PMIC_STATS_GET_LOGICAL_DRIVE (0x0004 | MIC_STATS_ID)
#define PMIC_STATS_GET_PHYSICAL_DRIVE (0x0005 | MIC_STATS_ID)
/* Promise Management Interface Command Opcodes - End */
/* Command specific structures - Start */
/* PMIC_SUBSYSTEM_GET_INFO */
typedef struct micSubsystemGetInfoCmd
{
u8 gci_ScsiOpCode;
u8 gci_MicSignature;
u16 gci_MicOpCode;
u8 gci_UniqueCmdId;
u8 gci_LoginKey;
u16 gci_Reserved0;
u16 gci_Reserved1;
u16 gci_TransferLength;
u16 gci_TransferOffset;
u8 gci_Reserved2;
Control_t gci_Control;
} __attribute__ ((packed)) micSubsystemGetInfoCmd_t;
//} micSubsystemGetInfoCmd_t;
typedef struct micSubsystemInfo
{
u8 ssi_CustName[24];
u8 ssi_CustModel[16];
u8 ssi_MftPartNo[16];
u8 ssi_MftSerialNo[16];
u8 ssi_MftRev[8];
u8 ssi_CustPartNo[16];
u8 ssi_CustSerialNo[16];
u8 ssi_CustRev[8];
u8 ssi_WWN[8];
u8 ssi_Reserved0[16];
u8 ssi_MftName[48];
u8 ssi_MftModel[48];
u8 ssi_MftMonth;
u8 ssi_MftDate;
u16 ssi_MftYear;
u8 ssi_Reserved1[5];
u8 ssi_UserName[48];
u8 ssi_MaxRAIDSSSupported;
u8 ssi_MaxJOBExpSSSupported;
u8 ssi_MaxCtlSupported;
u8 ssi_InterConnectType;
u8 ssi_Reserved2[61];
u8 ssi_RAIDSSPresent;
u8 ssi_JOBExpSSPresent;
u8 ssi_CtlPresent;
u8 ssi_Reserved3[148];
}micSubsystemInfo_t;
/* PMIC_SUBSYSTEM_GET_SETTINGS */
/* PMIC_SUBSYSTEM_SET_SETTINGS */
typedef struct micSubsysGetSetSettingsCmd
{
u8 sgss_ScsiOpCode;
u8 sgss_MicSignature;
u16 sgss_MicOpCode;
u8 sgss_UniqueCmdId;
u8 sgss_LoginKey;
u16 sgss_Reserved0;
u16 sgss_Reserved1;
u16 sgss_TransferLength;
u16 sgss_TransferOffset;
u8 sgss_Reserved2;
Control_t sgss_Control;
} __attribute__ ((packed)) micSubsysGetSetSettingsCmd_t;
//} micSubsysGetSetSettingsCmd_t;
typedef struct micSubsystemSettings
{
u8 ss_UserName[48];
u8 ss_Reserved[208];
}micSubsystemSettings_t;
/* PMIC_CONTROLLER_GET_INFO */
typedef struct micCtlGetInfoCmd
{
u8 gci_ScsiOpCode;
u8 gci_MicSignature;
u16 gci_MicOpCode;
u8 gci_UniqueCmdId;
u8 gci_LoginKey;
u16 gci_ControllerID;
u8 gci_CodePage;
u8 gci_Reserved;
u16 gci_TransferLength;
u16 gci_TransferOffset;
u8 gci_ControllerCount;
Control_t gci_Control;
} __attribute__ ((packed)) micCtlGetInfoCmd_t;
//} micCtlGetInfoCmd_t;
/* Possible values for gci_CodePage*/
#define ALL_PAGES 0xFF
#define RAID_CONTROLLER_INFO 0x00
#define FW_SW_CODE_PAGE 0x01
#define GENERIC_HW_CODE_PAGE 0x02
#define OTHER_HW_CODE_PAGE 0x03
#define ISCSI_NETWORK_PAGE 0x04
#define ETHERNET_PAGE 0x05
#define PROMISE_COERCION_METHOD 0x00 /* this is aligned on GB */
#define PROMISE_IV_COERCION_METHOD 0x01 /* this is based on size */
typedef struct micControllerInfoPage0
{
u16 ci_PageCode;
u16 ci_PageLength;
u16 ci_DeviceID;
u8 ci_Reserved0[2];
u8 ci_CustName[24];
u8 ci_CustModel[16];
u8 ci_MftPartNo[16];
u8 ci_MftSerialNo[16];
u8 ci_MftRev[8];
u8 ci_CustPartNo[16];
u8 ci_CustSerialNo[16];
u8 ci_CustRev[8];
u8 ci_WWN[8];
u8 ci_Reserved1[16];
u8 ci_MftName[48];
u8 ci_MftModel[48];
u8 ci_MftMonth;
u8 ci_MftDate;
u16 ci_MftYear;
u8 ci_Reserved2[4];
u8 ci_UserName[48];
u16 ci_ProductID;
u8 ci_Reserved3[2];
u32 ci_Uptime;
u64 ci_AccumulatedTime;
u8 ci_SCSIProtocolSupported;
u8 ci_Reserved31;
u16 ci_MaxCmdSupported;
u8 ci_MaxLogLBABitsSupported;
u8 ci_DefaultCacheLineSize;
u8 ci_CacheLineSize;
u8 ci_RaidState;
u8 ci_Reserved4[34];
u8 ci_MDDVersion;
u8 ci_Reserved5;
u32 ci_MaxMDDSizeReserved;
u32 ci_MaxMDDSizeUsed;
u8 ci_Reserved6[36];
u16 ci_MaxDiskArraySupported;
u16 ci_DiskArrayPresent;
u8 ci_Reserved7[36];
u16 ci_MaxLogicalDriveSupported;
u16 ci_LogicalDrivePresent;
u16 ci_LogicalDriveOnline;
u16 ci_LogicalDriveOffline;
u16 ci_LogicalDriveCritical;
u8 ci_Reserved8[36];
u16 ci_MaxPhysicalDriveSupported;
u16 ci_PhysicalDrivePresent;
/* u16 ci_PhysicalDriveElementInArray;
u16 ci_PhysicalDriveNotConfigured; */
u16 ci_PhysicalDriveOnline;
u16 ci_PhysicalDriveOffline;
/* u16 ci_PhysicalDriveMissing;
u16 ci_PhysicalDriveRegen; */
u16 ci_PhysicalDrivewithPFA;
u16 ci_PhysicalDriveElementInArray;
u16 ci_PhysicalDriveNotConfigured;
u16 ci_PhysicalDriveMissing;
u16 ci_PhysicalDriveRegen;
u16 ci_MaxChannelsSupported;//[cz]add
u8 ci_Reserved9[26];
u16 ci_MaxGlobalSparesSupported;
u16 ci_GlobalSparesPresent;
u16 ci_MaxDedicatedSparesSupported;
u16 ci_DedicatedSparesPresent;
u16 ci_MaxTempGlobalSparesSupported;
u16 ci_TempGlobalSparesPresent;
u16 ci_TempGlobalSparesUsed;
u16 ci_MaxTempDedicatedSparesSupported;
u16 ci_TempDedicatedSparesPresent;
u16 ci_TempDedicatedSparesUsed;
u8 ci_Reserved10[36];
u16 ci_NoOfRebuilds;
u16 ci_NoOfBkSync;
u16 ci_NoOfMediaPatrol;
u16 ci_NoOfRedCheck;
u16 ci_NoOfOnlineExp;
u16 ci_NoOfLDInit;
u16 ci_NoOfMigration;
u8 ci_Reserved11[32];
u8 ci_RebuildRate;
u8 ci_BkSyncRate;
u8 ci_MediaPatrolRate;
u8 ci_RedCheckRate;
u8 ci_OnlineExpRate;
u8 ci_LDInitRate;
u8 ci_MigrationRate;
u8 ci_PDMRate;
u8 ci_TransitionRate;
u32 ci_ReassignedBlockThreshold;
u32 ci_ErrorBlockThreshold;
u8 ci_Reserved12[27];
u8 ci_AutoRebuildEnable;
u8 ci_MediaPatrolEnable;
u32 ci_MediaPatrolStartTime;
u32 ci_MediaPatrolStopTime;
u8 ci_SpinUpDownEnable;
u8 ci_Reserved13[35];
u8 ci_SmartLogEnable;
u8 ci_SmartPollInterval;
u8 ci_SmartLogLevel;
u8 ci_EnclosurePollInterval;
u8 ci_TempThresholdWarning;
u8 ci_TempThresholdCritical;
u8 ci_CtrlTempThresholdWarning;
u8 ci_CtrlTempThresholdCritical;
u8 ci_NumOfDrivesToSpin;
u8 ci_TimeBetweenSpinUp;
u8 ci_CoercionEnable;
u8 ci_CoercionMethod;
u8 ci_ElevatorSortingEnable;
u8 ci_BuzzerEnable;
u8 ci_LUNMasking;
u8 ci_Reserved14[25];
u32 ci_NoOfCmdProcessed;
u32 ci_NoOfReadCmdProcessed;
u32 ci_NoOfWriteCmdProcessed;
u32 ci_NoOfFailedCmd;
u32 ci_NoOfCtrlReset;
u8 ci_Reserved15[37];
u8 ci_MaxDriveForRAID5;
u16 ci_MaxDriveInDiskArray;
u8 ci_MaxAxelsForRAID50;
u8 ci_MaxAxelsForRAID51;
u8 ci_Reserved16[36];
u8 ci_MasterMode;
u8 ci_ActiveMode;
u8 ci_PartnerActiveMode;
u8 ci_PartnerStatus;
u8 ci_Reserved17[36];
u16 ci_NoOfLogicalDriveReserved;
u8 ci_Reserved18[36];
u8 ci_DebugLevel;
u8 ci_Reserved19[83];
}micControllerInfoPage0_t;
/* Possible values for ci_DebugLevel &
cs_DebugLevel */
#define DBG_MSG_LEVEL_DEBUG 1
#define DBG_MSG_LEVEL_INFO 2
#define DBG_MSG_LEVEL_WARNING 3
#define DBG_MSG_LEVEL_ERROR 4
#define DBG_MSG_LEVEL_FATAL 5
#define DBG_MSG_LEVEL_SILENT 6
typedef struct micControllerInfoPage1
{
u16 ci1_PageCode;
u16 ci1_PageLength;
u16 ci1_DeviceID;
u8 ci1_PriBootLoaderMajorNo;
u8 ci1_PriBootLoaderMinorNo;
u8 ci1_PriBootLoaderBuildNo;
u8 ci1_PriBootLoaderBuildMonth;
u8 ci1_PriBootLoaderBuildDate;
u8 ci1_PriBootLoaderOEMCode;
u16 ci1_PriBootLoaderBuildYear;
u8 ci1_PriFWMajorNo;
u8 ci1_PriFWMinorNo;
u8 ci1_PriFWBuildNo;
u8 ci1_PriFWBuildMonth;
u8 ci1_PriFWBuildDate;
u8 ci1_PriFWOEMCode;
u16 ci1_PriFWBuildYear;
u8 ci1_PriSWMajorNo;
u8 ci1_PriSWMinorNo;
u8 ci1_PriSWBuildNo;
u8 ci1_PriSWBuildMonth;
u8 ci1_PriSWBuildDate;
u8 ci1_PriSWOEMCode;
u16 ci1_PriSWBuildYear;
u8 ci1_SecBootLoaderMajorNo;
u8 ci1_SecBootLoaderMinorNo;
u8 ci1_SecBootLoaderBuildNo;
u8 ci1_SecBootLoaderBuildMonth;
u8 ci1_SecBootLoaderBuildDate;
u8 ci1_SecBootLoaderOEMCode;
u16 ci1_SecBootLoaderBuildYear;
u8 ci1_SecFWMajorNo;
u8 ci1_SecFWMinorNo;
u8 ci1_SecFWBuildNo;
u8 ci1_SecFWBuildMonth;
u8 ci1_SecFWBuildDate;
u8 ci1_SecFWOEMCode;
u16 ci1_SecFWBuildYear;
u8 ci1_SecSWMajorNo;
u8 ci1_SecSWMinorNo;
u8 ci1_SecSWBuildNo;
u8 ci1_SecSWBuildMonth;
u8 ci1_SecSWBuildDate;
u8 ci1_SecSWOEMCode;
u16 ci1_SecSWBuildYear;
}micControllerInfoPage1_t;
typedef struct micControllerInfoPage2
{
u16 ci2_PageCode;
u16 ci2_PageLength;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -