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

📄 ispmbox.h

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 H
📖 第 1 页 / 共 2 页
字号:
#define RQCS_ABORTED			0x0005#define RQCS_TIMEOUT			0x0006#define RQCS_DATA_OVERRUN		0x0007#define RQCS_DATA_UNDERRUN		0x0015#define	RQCS_QUEUE_FULL			0x001C/* 1X00 Only Completion Codes */#define RQCS_INCOMPLETE			0x0001#define RQCS_TRANSPORT_ERROR		0x0003#define RQCS_COMMAND_OVERRUN		0x0008#define RQCS_STATUS_OVERRUN		0x0009#define RQCS_BAD_MESSAGE		0x000a#define RQCS_NO_MESSAGE_OUT		0x000b#define RQCS_EXT_ID_FAILED		0x000c#define RQCS_IDE_MSG_FAILED		0x000d#define RQCS_ABORT_MSG_FAILED		0x000e#define RQCS_REJECT_MSG_FAILED		0x000f#define RQCS_NOP_MSG_FAILED		0x0010#define RQCS_PARITY_ERROR_MSG_FAILED	0x0011#define RQCS_DEVICE_RESET_MSG_FAILED	0x0012#define RQCS_ID_MSG_FAILED		0x0013#define RQCS_UNEXP_BUS_FREE		0x0014#define	RQCS_XACT_ERR1			0x0018#define	RQCS_XACT_ERR2			0x0019#define	RQCS_XACT_ERR3			0x001A#define	RQCS_BAD_ENTRY			0x001B#define	RQCS_PHASE_SKIPPED		0x001D#define	RQCS_ARQS_FAILED		0x001E#define	RQCS_WIDE_FAILED		0x001F#define	RQCS_SYNCXFER_FAILED		0x0020#define	RQCS_LVD_BUSERR			0x0021/* 2X00 Only Completion Codes */#define	RQCS_PORT_UNAVAILABLE		0x0028#define	RQCS_PORT_LOGGED_OUT		0x0029#define	RQCS_PORT_CHANGED		0x002A#define	RQCS_PORT_BUSY			0x002B/* * 1X00 specific State Flags  */#define RQSF_GOT_BUS			0x0100#define RQSF_GOT_TARGET			0x0200#define RQSF_SENT_CDB			0x0400#define RQSF_XFRD_DATA			0x0800#define RQSF_GOT_STATUS			0x1000#define RQSF_GOT_SENSE			0x2000#define	RQSF_XFER_COMPLETE		0x4000/* * 2X00 specific State Flags * (same as 1X00 except RQSF_GOT_BUS/RQSF_GOT_TARGET are not available) */#define	RQSF_DATA_IN			0x0020#define	RQSF_DATA_OUT			0x0040#define	RQSF_STAG			0x0008#define	RQSF_OTAG			0x0004#define	RQSF_HTAG			0x0002/* * 1X00 Status Flags */#define RQSTF_DISCONNECT		0x0001#define RQSTF_SYNCHRONOUS		0x0002#define RQSTF_PARITY_ERROR		0x0004#define RQSTF_BUS_RESET			0x0008#define RQSTF_DEVICE_RESET		0x0010#define RQSTF_ABORTED			0x0020#define RQSTF_TIMEOUT			0x0040#define RQSTF_NEGOTIATION		0x0080/* * 2X00 specific state flags *//* RQSF_SENT_CDB	*//* RQSF_XFRD_DATA	*//* RQSF_GOT_STATUS	*//* RQSF_XFER_COMPLETE	*//* * 2X00 specific status flags *//* RQSTF_ABORTED *//* RQSTF_TIMEOUT */#define	RQSTF_DMA_ERROR			0x0080#define	RQSTF_LOGOUT			0x2000/* * Miscellaneous */#ifndef	ISP_EXEC_THROTTLE#define	ISP_EXEC_THROTTLE	16#endif/* * About Firmware returns an 'attribute' word in mailbox 6. */#define	ISP_FW_ATTR_TMODE	0x01#define	ISP_FW_ATTR_SCCLUN	0x02#define	ISP_FW_ATTR_FABRIC	0x04#define	ISP_FW_ATTR_CLASS2	0x08#define	ISP_FW_ATTR_FCTAPE	0x10#define	ISP_FW_ATTR_IP		0x20/* * Reduced Interrupt Operation Response Queue Entreis */typedef struct {	isphdr_t	req_header;	u_int32_t	req_handles[15];} isp_rio1_t;typedef struct {	isphdr_t	req_header;	u_int16_t	req_handles[30];} isp_rio2_t;/* * FC (ISP2100) specific data structures *//* * Initialization Control Block * * Version One (prime) format. */typedef struct isp_icb {	u_int8_t	icb_version;	u_int8_t	_reserved0;	u_int16_t	icb_fwoptions;	u_int16_t	icb_maxfrmlen;	u_int16_t	icb_maxalloc;	u_int16_t	icb_execthrottle;	u_int8_t	icb_retry_count;	u_int8_t	icb_retry_delay;	u_int8_t	icb_portname[8];	u_int16_t	icb_hardaddr;	u_int8_t	icb_iqdevtype;	u_int8_t	icb_logintime;	u_int8_t	icb_nodename[8];	u_int16_t	icb_rqstout;	u_int16_t	icb_rspnsin;	u_int16_t	icb_rqstqlen;	u_int16_t	icb_rsltqlen;	u_int16_t	icb_rqstaddr[4];	u_int16_t	icb_respaddr[4];	u_int16_t	icb_lunenables;	u_int8_t	icb_ccnt;	u_int8_t	icb_icnt;	u_int16_t	icb_lunetimeout;	u_int16_t	_reserved1;	u_int16_t	icb_xfwoptions;	u_int8_t	icb_racctimer;	u_int8_t	icb_idelaytimer;	u_int16_t	icb_zfwoptions;	u_int16_t	_reserved2[13];} isp_icb_t;#define	ICB_VERSION1	1#define	ICBOPT_HARD_ADDRESS	0x0001#define	ICBOPT_FAIRNESS		0x0002#define	ICBOPT_FULL_DUPLEX	0x0004#define	ICBOPT_FAST_POST	0x0008#define	ICBOPT_TGT_ENABLE	0x0010#define	ICBOPT_INI_DISABLE	0x0020#define	ICBOPT_INI_ADISC	0x0040#define	ICBOPT_INI_TGTTYPE	0x0080#define	ICBOPT_PDBCHANGE_AE	0x0100#define	ICBOPT_NOLIP		0x0200#define	ICBOPT_SRCHDOWN		0x0400#define	ICBOPT_PREVLOOP		0x0800#define	ICBOPT_STOP_ON_QFULL	0x1000#define	ICBOPT_FULL_LOGIN	0x2000#define	ICBOPT_BOTH_WWNS	0x4000#define	ICBOPT_EXTENDED		0x8000#define	ICBXOPT_CLASS2_ACK0	0x0200#define	ICBXOPT_CLASS2		0x0100#define	ICBXOPT_LOOP_ONLY	(0 << 4)#define	ICBXOPT_PTP_ONLY	(1 << 4)#define	ICBXOPT_LOOP_2_PTP	(2 << 4)#define	ICBXOPT_PTP_2_LOOP	(3 << 4)#define	ICBXOPT_RIO_OFF		0#define	ICBXOPT_RIO_16BIT	1#define	ICBXOPT_RIO_32BIT	2#define	ICBXOPT_RIO_16BIT_IOCB	3#define	ICBXOPT_RIO_32BIT_IOCB	4#define	ICBZOPT_ENA_RDXFR_RDY	0x01#define	ICBZOPT_ENA_OOF		(1 << 6) /* out of order frame handling *//* These 3 only apply to the 2300 */#define	ICBZOPT_RATE_ONEGB	(MBGSD_ONEGB << 14)#define	ICBZOPT_RATE_TWOGB	(MBGSD_TWOGB << 14)#define	ICBZOPT_RATE_AUTO	(MBGSD_AUTO << 14)#define	ICB_MIN_FRMLEN		256#define	ICB_MAX_FRMLEN		2112#define	ICB_DFLT_FRMLEN		1024#define	ICB_DFLT_ALLOC		256#define	ICB_DFLT_THROTTLE	16#define	ICB_DFLT_RDELAY		5#define	ICB_DFLT_RCOUNT		3#define	RQRSP_ADDR0015	0#define	RQRSP_ADDR1631	1#define	RQRSP_ADDR3247	2#define	RQRSP_ADDR4863	3#define	ICB_NNM0	7#define	ICB_NNM1	6#define	ICB_NNM2	5#define	ICB_NNM3	4#define	ICB_NNM4	3#define	ICB_NNM5	2#define	ICB_NNM6	1#define	ICB_NNM7	0#define	MAKE_NODE_NAME_FROM_WWN(array, wwn)	\	array[ICB_NNM0] = (u_int8_t) ((wwn >>  0) & 0xff), \	array[ICB_NNM1] = (u_int8_t) ((wwn >>  8) & 0xff), \	array[ICB_NNM2] = (u_int8_t) ((wwn >> 16) & 0xff), \	array[ICB_NNM3] = (u_int8_t) ((wwn >> 24) & 0xff), \	array[ICB_NNM4] = (u_int8_t) ((wwn >> 32) & 0xff), \	array[ICB_NNM5] = (u_int8_t) ((wwn >> 40) & 0xff), \	array[ICB_NNM6] = (u_int8_t) ((wwn >> 48) & 0xff), \	array[ICB_NNM7] = (u_int8_t) ((wwn >> 56) & 0xff)/* * FC-AL Position Map * * This is an at most 128 byte map that returns either * the LILP or Firmware generated list of ports. * * We deviate a bit from the returned qlogic format to * use an extra bit to say whether this was a LILP or * f/w generated map. */typedef struct {	u_int8_t	fwmap	: 1,			count	: 7;	u_int8_t	map[127];} fcpos_map_t;/* * Port Data Base Element */typedef struct {	u_int16_t	pdb_options;	u_int8_t	pdb_mstate;	u_int8_t	pdb_sstate;#define	BITS2WORD(x)	((x)[0] << 16 | (x)[3] << 8 | (x)[2])	u_int8_t	pdb_hardaddr_bits[4];	u_int8_t	pdb_portid_bits[4];	u_int8_t	pdb_nodename[8];	u_int8_t	pdb_portname[8];	u_int16_t	pdb_execthrottle;	u_int16_t	pdb_exec_count;	u_int8_t	pdb_retry_count;	u_int8_t	pdb_retry_delay;	u_int16_t	pdb_resalloc;	u_int16_t	pdb_curalloc;	u_int16_t	pdb_qhead;	u_int16_t	pdb_qtail;	u_int16_t	pdb_tl_next;	u_int16_t	pdb_tl_last;	u_int16_t	pdb_features;	/* PLOGI, Common Service */	u_int16_t	pdb_pconcurrnt;	/* PLOGI, Common Service */	u_int16_t	pdb_roi;	/* PLOGI, Common Service */	u_int8_t	pdb_target;	u_int8_t	pdb_initiator;	/* PLOGI, Class 3 Control Flags */	u_int16_t	pdb_rdsiz;	/* PLOGI, Class 3 */	u_int16_t	pdb_ncseq;	/* PLOGI, Class 3 */	u_int16_t	pdb_noseq;	/* PLOGI, Class 3 */	u_int16_t	pdb_labrtflg;	u_int16_t	pdb_lstopflg;	u_int16_t	pdb_sqhead;	u_int16_t	pdb_sqtail;	u_int16_t	pdb_ptimer;	u_int16_t	pdb_nxt_seqid;	u_int16_t	pdb_fcount;	u_int16_t	pdb_prli_len;	u_int16_t	pdb_prli_svc0;	u_int16_t	pdb_prli_svc3;	u_int16_t	pdb_loopid;	u_int16_t	pdb_il_ptr;	u_int16_t	pdb_sl_ptr;} isp_pdb_t;#define	PDB_OPTIONS_XMITTING	(1<<11)#define	PDB_OPTIONS_LNKXMIT	(1<<10)#define	PDB_OPTIONS_ABORTED	(1<<9)#define	PDB_OPTIONS_ADISC	(1<<1)#define	PDB_STATE_DISCOVERY	0#define	PDB_STATE_WDISC_ACK	1#define	PDB_STATE_PLOGI		2#define	PDB_STATE_PLOGI_ACK	3#define	PDB_STATE_PRLI		4#define	PDB_STATE_PRLI_ACK	5#define	PDB_STATE_LOGGED_IN	6#define	PDB_STATE_PORT_UNAVAIL	7#define	PDB_STATE_PRLO		8#define	PDB_STATE_PRLO_ACK	9#define	PDB_STATE_PLOGO		10#define	PDB_STATE_PLOG_ACK	11#define		SVC3_TGT_ROLE		0x10#define 	SVC3_INI_ROLE		0x20#define			SVC3_ROLE_MASK	0x30#define			SVC3_ROLE_SHIFT	4/* * CT definition * * This is as the QLogic f/w documentations defines it- which is just opposite, * bit wise, from what the specification defines it as. Additionally, the * ct_response and ct_resid (really from FC-GS-2) need to be byte swapped. */typedef struct {	u_int8_t	ct_revision;	u_int8_t	ct_portid[3];	u_int8_t	ct_fcs_type;	u_int8_t	ct_fcs_subtype;	u_int8_t	ct_options;	u_int8_t	ct_res0;	u_int16_t	ct_response;	u_int16_t	ct_resid;	u_int8_t	ct_res1;	u_int8_t	ct_reason;	u_int8_t	ct_explanation;	u_int8_t	ct_vunique;} ct_hdr_t;#define	FS_ACC	0x8002#define	FS_RJT	0x8001#define	FC4_IP		5 /* ISO/EEC 8802-2 LLC/SNAP "Out of Order Delivery" */#define	FC4_SCSI	8 /* SCSI-3 via Fivre Channel Protocol (FCP) */#define	SNS_GA_NXT	0x100#define	SNS_GPN_ID	0x112#define	SNS_GNN_ID	0x113#define	SNS_GID_FT	0x171#define	SNS_RFT_ID	0x217typedef struct {	u_int16_t	snscb_rblen;	/* response buffer length (words) */	u_int16_t	snscb_res0;	u_int16_t	snscb_addr[4];	/* response buffer address */	u_int16_t	snscb_sblen;	/* subcommand buffer length (words) */	u_int16_t	snscb_res1;	u_int16_t	snscb_data[1];	/* variable data */} sns_screq_t;	/* Subcommand Request Structure */typedef struct {	u_int16_t	snscb_rblen;	/* response buffer length (words) */	u_int16_t	snscb_res0;	u_int16_t	snscb_addr[4];	/* response buffer address */	u_int16_t	snscb_sblen;	/* subcommand buffer length (words) */	u_int16_t	snscb_res1;	u_int16_t	snscb_cmd;	u_int16_t	snscb_res2;	u_int32_t	snscb_res3;	u_int32_t	snscb_port;} sns_ga_nxt_req_t;#define	SNS_GA_NXT_REQ_SIZE	(sizeof (sns_ga_nxt_req_t))typedef struct {	u_int16_t	snscb_rblen;	/* response buffer length (words) */	u_int16_t	snscb_res0;	u_int16_t	snscb_addr[4];	/* response buffer address */	u_int16_t	snscb_sblen;	/* subcommand buffer length (words) */	u_int16_t	snscb_res1;	u_int16_t	snscb_cmd;	u_int16_t	snscb_res2;	u_int32_t	snscb_res3;	u_int32_t	snscb_portid;} sns_gxn_id_req_t;#define	SNS_GXN_ID_REQ_SIZE	(sizeof (sns_gxn_id_req_t))typedef struct {	u_int16_t	snscb_rblen;	/* response buffer length (words) */	u_int16_t	snscb_res0;	u_int16_t	snscb_addr[4];	/* response buffer address */	u_int16_t	snscb_sblen;	/* subcommand buffer length (words) */	u_int16_t	snscb_res1;	u_int16_t	snscb_cmd;	u_int16_t	snscb_mword_div_2;	u_int32_t	snscb_res3;	u_int32_t	snscb_fc4_type;} sns_gid_ft_req_t;#define	SNS_GID_FT_REQ_SIZE	(sizeof (sns_gid_ft_req_t))typedef struct {	u_int16_t	snscb_rblen;	/* response buffer length (words) */	u_int16_t	snscb_res0;	u_int16_t	snscb_addr[4];	/* response buffer address */	u_int16_t	snscb_sblen;	/* subcommand buffer length (words) */	u_int16_t	snscb_res1;	u_int16_t	snscb_cmd;	u_int16_t	snscb_res2;	u_int32_t	snscb_res3;	u_int32_t	snscb_port;	u_int32_t	snscb_fc4_types[8];} sns_rft_id_req_t;#define	SNS_RFT_ID_REQ_SIZE	(sizeof (sns_rft_id_req_t))typedef struct {	ct_hdr_t	snscb_cthdr;	u_int8_t	snscb_port_type;	u_int8_t	snscb_port_id[3];	u_int8_t	snscb_portname[8];	u_int16_t	snscb_data[1];	/* variable data */} sns_scrsp_t;	/* Subcommand Response Structure */typedef struct {	ct_hdr_t	snscb_cthdr;	u_int8_t	snscb_port_type;	u_int8_t	snscb_port_id[3];	u_int8_t	snscb_portname[8];	u_int8_t	snscb_pnlen;		/* symbolic port name length */	u_int8_t	snscb_pname[255];	/* symbolic port name */	u_int8_t	snscb_nodename[8];	u_int8_t	snscb_nnlen;		/* symbolic node name length */	u_int8_t	snscb_nname[255];	/* symbolic node name */	u_int8_t	snscb_ipassoc[8];	u_int8_t	snscb_ipaddr[16];	u_int8_t	snscb_svc_class[4];	u_int8_t	snscb_fc4_types[32];	u_int8_t	snscb_fpname[8];	u_int8_t	snscb_reserved;	u_int8_t	snscb_hardaddr[3];} sns_ga_nxt_rsp_t;	/* Subcommand Response Structure */#define	SNS_GA_NXT_RESP_SIZE	(sizeof (sns_ga_nxt_rsp_t))typedef struct {	ct_hdr_t	snscb_cthdr;	u_int8_t	snscb_wwn[8];} sns_gxn_id_rsp_t;#define	SNS_GXN_ID_RESP_SIZE	(sizeof (sns_gxn_id_rsp_t))typedef struct {	ct_hdr_t	snscb_cthdr;	struct {		u_int8_t	control;		u_int8_t	portid[3];	} snscb_ports[1];} sns_gid_ft_rsp_t;#define	SNS_GID_FT_RESP_SIZE(x)	((sizeof (sns_gid_ft_rsp_t)) + ((x - 1) << 2))#define	SNS_RFT_ID_RESP_SIZE	(sizeof (ct_hdr_t))#endif	/* _ISPMBOX_H */

⌨️ 快捷键说明

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