1: /*
2: * Copyright (c) 1986 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)if_ilreg.h 1.1 (2.10BSD Berkeley) 12/1/86
7: */
8:
9: /*
10: * Interlan Ethernet Communications Controller interface
11: */
12: struct ildevice {
13: short il_csr; /* Command and Status Register */
14: short il_bar; /* Buffer Address Register */
15: short il_bcr; /* Byte Count Register */
16: short il_ber; /* Bus Extension Register */
17: };
18:
19: /*
20: * Command and status bits
21: */
22: #define IL_EUA 0xc000 /* Extended Unibus Address */
23: #define IL_CMD 0x3f00 /* Command Function Code */
24: #define IL_CDONE 0x0080 /* Command Done */
25: #define IL_CIE 0x0040 /* Command Interrupt Enable */
26: #define IL_RDONE 0x0020 /* Receive DMA Done */
27: #define IL_RIE 0x0010 /* Receive Interrupt Enable */
28: #define IL_STATUS 0x000f /* Command Status Code */
29:
30: #define IL_BITS "\20\10CDONE\7CIE\6RDONE\5RIE"
31:
32: /* command definitions */
33: #define ILC_MLPBAK 0x0100 /* Set Module Interface Loopback Mode */
34: #define ILC_ILPBAK 0x0200 /* Set Internal Loopback Mode */
35: #define ILC_CLPBAK 0x0300 /* Clear Loopback Mode */
36: #define ILC_PRMSC 0x0400 /* Set Promiscuous Receive Mode */
37: #define ILC_CLPRMSC 0x0500 /* Clear Promiscuous Receive Mode */
38: #define ILC_RCVERR 0x0600 /* Set Receive-On-Error Bit */
39: #define ILC_CRCVERR 0x0700 /* Clear Receive-On-Error Bit */
40: #define ILC_OFFLINE 0x0800 /* Go Offline */
41: #define ILC_ONLINE 0x0900 /* Go Online */
42: #define ILC_DIAG 0x0a00 /* Run On-board Diagnostics */
43: #define ILC_ISA 0x0d00 /* Set Insert Source Address Mode */
44: #define ILC_CISA 0x0e00 /* Clear Insert Source Address Mode */
45: #define ILC_DEFPA 0x0f00 /* Set Physical Address to Default */
46: #define ILC_ALLMC 0x1000 /* Set Receive All Multicast Packets */
47: #define ILC_CALLMC 0x1100 /* Clear Receive All Multicast */
48: #define ILC_STAT 0x1800 /* Report and Reset Statistics */
49: #define ILC_DELAYS 0x1900 /* Report Collision Delay Times */
50: #define ILC_RCV 0x2000 /* Supply Receive Buffer */
51: #define ILC_LDXMIT 0x2800 /* Load Transmit Data */
52: #define ILC_XMIT 0x2900 /* Load Transmit Data and Send */
53: #define ILC_LDGRPS 0x2a00 /* Load Group Addresses */
54: #define ILC_RMGRPS 0x2b00 /* Delete Group Addresses */
55: #define ILC_LDPA 0x2c00 /* Load Physical Address */
56: #define ILC_FLUSH 0x3000 /* Flush Receive BAR/BCR Queue */
57: #define ILC_RESET 0x3f00 /* Reset */
58:
59: /*
60: * Error codes found in the status bits of the csr.
61: */
62: #define ILERR_SUCCESS 0 /* command successful */
63: #define ILERR_RETRIES 1 /* " " with retries */
64: #define ILERR_BADCMD 2 /* illegal command */
65: #define ILERR_INVCMD 3 /* invalid command */
66: #define ILERR_RECVERR 4 /* receiver error */
67: #define ILERR_BUFSIZ 5 /* buffer size too big */
68: #define ILERR_FRAMESIZ 6 /* frame size too small */
69: #define ILERR_COLLISIONS 8 /* excessive collisions */
70: #define ILERR_BUFALIGNMENT 10 /* buffer not word aligned */
71: #define ILERR_NXM 15 /* non-existent memory */
72:
73: #define NILERRS 16
74: #ifdef ILERRS
75: char *ilerrs[NILERRS] = {
76: "success", /* 0 */
77: "success with retries", /* 1 */
78: "illegal command", /* 2 */
79: "inappropriate command", /* 3 */
80: "failure", /* 4 */
81: "buffer size exceeded", /* 5 */
82: "frame too small", /* 6 */
83: 0, /* 7 */
84: "excessive collisions", /* 8 */
85: 0, /* 9 */
86: "buffer alignment error", /* 10 */
87: 0, /* 11 */
88: 0, /* 12 */
89: 0, /* 13 */
90: 0, /* 14 */
91: "non-existent memory" /* 15 */
92: };
93: #endif
94:
95: /*
96: * Diagnostics codes.
97: */
98: #define ILDIAG_SUCCESS 0 /* no problems */
99: #define ILDIAG_CHKSUMERR 1 /* ROM/RAM checksum error */
100: #define ILDIAG_DMAERR 2 /* DMA not working */
101: #define ILDIAG_XMITERR 3 /* xmit circuitry failure */
102: #define ILDIAG_RECVERR 4 /* rcvr circuitry failure */
103: #define ILDIAG_LOOPBACK 5 /* loopback test failed */
104:
105: #define NILDIAGS 6
106: #ifdef ILDIAGS
107: char *ildiag[NILDIAGS] = {
108: "success", /* 0 */
109: "checksum error", /* 1 */
110: "NM10 dma error", /* 2 */
111: "transmitter error", /* 3 */
112: "receiver error", /* 4 */
113: "loopback failure", /* 5 */
114: };
115: #endif
116:
117: /*
118: * Frame status bits, returned in frame status byte
119: * at the top of each received packet.
120: */
121: #define ILFSTAT_C 0x1 /* CRC error */
122: #define ILFSTAT_A 0x2 /* alignment error */
123: #define ILFSTAT_L 0x4 /* 1+ frames lost just before */
Defined variables
Defined struct's
Defined macros
IL_RIE
defined in line
27; used 10 times
Usage of this include