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

📄 bvp_ni.h

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 H
字号:
/*	@(#)bvp_ni.h	4.1	ULTRIX	7/2/90	*//************************************************************************ *									* *			Copyright (c) 1986,87 by			* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//* * * 15-Jan-88 	lp *	Couple of changes caused by rewrite of if_ni.c for large *	mbufs. * * 12-11-87	Robin L. and Larry C. *	Added portclass support to the system and KMALLOC changes. * * 09-Dec-87   -- templin@decvax *			Added Larry Palmer's fix to change the size of *			the text portion of the ni_msg struct to comply *			with the workings of the new kernel memory allocator. * * 25-Aug-87   -- templin@decvax *			Added the PS_FQE bit definition to mask off the *			Free Queue Exhausted bit. * 07-July-87  -- templin@decvax *			Changed fields of the "ni_counters" struct from *			"unsigned long" to "unsigned short field_name[2]" *			to fix a word-ordering problem. */struct _gvpbq {	unsigned long flink;	unsigned long blink;};/* * Free queue block - Message, xmit datagram, rec. datagram, *	immediate datagram (for debug only). */struct _fqb {	long mfreeq_size;	unsigned :32;	struct _gvpbq mfreeq;	long dfreeq_size;	unsigned :32;	struct _gvpbq dfreeq;	long rfreeq_size;	unsigned :32;	struct _gvpbq rfreeq;#ifdef notdef	long ifreeq_size;	unsigned :32;	struct _gvpbq ifreeq;#endif};/*  * ni specific portion of VaxPort data structure. */struct _nipqb {	struct piv {		unsigned level:4;		unsigned vector:12;		unsigned bi_node:16;	} piv;	unsigned long	num_freeq;	struct _fqb *vfqb_base;	unsigned long reserved1[39];	unsigned long	bvp_level;	caddr_t	vpqb_base;	caddr_t bdt_base;	unsigned bdt_len:16;	unsigned :16;	unsigned long spt_base;	unsigned spt_len:22;	unsigned :10;	unsigned long gpt_base;	unsigned gpt_len:22;	unsigned :10;	unsigned long func_mask;	unsigned long reserved2[6];	unsigned short ad_max_dg;	unsigned short ad_max_msg;	long  ad_sw_type;	long  ad_sw_vers;	long  ad_hw_type;	long  ad_hw_vers[3];	long qe_logout[54];};/*  * BVP buffer descriptor */struct _bd {	unsigned offset:9;	unsigned :3;	unsigned ac:1;	unsigned am:2;	unsigned valid:1;	unsigned key:16;	unsigned long buf_len;	struct pte *pt_addr;	unsigned :32;};/* * how queues are referenced */#define freeq0 ni_pqb->ni.vfqb_base->mfreeq#define freeq1 ni_pqb->ni.vfqb_base->dfreeq#define freeq2 ni_pqb->ni.vfqb_base->rfreeq#ifdef notdef#define freeq3 ni_pqb->ni.vfqb_base->ifreeq#endif#define comq0  ni_pqb->cmdq0#define respq  ni_pqb->rspq /* * Sizes of various queues *//* Number of xmit + rcv buffers */#define NI_NBUF 84#define NI_NFREEQ 3#define NI_FREEQ_0 4 /* message queue entries */#define NI_FREEQ_1 NI_NBUF /* data queue entries - errors*/#define NI_FREEQ_2 NI_NBUF/2 /* All other rcv datagrams */#ifdef notdef#define NI_FREEQ_3 NI_NBUF /* All other rcv datagrams */#endif#define NI_NUMBUF 12	/* # of buffer names/dgsnd */#define NI_RBUF 2	/* # of buffer names/dgrec */#define NI_NRECV NI_FREEQ_1+NI_FREEQ_2#define NI_MAXPACKETSZ	1560-sizeof(struct ether_header)#define NI_IPL 0x17#define NI_MAXITRY 100000 /* How many times to try an insqti *//* * Message */struct ni_msg {	unsigned long flink;	unsigned long blink;	unsigned :32;	unsigned :8;	unsigned status:8;	unsigned opcode:8;	unsigned R:1;	unsigned :7;	unsigned msg_len:16;	unsigned ni_opcode:8;	unsigned ni_status:8;	unsigned :32;	char text[128]; /* Total here must be <= AD_MAX_MSG */};/* * Datagram  */struct ni_data {	unsigned long flink;	unsigned long blink;	unsigned :32;	unsigned :8;	unsigned status:8;	unsigned opcode:8;	unsigned R:1;	unsigned :7;	unsigned dg_len:16;	unsigned dg_status:16;	unsigned mbuf_tofree;	unsigned long dg_ptdb_index;	struct chbufs {	unsigned offset:16;	unsigned s_len:16;	unsigned bdt_index:15;	unsigned chain:1;		unsigned buffer_key:16;	} cbufs[NI_NUMBUF];};/* * Immediate datagram  */struct ni_dgi {	unsigned long flink;	unsigned long blink;	unsigned :32;	unsigned :8;	unsigned status:8;	unsigned opcode:8;	unsigned R:1;	unsigned :7;	unsigned dg_len:16;	unsigned :16;	unsigned :32;	unsigned long dg_ptdb_index;	char text[100]; /* Total here must be <= AD_MAX_MSG */};/* Status bits for data & msg */#define PCK_FAIL 	1#define NMULTI 		12/* * Protocol type definition block  */struct ptdb {	unsigned ptt:16;	unsigned fq_index:8;	unsigned :2;	unsigned flags:6;	unsigned long ptdb_index;	unsigned short adr_len;	unsigned short info_802;	struct multi {		u_char addr[8];	} multi[NMULTI];};/* Flags in ptdb struct */#define PTDB_UNQ  0x01#define PTDB_PROM 0x02#define PTDB_802  0x04#define PTDB_BDC  0x08#define PTDB_UNK  0x10#define PTDB_AMC  0x20#define NI_MQSIZE sizeof(struct ni_msg)#define NI_DQSIZE sizeof(struct ni_data)#define NI_MQHEAD 18 /* 4 longs+2 make up the header */#define NI_DQHEAD NI_MQHEAD#define NI_DGRLEN 10+8*NI_RBUF /* * PC status bits */#define PS_STATEMASK    0x00070000#define PS_UNDEFINED 	0x00010000#define PS_INITIALIZED 	0x00020000#define PS_ENABLED 	0x00040000#define PS_STOPPED 	0x00060000#define PS_MAINT 	0x00070000#define PS_OWN 		0x80000000#define PS_FQE 		0x02000000#define PS_RSQ 		0x00000080#define PS_SUME		0x00000040/* * PC status bits */#define PC_NULL 	0x00000000#define PC_INIT 	0x00000001#define PC_ENABLE 	0x00000002#define PC_READPIV 	0x00000003#define PC_SHUTDOWN 	0x00000004#define PC_MAINT 	0x00000005#define PC_CMDQNE 	0x00000006#define PC_FREEQNE 	0x00000007#define PC_PSQ 		0x00000008#define PC_ENAERR 	0x00000009#define PC_DISERR 	0x0000000a#define PC_RESTART 	0x0000000b#define PC_OWN 		0x00000080#define PC_DATAMASK 	0xffffff00#define PC_MFREEQ 	0x00000000#define PC_DFREEQ 	0x00000100#define PC_RFREEQ 	0x00000200#define PC_IFREEQ 	0x00000300#define PC_CMDQ0  	0x00000000#define PC_CMDQ1  	0x00000100#define PC_CMDQ2  	0x00000200#define PC_BUSY		0x00000001/* * BVP opcodes */#define SNDDG  0x01#define SNDMSG 0x02#define SNDDGI 0x03#define DGSNT  0x01#define MSGSNT 0x02#define DGISNT 0x03#define DGREC  33#define MSGREC 34#define DGIREC 35/* * NI opcodes */#define NIOP_NOP	0#define NIOP_WSYSID	1#define NIOP_RSYSID	2#define NIOP_WPARAM	3#define NIOP_RPARAM	4#define NIOP_RCCNTR	5#define NIOP_RDCNTR	6#define NIOP_STPTDB	7#define NIOP_CLPTDB	8/* * ni parameter structure */struct ni_param {	unsigned char dpa[8];	unsigned char apa[8];	unsigned char lsa[8];	unsigned char bvc[8];	unsigned short cur_adr;	unsigned short max_adr;	unsigned short cur_ptt;	unsigned short max_ptt;	unsigned short cur_fq;	unsigned short max_fq;	unsigned long sid_interval;	unsigned long mop_stuff;	unsigned flags:8;	unsigned :24;	unsigned rec_timeo;	unsigned xmit_timeo;};/* param flags */#define NI_ECT	0x01#define NI_PAD	0x02#define NI_BOO	0x04#define NI_CAR	0x08#define NI_ILP  0x10#define NI_ELP	0x20#define NI_DCRC	0x40#define NI_THRU 0x80/* * Where PC,PS,PE,PD are for ni */#define NI_NI_ADDR	0x204/* * Structure for counters */struct ni_counters {	unsigned short   last_zero;		/* Last zeroed */	unsigned short	bytes_rec[2];		/* bytes recieved */	unsigned short	bytes_snt[2];		/* bytes sent */	unsigned short	frame_rec[2];		/* frames recieved */	unsigned short	frame_snt[2];		/* frames sent */	unsigned short	mbytes_rec[2];		/* multicast bytes rec. */	unsigned short	mframe_rec[2];		/* multicast frames rec. */	unsigned short	mbytes_snt[2];		/* multicast bytes sent */	unsigned short	mframe_snt[2];		/* multicast frames sent */	unsigned short	fs_def[2];		/* frames sent initially deferred */	unsigned short	fs_sc[2];		/* "	  "    single collision */	unsigned short	fs_mc[2];		/* "      "    multiple " */	unsigned short	sfail;		/* send failures */	unsigned short  sfbm;		/* send failures BM */	unsigned short  rfail;		/* recv failures */	unsigned short	rfbm;		/* recv failures BM */	unsigned short	unrec;		/* unrecog destination */	unsigned short	datao;		/* data overrun */	unsigned short	sbu;		/* system buffer unavail. */	unsigned short	ubu;		/* user buffer unavail. */	unsigned short	ctf;		/* collision test failed */	unsigned short  junk;	unsigned long lance[16];			/* lance info */};/* What inline returns if a queue transition happened */#define QEMPTY 0/* *  Lifted from Todd's vpscs.h header file. This part is temporary * *   Facility:	Systems Communication Architecture *		Generic Vaxport Port Driver * *   Abstract:	This module contains all of the generic Vaxport port driver *		data structure definitions visible to the SCS layer of SCA. * *   Creator:	Todd M. Katz	Creation Date:	November 20, 1985 * *   History: * *//* Generic Vaxport Data Structure Definitions. */typedef struct _gvppqb	{		/* Vaxport Port Queue Block	     */    struct _gvpbq cmdq0;		/* Command queue head priority 0     */    struct _gvpbq cmdq1;		/* Command queue head priority 1     */    struct _gvpbq cmdq2;		/* Command queue head priority 2     */    struct _gvpbq cmdq3;		/* Command queue head priority 3     */    struct _gvpbq rspq;			/* Response queue head		     */#ifdef notdefyet    union	{			/* Implementation dependent fields   */	struct _cipqb	ci;		/*  CI specific fields of PQB	     */#endif	struct _nipqb   ni;		/* NI specific fields of PQB          */#ifdef notdefyet	} type;	#endif    } GVPPQB;/* End of temporary part */

⌨️ 快捷键说明

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