|
|
1.1 ! root 1: /* if_uba.h 6.1 83/07/29 */ ! 2: ! 3: /* ! 4: * Structure and routine definitions ! 5: * for UNIBUS network interfaces. ! 6: */ ! 7: ! 8: #define IF_MAXNUBAMR 10 ! 9: /* ! 10: * Each interface has one of these structures giving information ! 11: * about UNIBUS resources held by the interface. ! 12: * ! 13: * We hold IF_NUBAMR map registers for datagram data, starting ! 14: * at ifr_mr. Map register ifr_mr[-1] maps the local network header ! 15: * ending on the page boundary. Bdp's are reserved for read and for ! 16: * write, given by ifr_bdp. The prototype of the map register for ! 17: * read and for write is saved in ifr_proto. ! 18: * ! 19: * When write transfers are not full pages on page boundaries we just ! 20: * copy the data into the pages mapped on the UNIBUS and start the ! 21: * transfer. If a write transfer is of a (1024 byte) page on a page ! 22: * boundary, we swap in UNIBUS pte's to reference the pages, and then ! 23: * remap the initial pages (from ifu_wmap) when the transfer completes. ! 24: * ! 25: * When read transfers give whole pages of data to be input, we ! 26: * allocate page frames from a network page list and trade them ! 27: * with the pages already containing the data, mapping the allocated ! 28: * pages to replace the input pages for the next UNIBUS data input. ! 29: */ ! 30: struct ifuba { ! 31: short ifu_uban; /* uba number */ ! 32: short ifu_hlen; /* local net header length */ ! 33: struct uba_regs *ifu_uba; /* uba regs, in vm */ ! 34: struct ifrw { ! 35: caddr_t ifrw_addr; /* virt addr of header */ ! 36: int ifrw_bdp; /* unibus bdp */ ! 37: int ifrw_info; /* value from ubaalloc */ ! 38: int ifrw_proto; /* map register prototype */ ! 39: struct pte *ifrw_mr; /* base of map registers */ ! 40: } ifu_r, ifu_w; ! 41: struct pte ifu_wmap[IF_MAXNUBAMR]; /* base pages for output */ ! 42: short ifu_xswapd; /* mask of clusters swapped */ ! 43: short ifu_flags; /* used during uballoc's */ ! 44: struct mbuf *ifu_xtofree; /* pages being dma'd out */ ! 45: }; ! 46: ! 47: #ifdef KERNEL ! 48: struct mbuf *if_rubaget(); ! 49: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.