|
|
1.1 root 1: /*
2: * @(#)if_acereg.h 7.1 (Berkeley) 5/21/88
3: */
4:
5: /*
6: * VERSAbus ACC ethernet controller definitions
7: */
8:
9: /*
10: * Register definitions
11: */
12: struct acedevice {
13: short station[6]; /* station address */
14: short bcastena[2]; /* broadcast enable */
15: short hash[8]; /* multicast hash codes */
16: short csr; /* control and status register */
17: short tseg; /* current transmit segment # */
18: short rseg; /* current receive segment # */
19: short segb; /* segment boundary register */
20: short lrf; /* lost receive frame counter */
21: short ivct; /* interrupt vector register */
22: short resv; /* reserved for future use */
23: short fcoll; /* force collision register */
24: };
25:
26: /*
27: * Transmit segment in dual ported ram.
28: */
29: struct tx_segment {
30: short tx_csr; /* packet status */
31: char tx_data[2014];
32: short tx_backoff[16]; /* random backoff counters */
33: };
34:
35: /*
36: * Receive segment in dual ported ram.
37: */
38: struct rx_segment {
39: short rx_csr; /* packet status */
40: char rx_data[2046];
41: };
42:
43: /*
44: * ACC statistics block.
45: */
46: struct ace_stats {
47: int rx_datagrams; /* valid packets received */
48: int rx_crc_errors; /* CRC errors */
49: int rx_overruns; /* packets too large */
50: int rx_underruns; /* packets too small */
51: int rx_align_errors; /* packets w/ odd byte count */
52: int rx_reserved;
53: int rx_busy; /* recv segment filled */
54: int rx_mbuf; /* out of mbufs */
55: int rx_oddoff; /* odd offset in mbuf */
56: int rx_rintcnt; /* recvr interrupt */
57:
58: int tx_datagrams; /* packets xmit'd */
59: int tx_retries; /* collision retries */
60: int tx_discarded; /* packets w/ max retries */
61: int tx_busy; /* xmit segment filled in acestart */
62: int tx_cbusy; /* xmit segment filled in acecint */
63: int tx_mbuf; /* total mbufs */
64: int tx_oddoff; /* odd offset in mbuf */
65: int tx_outcnt; /* calls to aceoutput */
66: int tx_startcnt; /* calls to acestart */
67: int tx_cintcnt; /* xmit's completed */
68: };
69:
70: /*
71: * Control status definitions.
72: */
73: #define CSR_OBCENA 0x0200 /* enable xmit of odd byte count */
74: #define CSR_ACTIVE 0x0080 /* board active */
75: #define CSR_RESET 0x0040 /* reset board */
76: #define CSR_PROMISC 0x0020 /* enable promiscous mode */
77: #define CSR_CRCDIS 0x0010 /* disable CRC generation */
78: #define CSR_LOOP3 0x0008 /* enable loopback mode 3 */
79: #define CSR_LOOP2 0x0004 /* enable loopback mode 2 */
80: #define CSR_IENA 0x0002 /* interrupt enable */
81: #define CSR_GO 0x0001 /* enable micro-engine */
82:
83: #define ACE_CSRBITS \
84: "\20\12OBCENA\10ACTIVE\7RESET\6PROMISC\5CRCDIS\4LOOP3\3LOOP2\2IENA\1GO"
85: /*
86: * Transmit packet status definitions.
87: */
88: #define TCS_TBFULL (short)0x8000 /* buffer filled, send it */
89: #define TCS_TBC (short)0x07FF /* byte count */
90: #define TCS_TBMT (short)0x8000 /* buffer empty */
91: #define TCS_RTFAIL (short)0x4000 /* retries failed */
92: #define TCS_RTC (short)0x000F /* collision retry mask */
93:
94: /*
95: * Receive packet status definitions.
96: */
97: #define RCS_RBMT 0x8000 /* buffer ready for recv */
98: #define RCS_RBFULL 0x8000 /* buffer full, take data */
99: #define RCS_ROVRN 0x4000 /* overrun error */
100: #define RCS_RCRC 0x2000 /* CRC error */
101: #define RCS_RODD 0x1000 /* odd byte count error */
102: #define RCS_RBC 0x07FF /* byte count mask */
103:
104: #define ACE_RCSBITS "\20\20RBFULL\17ROVRN\16RCSR\15RODD"
105:
106: #define CRC_SIZE 4 /* number of bytes in a rx seg's CRC */
107: #define RCW_SIZE 2 /* number of bytes in a rx seg's csr */
108: #define SEG_MAX 15 /* largest valid segment number */
109: #define ET_MINLEN 64 /* min frame size */
110: #define ET_MAXLEN 1514 /* max frame size w/o CRC & RCW */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.