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 + -
显示快捷键?