disklog.h revision 2
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
*/
#ifndef _disklog_H
#define _disklog_H
#ifdef __cplusplus
extern "c" {
#endif
#include <stdio.h>
#define DL_ROOT "/"
#define DL_SD_DRIVER "sd"
#define DL_SSD_DRIVER "ssd"
#define DL_DEVICES "/devices"
#define DL_DEV "/dev"
#define DL_DISKWD ":wd,raw"
#define DL_DISKS2 ":c,raw"
#define DL_FILENAME_SUF ".disklog"
#define DL_SEAGATE "SEAGATE"
#define DL_HITACHI "HITACHI"
#define DL_FILEMODE "w"
#define DL_DIRMODE 0755
#define DL_SUCCESS 0
#define DL_FAILURE 1
#define DL_INQ_DATALEN 0xff
#define DL_PAGELEN 0xff
#define DL_DATALEN 0xffff
#define DL_THREADS_NUM 50
#define DL_HITACHI_LOGDUMP_OFFSET 0
#define DL_HITACHI_LOGDUMP_OFFSET_INC 0xffff
#define DL_HITACHI_LOGDUMP_DATALEN 0xffff
#define DL_HITACHI_LOGDUMP_LOGNAME_SUF ".hitachi.dumplog"
#define DL_SEAGATE_LOGDUMP_FIXED 0xfe
#define DL_SEAGATE_LOGDUMP_OFFSET 0
#define DL_SEAGATE_LOGDUMP_OFFSET_INC 0x200
#define DL_SEAGATE_LOGDUMP_XFER_MSB 0x200
#define DL_SEAGATE_LOGDUMP_DATALEN 0x80000
#define DL_SEAGATE_LOGDUMP_LOGNAME_SUF ".seagate.dumplog"
#define DL_DEFAULT_SAS_PHY_LOG_DESC_LEN 48
#pragma pack(1)
typedef enum dl_log_page_code {
DL_LOG_PC_BACK_SCAN = 0x15,
DL_LOG_PC_SEAGATE_CACHE = 0x37,
DL_LOG_PC_SEAGATE_FACTORY = 0x3e
typedef enum dl_log_param_code {
DL_LOG_PC_ERR_HITACHI_TR = 0x8009,
DL_LOG_PC_ERR_HITACHI_POS = 0x8015,
DL_LOG_PC_BACK_SCAN_END = 0X800,
typedef enum dl_mode_sub_page_code {
DL_MODE_SPC_NONE = 0x0,
DL_MODE_SPC_SPECIAL = 0xffff
typedef enum dl_log_params_back_scan_status_code {
DL_LPBS_SC_NONE = 0x0,
DL_LPBS_SC_MEDIUM = 0x1,
DL_LPBS_SC_PRESCAN = 0x2,
DL_LPBS_SC_FATAL = 0x3,
DL_LPBS_SC_VENDOR_ERR = 0x4,
DL_LPBS_SC_NO_PLIST = 0x5,
DL_LPBS_SC_VENDOR_CAUSE = 0x6,
DL_LPBS_SC_HIGH_TEMP = 0x7,
DL_LPBS_SC_INACTIVE = 0x8
typedef struct dl_log_params_back_scan_status {
typedef struct dl_log_params_medium_scan {
lpms_sense_key :4,
lpms_reassign_status :4);
char lpms_vendor[5];
typedef enum dl_log_protocol_port_id {
DL_LOG_PP_ID_SAS = 0x06
typedef struct dl_log_params_protocol_port_header {
lppph_id :4,
_reserved1 :4);
typedef enum dl_log_protocol_dev_type {
DL_LOG_PD_TYPE_NONE = 0,
typedef enum dl_log_protocol_reason {
DL_LOG_P_REASON_SMP = 3,
DL_LOG_P_REASON_MUX = 5,
DL_LOG_P_REASON_IT = 6,
DL_LOG_P_REASON_STOP = 8,
typedef enum dl_log_protocol_link_rate {
DL_LOG_PL_RATE_RESET = 5,
DL_LOG_PL_RESERVED = 7,
DL_LOG_PL_RATE_G1 = 8,
DL_LOG_PL_RATE_G2 = 9,
DL_LOG_PL_RATE_G3 = 0xa
/*
* SAS-2 10.2.8.1 Table 232 SAS phy log descriptor
*/
typedef struct dl_log_params_protocol_spld_header {
_reserved3 :1);
lppsh_link_rate :4,
lppsh_reason :4);
_reserved4 :1,
_reserved5 :4);
_reserved6 :1,
_reserved7 :4);
typedef enum dl_log_protocol_phy_event_name {
DL_LOG_PPEN_NO_EVENT = 0,
DL_LOG_PPEN_ADDR_ERR_CNT = 0x20,
DL_LOG_PPEN_RECEIVED_ABANDON_CNT = 0x22,
DL_LOG_PPEN_RECEIVED_RETRY_CNT = 0x24,
DL_LOG_PPEN_RECEIVED_BREAK_CNT = 0x28,
DL_LOG_PPEN_BREAK_TIMEOUT_CNT = 0x29,
DL_LOG_PPEN_CONN_CNT = 0x2a,
DL_LOG_PPEN_PEAK_BLOCKED_CNT = 0x2b,
DL_LOG_PPEN_PEAK_WAIT_TIME = 0x2c,
DL_LOG_PPEN_PEAK_ARBI_TIME = 0x2d,
DL_LOG_PPEN_PEAK_CONN_TIME = 0x2e,
DL_LOG_PPEN_TRANSMITTED_SSP_CNT = 0x40,
DL_LOG_PPEN_RECEIVED_SSP_CNT = 0x41,
DL_LOG_PPEN_RECEIVED_SSP_ERR_CNT = 0x43,
DL_LOG_PPEN_TRANSMITTED_CB_CNT = 0x44,
DL_LOG_PPEN_RECEIVED_CB_CNT = 0x45,
DL_LOG_PPEN_TRANSMITTED_SATA_CNT = 0x50,
DL_LOG_PPEN_RECEIVED_SATA_CNT = 0x51,
DL_LOG_PPEN_SATA_BUF_CNT = 0x52,
DL_LOG_PPEN_TRANSMITTED_SMP_CNT = 0x60,
DL_LOG_PPEN_RECEIVED_SMP_CNT = 0x61,
/*
* SAS-2 10.4.3.14.4 Table 297 Phy event descriptor
*/
typedef struct dl_log_params_protocol_ped {
/* HITACHI Log Dump Command(E6) */
typedef struct dl_hitachi_logdump_cdb {
hlc_mode :4,
_reserved2 :4);
hlc_link :1,
hlc_flag :1,
_reserved3 :4,
hlc_vu :2);
/* SEAGATE Log Dump Command(F7) */
typedef struct dl_seagate_logdump_cdb {
_reserved1 :1,
slc_clear :1,
slc_dump :1,
slc_read :1,
_reserved2 :4);
#pragma pack()
#ifdef __cplusplus
}
#endif
#endif /* _disklog_H */