xref: /csrg-svn/sys/vax/datakit/dkdr.h (revision 38624)
1*38624Skarels /*
2*38624Skarels  *	DATAKIT VCS Data Structures for a DR-11C interface
3*38624Skarels  *		@(#)dkdr.h	1.1 Garage 84/03/27
4*38624Skarels  */
5*38624Skarels 
6*38624Skarels /*
7*38624Skarels  *  Structure for each Datakit channel
8*38624Skarels  */
9*38624Skarels 
10*38624Skarels struct dkchan {
11*38624Skarels 	short dk_state;
12*38624Skarels 	struct ifqueue dk_outq;
13*38624Skarels 	int (*dk_endfcn)();
14*38624Skarels 	caddr_t dk_endparm;
15*38624Skarels 	int	(*dk_supfcn)();	/* who to tell of circuit supervision */
16*38624Skarels 	caddr_t	dk_raddr;		/* address of received data */
17*38624Skarels 	unsigned dk_rlen;		/* length of pending receive */
18*38624Skarels 	short	dk_rmode;		/* possible completion modes */
19*38624Skarels 	unsigned dk_xlen;		/* length of xmit */
20*38624Skarels 	struct mbuf *dk_curout;		/* current buffer */
21*38624Skarels 	struct dkpkbufr *dk_rq;		/* un-acked input */
22*38624Skarels 	struct dkpkbufr *dk_rb;		/* un-checked input */
23*38624Skarels 	short	dk_rblen;		/* len of unchecked */
24*38624Skarels 	char	dk_S;			/* protocol parameters */
25*38624Skarels 	char	dk_R;
26*38624Skarels 	char	dk_X;
27*38624Skarels 	char	dk_A;
28*38624Skarels 	char	dk_C;
29*38624Skarels 	char	dk_trmode;
30*38624Skarels 	char	dk_rseq;
31*38624Skarels 	short	dk_tail1;
32*38624Skarels 	short	dk_tail2;
33*38624Skarels 	int	dk_rejcnt;		/* Reject messages received */
34*38624Skarels 	int	dk_srejcnt;		/* Reject messages sent */
35*38624Skarels 	int	dk_ackrejcnt;		/* Acks that cause retransmit */
36*38624Skarels 	int	dk_enqcnt;		/* ENQs sent */
37*38624Skarels };
38*38624Skarels 
39*38624Skarels /* Flags for dk_X */
40*38624Skarels #define	XM_OFF	((char) 0xff)		/* transmitter off */
41*38624Skarels #define	XM_INIT	((char) 02)		/* transmitter initialized */
42*38624Skarels #define	XM_REJ	((char) 04)		/* Sent REJ */
43*38624Skarels #define	XM_ENQ	((char) 010)		/* send ENQ next timeout */
44*38624Skarels 
45*38624Skarels /*
46*38624Skarels  * Packet buffers
47*38624Skarels  */
48*38624Skarels 
49*38624Skarels struct dkpkbufr {
50*38624Skarels 	struct dkpkbufr *Pnext;
51*38624Skarels 	short	Phibits;
52*38624Skarels 	char Pseq;
53*38624Skarels 	char Plen;
54*38624Skarels 	char Pdata[16];
55*38624Skarels };
56*38624Skarels 
57*38624Skarels /*
58*38624Skarels  * Structure to save completion status until processed
59*38624Skarels  */
60*38624Skarels 
61*38624Skarels struct dkstat {
62*38624Skarels 	short	k_type;		/* type of completion status */
63*38624Skarels 	short	k_chan;		/* channel number */
64*38624Skarels 	short	k_info1;		/* misc info */
65*38624Skarels 	short	k_info2;
66*38624Skarels };
67