⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zfcp_def.h

📁 linux-2.6.15.6
💻 H
📖 第 1 页 / 共 3 页
字号:
#define ZFCP_DBF_ELS_PAYLOAD	32#define ZFCP_DBF_ELS_MAX_PAYLOAD 1024	u8 payload[ZFCP_DBF_ELS_PAYLOAD];} __attribute__ ((packed));struct zfcp_san_dbf_record {	u8 tag[ZFCP_DBF_TAG_SIZE];	u64 fsf_reqid;	u32 fsf_seqno;	u32 s_id;	u32 d_id;	union {		struct zfcp_san_dbf_record_ct ct;		struct zfcp_san_dbf_record_els els;	} type;} __attribute__ ((packed));struct zfcp_scsi_dbf_record {	u8 tag[ZFCP_DBF_TAG_SIZE];	u8 tag2[ZFCP_DBF_TAG_SIZE];	u32 scsi_id;	u32 scsi_lun;	u32 scsi_result;	u64 scsi_cmnd;	u64 scsi_serial;#define ZFCP_DBF_SCSI_OPCODE	16	u8 scsi_opcode[ZFCP_DBF_SCSI_OPCODE];	u8 scsi_retries;	u8 scsi_allowed;	u64 fsf_reqid;	u32 fsf_seqno;	u64 fsf_issued;	union {		struct {			u64 fsf_reqid;			u32 fsf_seqno;			u64 fsf_issued;		} new_fsf_req;		struct {			u8 rsp_validity;			u8 rsp_scsi_status;			u32 rsp_resid;			u8 rsp_code;#define ZFCP_DBF_SCSI_FCP_SNS_INFO	16#define ZFCP_DBF_SCSI_MAX_FCP_SNS_INFO	256			u32 sns_info_len;			u8 sns_info[ZFCP_DBF_SCSI_FCP_SNS_INFO];		} fcp;	} type;} __attribute__ ((packed));/* * FC-FS stuff */#define R_A_TOV				10 /* seconds */#define ZFCP_ELS_TIMEOUT		(2 * R_A_TOV)#define ZFCP_LS_RLS			0x0f#define ZFCP_LS_ADISC			0x52#define ZFCP_LS_RPS			0x56#define ZFCP_LS_RSCN			0x61#define ZFCP_LS_RNID			0x78struct zfcp_ls_rjt_par {	u8 action; 	u8 reason_code; 	u8 reason_expl; 	u8 vendor_unique;} __attribute__ ((packed));struct zfcp_ls_adisc {	u8		code;	u8		field[3];	u32		hard_nport_id;	u64		wwpn;	u64		wwnn;	u32		nport_id;} __attribute__ ((packed));struct zfcp_ls_adisc_acc {	u8		code;	u8		field[3];	u32		hard_nport_id;	u64		wwpn;	u64		wwnn;	u32		nport_id;} __attribute__ ((packed));struct zfcp_rc_entry {	u8 code;	const char *description;};/* * FC-GS-2 stuff */#define ZFCP_CT_REVISION		0x01#define ZFCP_CT_DIRECTORY_SERVICE	0xFC#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)/******************** 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"/* read-only LUN sharing switch initial value */#define ZFCP_RO_LUN_SHARING_DEFAULTS 0/* 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/*************** ADAPTER/PORT/UNIT AND FSF_REQ STATUS FLAGS ******************//*  * Note, the leftmost status byte is common among adapter, port  * and unit */#define ZFCP_COMMON_FLAGS			0xfff00000#define ZFCP_SPECIFIC_FLAGS			0x000fffff/* 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#define ZFCP_STATUS_COMMON_ACCESS_DENIED	0x00800000#define ZFCP_STATUS_COMMON_ACCESS_BOXED		0x00400000/* 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_XPORT_OK		0x00000800#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#define ZFCP_STATUS_PORT_ACCESS_DENIED		0x00000040/* 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#define ZFCP_STATUS_UNIT_TEMPORARY		0x00000002#define ZFCP_STATUS_UNIT_SHARED			0x00000004#define ZFCP_STATUS_UNIT_READONLY		0x00000008/* 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;};/* * 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 {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -