File: /usr/src/linux/drivers/net/3c527.h
1 /*
2 * 3COM "EtherLink MC/32" Descriptions
3 */
4
5 /*
6 * Registers
7 */
8
9 #define HOST_CMD 0
10 #define HOST_CMD_START_RX (1<<3)
11 #define HOST_CMD_SUSPND_RX (3<<3)
12 #define HOST_CMD_RESTRT_RX (5<<3)
13
14 #define HOST_CMD_SUSPND_TX 3
15 #define HOST_CMD_RESTRT_TX 5
16
17
18 #define HOST_STATUS 2
19 #define HOST_STATUS_CRR (1<<6)
20 #define HOST_STATUS_CWR (1<<5)
21
22
23 #define HOST_CTRL 6
24 #define HOST_CTRL_ATTN (1<<7)
25 #define HOST_CTRL_RESET (1<<6)
26 #define HOST_CTRL_INTE (1<<2)
27
28 #define HOST_RAMPAGE 8
29
30 #define RX_HALTED (1<<0)
31 #define TX_HALTED (1<<1)
32 #define HALTED (RX_HALTED | TX_HALTED)
33 #define RUNNING 0
34
35 struct mc32_mailbox
36 {
37 u16 mbox __attribute((packed));
38 u16 data[1] __attribute((packed));
39 };
40
41 struct skb_header
42 {
43 u8 status __attribute((packed));
44 u8 control __attribute((packed));
45 u16 next __attribute((packed)); /* Do not change! */
46 u16 length __attribute((packed));
47 u32 data __attribute((packed));
48 };
49
50 struct mc32_stats
51 {
52 /* RX Errors */
53 u32 rx_crc_errors __attribute((packed));
54 u32 rx_alignment_errors __attribute((packed));
55 u32 rx_overrun_errors __attribute((packed));
56 u32 rx_tooshort_errors __attribute((packed));
57 u32 rx_toolong_errors __attribute((packed));
58 u32 rx_outofresource_errors __attribute((packed));
59
60 u32 rx_discarded __attribute((packed)); /* via card pattern match filter */
61
62 /* TX Errors */
63 u32 tx_max_collisions __attribute((packed));
64 u32 tx_carrier_errors __attribute((packed));
65 u32 tx_underrun_errors __attribute((packed));
66 u32 tx_cts_errors __attribute((packed));
67 u32 tx_timeout_errors __attribute((packed)) ;
68
69 /* various cruft */
70 u32 dataA[6] __attribute((packed));
71 u16 dataB[5] __attribute((packed));
72 u32 dataC[14] __attribute((packed));
73 };
74
75 #define STATUS_MASK 0x0F
76 #define COMPLETED (1<<7)
77 #define COMPLETED_OK (1<<6)
78 #define BUFFER_BUSY (1<<5)
79
80 #define CONTROL_EOP (1<<7) /* End Of Packet */
81 #define CONTROL_EOL (1<<6) /* End of List */
82
83 #define MCA_MC32_ID 0x0041 /* Our MCA ident */
84