zfcp_def.h
来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 1,175 行 · 第 1/3 页
H
1,175 行
#define ZFCP_CT_NAME_SERVER 0x02#define ZFCP_CT_SYNCHRONOUS 0x00#define ZFCP_CT_GID_PN 0x0121#define ZFCP_CT_MAX_SIZE 0x1020#define ZFCP_CT_ACCEPT 0x8002#define ZFCP_CT_REJECT 0x8001/* * FC-GS-4 stuff */#define ZFCP_CT_TIMEOUT (3 * R_A_TOV)/***************** S390 DEBUG FEATURE SPECIFIC DEFINES ***********************//* debug feature entries per adapter */#define ZFCP_ERP_DBF_INDEX 1 #define ZFCP_ERP_DBF_AREAS 2#define ZFCP_ERP_DBF_LENGTH 16#define ZFCP_ERP_DBF_LEVEL 3#define ZFCP_ERP_DBF_NAME "zfcperp"#define ZFCP_CMD_DBF_INDEX 2#define ZFCP_CMD_DBF_AREAS 1#define ZFCP_CMD_DBF_LENGTH 8#define ZFCP_CMD_DBF_LEVEL 3#define ZFCP_CMD_DBF_NAME "zfcpcmd"#define ZFCP_ABORT_DBF_INDEX 2#define ZFCP_ABORT_DBF_AREAS 1#define ZFCP_ABORT_DBF_LENGTH 8#define ZFCP_ABORT_DBF_LEVEL 6#define ZFCP_ABORT_DBF_NAME "zfcpabt"#define ZFCP_IN_ELS_DBF_INDEX 2#define ZFCP_IN_ELS_DBF_AREAS 1#define ZFCP_IN_ELS_DBF_LENGTH 8#define ZFCP_IN_ELS_DBF_LEVEL 6#define ZFCP_IN_ELS_DBF_NAME "zfcpels"/******************** LOGGING MACROS AND DEFINES *****************************//* * Logging may be applied on certain kinds of driver operations * independently. Additionally, different log-levels are supported for * each of these areas. */#define ZFCP_NAME "zfcp"/* independent log areas */#define ZFCP_LOG_AREA_OTHER 0#define ZFCP_LOG_AREA_SCSI 1#define ZFCP_LOG_AREA_FSF 2#define ZFCP_LOG_AREA_CONFIG 3#define ZFCP_LOG_AREA_CIO 4#define ZFCP_LOG_AREA_QDIO 5#define ZFCP_LOG_AREA_ERP 6#define ZFCP_LOG_AREA_FC 7/* log level values*/#define ZFCP_LOG_LEVEL_NORMAL 0#define ZFCP_LOG_LEVEL_INFO 1#define ZFCP_LOG_LEVEL_DEBUG 2#define ZFCP_LOG_LEVEL_TRACE 3/* * this allows removal of logging code by the preprocessor * (the most detailed log level still to be compiled in is specified, * higher log levels are removed) */#define ZFCP_LOG_LEVEL_LIMIT ZFCP_LOG_LEVEL_TRACE/* get "loglevel" nibble assignment */#define ZFCP_GET_LOG_VALUE(zfcp_lognibble) \ ((atomic_read(&zfcp_data.loglevel) >> (zfcp_lognibble<<2)) & 0xF)/* set "loglevel" nibble */#define ZFCP_SET_LOG_NIBBLE(value, zfcp_lognibble) \ (value << (zfcp_lognibble << 2))/* all log-level defaults are combined to generate initial log-level */#define ZFCP_LOG_LEVEL_DEFAULTS \ (ZFCP_SET_LOG_NIBBLE(ZFCP_LOG_LEVEL_NORMAL, ZFCP_LOG_AREA_OTHER) | \ ZFCP_SET_LOG_NIBBLE(ZFCP_LOG_LEVEL_NORMAL, ZFCP_LOG_AREA_SCSI) | \ ZFCP_SET_LOG_NIBBLE(ZFCP_LOG_LEVEL_NORMAL, ZFCP_LOG_AREA_FSF) | \ ZFCP_SET_LOG_NIBBLE(ZFCP_LOG_LEVEL_NORMAL, ZFCP_LOG_AREA_CONFIG) | \ ZFCP_SET_LOG_NIBBLE(ZFCP_LOG_LEVEL_NORMAL, ZFCP_LOG_AREA_CIO) | \ ZFCP_SET_LOG_NIBBLE(ZFCP_LOG_LEVEL_NORMAL, ZFCP_LOG_AREA_QDIO) | \ ZFCP_SET_LOG_NIBBLE(ZFCP_LOG_LEVEL_NORMAL, ZFCP_LOG_AREA_ERP) | \ ZFCP_SET_LOG_NIBBLE(ZFCP_LOG_LEVEL_NORMAL, ZFCP_LOG_AREA_FC))/* check whether we have the right level for logging */#define ZFCP_LOG_CHECK(level) \ ((ZFCP_GET_LOG_VALUE(ZFCP_LOG_AREA)) >= level)/* logging routine for zfcp */#define _ZFCP_LOG(fmt, args...) \ printk(KERN_ERR ZFCP_NAME": %s(%d): " fmt, __FUNCTION__, \ __LINE__ , ##args);#define ZFCP_LOG(level, fmt, args...) \do { \ if (ZFCP_LOG_CHECK(level)) \ _ZFCP_LOG(fmt, ##args); \} while (0) #if ZFCP_LOG_LEVEL_LIMIT < ZFCP_LOG_LEVEL_NORMAL# define ZFCP_LOG_NORMAL(fmt, args...)#else# define ZFCP_LOG_NORMAL(fmt, args...) \do { \ if (ZFCP_LOG_CHECK(ZFCP_LOG_LEVEL_NORMAL)) \ printk(KERN_ERR ZFCP_NAME": " fmt, ##args); \} while (0)#endif#if ZFCP_LOG_LEVEL_LIMIT < ZFCP_LOG_LEVEL_INFO# define ZFCP_LOG_INFO(fmt, args...)#else# define ZFCP_LOG_INFO(fmt, args...) \do { \ if (ZFCP_LOG_CHECK(ZFCP_LOG_LEVEL_INFO)) \ printk(KERN_ERR ZFCP_NAME": " fmt, ##args); \} while (0)#endif#if ZFCP_LOG_LEVEL_LIMIT < ZFCP_LOG_LEVEL_DEBUG# define ZFCP_LOG_DEBUG(fmt, args...)#else# define ZFCP_LOG_DEBUG(fmt, args...) \ ZFCP_LOG(ZFCP_LOG_LEVEL_DEBUG, fmt , ##args)#endif#if ZFCP_LOG_LEVEL_LIMIT < ZFCP_LOG_LEVEL_TRACE# define ZFCP_LOG_TRACE(fmt, args...)#else# define ZFCP_LOG_TRACE(fmt, args...) \ ZFCP_LOG(ZFCP_LOG_LEVEL_TRACE, fmt , ##args)#endif#ifndef ZFCP_PRINT_FLAGS# define ZFCP_LOG_FLAGS(level, fmt, args...)#elseextern u32 flags_dump;# define ZFCP_LOG_FLAGS(level, fmt, args...) \do { \ if (level <= flags_dump) \ _ZFCP_LOG(fmt, ##args); \} while (0)#endif/*************** ADAPTER/PORT/UNIT AND FSF_REQ STATUS FLAGS ******************//* * Note, the leftmost status byte is common among adapter, port * and unit */#define ZFCP_COMMON_FLAGS 0xff000000#define ZFCP_SPECIFIC_FLAGS 0x00ffffff/* common status bits */#define ZFCP_STATUS_COMMON_REMOVE 0x80000000#define ZFCP_STATUS_COMMON_RUNNING 0x40000000#define ZFCP_STATUS_COMMON_ERP_FAILED 0x20000000#define ZFCP_STATUS_COMMON_UNBLOCKED 0x10000000#define ZFCP_STATUS_COMMON_OPENING 0x08000000#define ZFCP_STATUS_COMMON_OPEN 0x04000000#define ZFCP_STATUS_COMMON_CLOSING 0x02000000#define ZFCP_STATUS_COMMON_ERP_INUSE 0x01000000/* adapter status */#define ZFCP_STATUS_ADAPTER_QDIOUP 0x00000002#define ZFCP_STATUS_ADAPTER_REGISTERED 0x00000004#define ZFCP_STATUS_ADAPTER_XCONFIG_OK 0x00000008#define ZFCP_STATUS_ADAPTER_HOST_CON_INIT 0x00000010#define ZFCP_STATUS_ADAPTER_ERP_THREAD_UP 0x00000020#define ZFCP_STATUS_ADAPTER_ERP_THREAD_KILL 0x00000080#define ZFCP_STATUS_ADAPTER_ERP_PENDING 0x00000100#define ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED 0x00000200#define ZFCP_STATUS_ADAPTER_SCSI_UP \ (ZFCP_STATUS_COMMON_UNBLOCKED | \ ZFCP_STATUS_ADAPTER_REGISTERED)/* FC-PH/FC-GS well-known address identifiers for generic services */#define ZFCP_DID_MANAGEMENT_SERVICE 0xFFFFFA#define ZFCP_DID_TIME_SERVICE 0xFFFFFB#define ZFCP_DID_DIRECTORY_SERVICE 0xFFFFFC#define ZFCP_DID_ALIAS_SERVICE 0xFFFFF8#define ZFCP_DID_KEY_DISTRIBUTION_SERVICE 0xFFFFF7/* remote port status */#define ZFCP_STATUS_PORT_PHYS_OPEN 0x00000001#define ZFCP_STATUS_PORT_DID_DID 0x00000002#define ZFCP_STATUS_PORT_PHYS_CLOSING 0x00000004#define ZFCP_STATUS_PORT_NO_WWPN 0x00000008#define ZFCP_STATUS_PORT_NO_SCSI_ID 0x00000010#define ZFCP_STATUS_PORT_INVALID_WWPN 0x00000020/* for ports with well known addresses */#define ZFCP_STATUS_PORT_WKA \ (ZFCP_STATUS_PORT_NO_WWPN | \ ZFCP_STATUS_PORT_NO_SCSI_ID)/* logical unit status */#define ZFCP_STATUS_UNIT_NOTSUPPUNITRESET 0x00000001/* FSF request status (this does not have a common part) */#define ZFCP_STATUS_FSFREQ_NOT_INIT 0x00000000#define ZFCP_STATUS_FSFREQ_POOL 0x00000001#define ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT 0x00000002#define ZFCP_STATUS_FSFREQ_COMPLETED 0x00000004#define ZFCP_STATUS_FSFREQ_ERROR 0x00000008#define ZFCP_STATUS_FSFREQ_CLEANUP 0x00000010#define ZFCP_STATUS_FSFREQ_ABORTING 0x00000020#define ZFCP_STATUS_FSFREQ_ABORTSUCCEEDED 0x00000040#define ZFCP_STATUS_FSFREQ_ABORTNOTNEEDED 0x00000080#define ZFCP_STATUS_FSFREQ_ABORTED 0x00000100#define ZFCP_STATUS_FSFREQ_TMFUNCFAILED 0x00000200#define ZFCP_STATUS_FSFREQ_TMFUNCNOTSUPP 0x00000400#define ZFCP_STATUS_FSFREQ_RETRY 0x00000800#define ZFCP_STATUS_FSFREQ_DISMISSED 0x00001000/*********************** ERROR RECOVERY PROCEDURE DEFINES ********************/#define ZFCP_MAX_ERPS 3#define ZFCP_ERP_FSFREQ_TIMEOUT (30 * HZ)#define ZFCP_ERP_MEMWAIT_TIMEOUT HZ#define ZFCP_STATUS_ERP_TIMEDOUT 0x10000000#define ZFCP_STATUS_ERP_CLOSE_ONLY 0x01000000#define ZFCP_STATUS_ERP_DISMISSING 0x00100000#define ZFCP_STATUS_ERP_DISMISSED 0x00200000#define ZFCP_STATUS_ERP_LOWMEM 0x00400000#define ZFCP_ERP_STEP_UNINITIALIZED 0x00000000#define ZFCP_ERP_STEP_FSF_XCONFIG 0x00000001#define ZFCP_ERP_STEP_PHYS_PORT_CLOSING 0x00000010#define ZFCP_ERP_STEP_PORT_CLOSING 0x00000100#define ZFCP_ERP_STEP_NAMESERVER_OPEN 0x00000200#define ZFCP_ERP_STEP_NAMESERVER_LOOKUP 0x00000400#define ZFCP_ERP_STEP_PORT_OPENING 0x00000800#define ZFCP_ERP_STEP_UNIT_CLOSING 0x00001000#define ZFCP_ERP_STEP_UNIT_OPENING 0x00002000/* Ordered by escalation level (necessary for proper erp-code operation) */#define ZFCP_ERP_ACTION_REOPEN_ADAPTER 0x4#define ZFCP_ERP_ACTION_REOPEN_PORT_FORCED 0x3#define ZFCP_ERP_ACTION_REOPEN_PORT 0x2#define ZFCP_ERP_ACTION_REOPEN_UNIT 0x1#define ZFCP_ERP_ACTION_RUNNING 0x1#define ZFCP_ERP_ACTION_READY 0x2#define ZFCP_ERP_SUCCEEDED 0x0#define ZFCP_ERP_FAILED 0x1#define ZFCP_ERP_CONTINUES 0x2#define ZFCP_ERP_EXIT 0x3#define ZFCP_ERP_DISMISSED 0x4#define ZFCP_ERP_NOMEM 0x5/******************** CFDC SPECIFIC STUFF *****************************//* Firewall data channel sense data record */struct zfcp_cfdc_sense_data { u32 signature; /* Request signature */ u32 devno; /* FCP adapter device number */ u32 command; /* Command code */ u32 fsf_status; /* FSF request status and status qualifier */ u8 fsf_status_qual[FSF_STATUS_QUALIFIER_SIZE]; u8 payloads[256]; /* Access conflicts list */ u8 control_file[0]; /* Access control table */};#define ZFCP_CFDC_SIGNATURE 0xCFDCACDF#define ZFCP_CFDC_CMND_DOWNLOAD_NORMAL 0x00010001#define ZFCP_CFDC_CMND_DOWNLOAD_FORCE 0x00010101#define ZFCP_CFDC_CMND_FULL_ACCESS 0x00000201#define ZFCP_CFDC_CMND_RESTRICTED_ACCESS 0x00000401#define ZFCP_CFDC_CMND_UPLOAD 0x00010002#define ZFCP_CFDC_DOWNLOAD 0x00000001#define ZFCP_CFDC_UPLOAD 0x00000002#define ZFCP_CFDC_WITH_CONTROL_FILE 0x00010000#define ZFCP_CFDC_DEV_NAME "zfcp_cfdc"#define ZFCP_CFDC_DEV_MAJOR MISC_MAJOR#define ZFCP_CFDC_DEV_MINOR MISC_DYNAMIC_MINOR#define ZFCP_CFDC_MAX_CONTROL_FILE_SIZE 127 * 1024/************************* STRUCTURE DEFINITIONS *****************************/struct zfcp_fsf_req;/* holds various memory pools of an adapter */struct zfcp_adapter_mempool { mempool_t *fsf_req_erp; mempool_t *fsf_req_scsi; mempool_t *fsf_req_abort; mempool_t *fsf_req_status_read; mempool_t *data_status_read; mempool_t *data_gid_pn;};struct zfcp_exchange_config_data{};struct zfcp_open_port { struct zfcp_port *port;};struct zfcp_close_port { struct zfcp_port *port;};struct zfcp_open_unit { struct zfcp_unit *unit;};struct zfcp_close_unit { struct zfcp_unit *unit;};struct zfcp_close_physical_port { struct zfcp_port *port;};struct zfcp_send_fcp_command_task { struct zfcp_fsf_req *fsf_req; struct zfcp_unit *unit; struct scsi_cmnd *scsi_cmnd; unsigned long start_jiffies;};struct zfcp_send_fcp_command_task_management { struct zfcp_unit *unit;};struct zfcp_abort_fcp_command { struct zfcp_fsf_req *fsf_req; struct zfcp_unit *unit;};/* * header for CT_IU */struct ct_hdr { u8 revision; // 0x01 u8 in_id[3]; // 0x00 u8 gs_type; // 0xFC Directory Service u8 gs_subtype; // 0x02 Name Server u8 options; // 0x00 single bidirectional exchange u8 reserved0; u16 cmd_rsp_code; // 0x0121 GID_PN, or 0x0100 GA_NXT u16 max_res_size; // <= (4096 - 16) / 4 u8 reserved1; u8 reason_code; u8 reason_code_expl; u8 vendor_unique;} __attribute__ ((packed));/* nameserver request CT_IU -- for requests where * a port name is required */struct ct_iu_gid_pn_req { struct ct_hdr header; wwn_t wwpn;} __attribute__ ((packed));/* FS_ACC IU and data unit for GID_PN nameserver request */struct ct_iu_gid_pn_resp { struct ct_hdr header; fc_id_t d_id;} __attribute__ ((packed));typedef void (*zfcp_send_ct_handler_t)(unsigned long);/** * struct zfcp_send_ct - used to pass parameters to function zfcp_fsf_send_ct * @port: port where the request is sent to * @req: scatter-gather list for request * @resp: scatter-gather list for response * @req_count: number of elements in request scatter-gather list * @resp_count: number of elements in response scatter-gather list * @handler: handler function (called for response to the request) * @handler_data: data passed to handler function
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?