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