4.4BSD/usr/src/sys/vax/datakit/monet/dkdr.h

/*
 *	DATAKIT VCS Data Structures for a DR-11C interface
 *		@(#)dkdr.h	1.1 Garage 84/03/27
 */

/*
 *  Structure for each Datakit channel
 */

struct dkchan {
	short dk_state;
	struct ifqueue dk_outq;
	int (*dk_endfcn)();
	caddr_t dk_endparm;
	int	(*dk_supfcn)();	/* who to tell of circuit supervision */
	caddr_t	dk_raddr;		/* address of received data */
	unsigned dk_rlen;		/* length of pending receive */
	short	dk_rmode;		/* possible completion modes */
	unsigned dk_xlen;		/* length of xmit */
	struct mbuf *dk_curout;		/* current buffer */
	struct dkpkbufr *dk_rq;		/* un-acked input */
	struct dkpkbufr *dk_rb;		/* un-checked input */
	short	dk_rblen;		/* len of unchecked */
	char	dk_S;			/* protocol parameters */
	char	dk_R;
	char	dk_X;
	char	dk_A;
	char	dk_C;
	char	dk_trmode;
	char	dk_rseq;
	short	dk_tail1;
	short	dk_tail2;
	int	dk_rejcnt;		/* Reject messages received */
	int	dk_srejcnt;		/* Reject messages sent */
	int	dk_ackrejcnt;		/* Acks that cause retransmit */
	int	dk_enqcnt;		/* ENQs sent */
};

/* Flags for dk_X */
#define	XM_OFF	((char) 0xff)		/* transmitter off */
#define	XM_INIT	((char) 02)		/* transmitter initialized */
#define	XM_REJ	((char) 04)		/* Sent REJ */
#define	XM_ENQ	((char) 010)		/* send ENQ next timeout */

/*
 * Packet buffers
 */

struct dkpkbufr {
	struct dkpkbufr *Pnext;
	short	Phibits;
	char Pseq;
	char Plen;
	char Pdata[16];
};

/*
 * Structure to save completion status until processed
 */

struct dkstat {
	short	k_type;		/* type of completion status */
	short	k_chan;		/* channel number */
	short	k_info1;		/* misc info */
	short	k_info2;
};