|
|
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.