new mbufs (enp tested, ace not)
[unix-history] / usr / src / sys / tahoe / if / if_acereg.h
CommitLineData
430f81c3
MK
1/*
2 * @(#)if_acereg.h 7.1 (Berkeley) %G%
3 */
27900e4b
SL
4
5/*
6 * VERSAbus ACC ethernet controller definitions
7 */
8
9/*
10 * Register definitions
11 */
12struct 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 */
29struct 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 */
38struct rx_segment {
39 short rx_csr; /* packet status */
40 char rx_data[2046];
41};
42
43/*
44 * ACC statistics block.
45 */
46struct 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 */