|
|
1.1 root 1: /*
2: * DEQNA Q-bus Ethernet board
3: * QENCHAN channels per controller,
4: * each for a different packet type
5: * one struct qe per controller,
6: * each containing QENCHAN struct qechans
7: */
8:
9: #define QENCHAN 8 /* minor devices per controller */
10: #define QENXMT 30 /* size of transmit ring */
11: #define QENRCV 30 /* size of receive ring */
12:
13: struct qechan {
14: short unit; /* device unit number */
15: short type; /* ethernet protocol for this chan */
16: struct queue *rq; /* read queue for this chan */
17: struct block *xmt[QENXMT]; /* next packet to send */
18: int nxmt; /* number of blocks in nxmt */
19: int nbytes;
20: };
21:
22: struct qe {
23: /* statistics */
24: int ierrors,oerrors; /* input/output errors */
25: int ipackets,opackets; /* input/output packets */
26:
27: /* hardware stuff */
28: struct qedevice *addr; /* device addr */
29: short intvec; /* interrupt vector */
30: short ubno; /* unibus number */
31:
32: /* for xmit/rcv */
33: char rindex; /* next descriptor for receiving */
34: char orindex; /* earliest pending receive */
35: char xindex; /* next descriptor for transmitting */
36: char oxindex; /* earliest pending transmit */
37: int rbytes; /* bytes in receive buffer */
38: struct block *rbp[QENRCV]; /* receive blocks */
39: struct block *xbp[QENXMT]; /* transmit blocks */
40: struct buf *iobuf; /* buffer where qeio lives */
41: ubm_t iobm; /* its map token */
42: struct qe_ring *rring; /* receive ring */
43: struct qe_ring *xring; /* transmit ring */
44: struct setup *setup; /* setup packet */
45: uaddr_t raddr, xaddr, setupaddr; /* and their Q-bus addrs */
46:
47: /* channel info */
48: int lastch; /* next channel to scan */
49: struct qechan chan[QENCHAN];
50: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.