1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
/* $NetBSD: if_ilreg.h,v 1.5 2005/12/11 12:23:29 christos Exp $ */
/*
* Copyright (c) 1982, 1986 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)if_ilreg.h 7.3 (Berkeley) 6/28/90
*/
/*
* Interlan Ethernet Communications Controller interface
*/
#ifdef notdef
struct ildevice {
short il_csr; /* Command and Status Register */
short il_bar; /* Buffer Address Register */
short il_bcr; /* Byte Count Register */
};
#endif
#define IL_CSR 0
#define IL_BAR 2
#define IL_BCR 4
/*
* Command and status bits
*/
#define IL_EUA 0xc000 /* Extended Unibus Address */
#define IL_CMD 0x3f00 /* Command Function Code */
#define IL_CDONE 0x0080 /* Command Done */
#define IL_CIE 0x0040 /* Command Interrupt Enable */
#define IL_RDONE 0x0020 /* Receive DMA Done */
#define IL_RIE 0x0010 /* Receive Interrupt Enable */
#define IL_STATUS 0x000f /* Command Status Code */
#define IL_BITS "\20\10CDONE\7CIE\6RDONE\5RIE"
/* command definitions */
#define ILC_MLPBAK 0x0100 /* Set Module Interface Loopback Mode */
#define ILC_ILPBAK 0x0200 /* Set Internal Loopback Mode */
#define ILC_CLPBAK 0x0300 /* Clear Loopback Mode */
#define ILC_PRMSC 0x0400 /* Set Promiscuous Receive Mode */
#define ILC_CLPRMSC 0x0500 /* Clear Promiscuous Receive Mode */
#define ILC_RCVERR 0x0600 /* Set Receive-On-Error Bit */
#define ILC_CRCVERR 0x0700 /* Clear Receive-On-Error Bit */
#define ILC_OFFLINE 0x0800 /* Go Offline */
#define ILC_ONLINE 0x0900 /* Go Online */
#define ILC_DIAG 0x0a00 /* Run On-board Diagnostics */
#define ILC_ISA 0x0d00 /* Set Insert Source Address Mode */
#define ILC_CISA 0x0e00 /* Clear Insert Source Address Mode */
#define ILC_DEFPA 0x0f00 /* Set Physical Address to Default */
#define ILC_ALLMC 0x1000 /* Set Receive All Multicast Packets */
#define ILC_CALLMC 0x1100 /* Clear Receive All Multicast */
#define ILC_STAT 0x1800 /* Report and Reset Statistics */
#define ILC_DELAYS 0x1900 /* Report Collision Delay Times */
#define ILC_RCV 0x2000 /* Supply Receive Buffer */
#define ILC_LDXMIT 0x2800 /* Load Transmit Data */
#define ILC_XMIT 0x2900 /* Load Transmit Data and Send */
#define ILC_LDGRPS 0x2a00 /* Load Group Addresses */
#define ILC_RMGRPS 0x2b00 /* Delete Group Addresses */
#define ILC_LDPA 0x2c00 /* Load Physical Address */
#define ILC_FLUSH 0x3000 /* Flush Receive BAR/BCR Queue */
#define ILC_RESET 0x3f00 /* Reset */
/*
* Error codes found in the status bits of the csr.
*/
#define ILERR_SUCCESS 0 /* command successful */
#define ILERR_RETRIES 1 /* " " with retries */
#define ILERR_BADCMD 2 /* illegal command */
#define ILERR_INVCMD 3 /* invalid command */
#define ILERR_RECVERR 4 /* receiver error */
#define ILERR_BUFSIZ 5 /* buffer size too big */
#define ILERR_FRAMESIZ 6 /* frame size too small */
#define ILERR_COLLISIONS 8 /* excessive collisions */
#define ILERR_BUFALIGNMENT 10 /* buffer not word aligned */
#define ILERR_NXM 15 /* non-existent memory */
#define NILERRS 16
#ifdef ILERRS
char *ilerrs[NILERRS] = {
"success", /* 0 */
"success with retries", /* 1 */
"illegal command", /* 2 */
"inappropriate command", /* 3 */
"failure", /* 4 */
"buffer size exceeded", /* 5 */
"frame too small", /* 6 */
0, /* 7 */
"excessive collisions", /* 8 */
0, /* 9 */
"buffer alignment error", /* 10 */
0, /* 11 */
0, /* 12 */
0, /* 13 */
0, /* 14 */
"non-existent memory" /* 15 */
};
#endif
/*
* Diagnostics codes.
*/
#define ILDIAG_SUCCESS 0 /* no problems */
#define ILDIAG_CHKSUMERR 1 /* ROM/RAM checksum error */
#define ILDIAG_DMAERR 2 /* DMA not working */
#define ILDIAG_XMITERR 3 /* xmit circuitry failure */
#define ILDIAG_RECVERR 4 /* rcvr circuitry failure */
#define ILDIAG_LOOPBACK 5 /* loopback test failed */
#define NILDIAGS 6
#ifdef ILDIAGS
char *ildiag[NILDIAGS] = {
"success", /* 0 */
"checksum error", /* 1 */
"NM10 DMA error", /* 2 */
"transmitter error", /* 3 */
"receiver error", /* 4 */
"loopback failure", /* 5 */
};
#endif
/*
* Frame status bits, returned in frame status byte
* at the top of each received packet.
*/
#define ILFSTAT_C 0x1 /* CRC error */
#define ILFSTAT_A 0x2 /* alignment error */
#define ILFSTAT_L 0x4 /* 1+ frames lost just before */
|