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 HALTED 0
31#define RUNNING 1
32
33struct mc32_mailbox
34{
35 	u16 mbox;
36 	u16 data[1];
37} __attribute((packed));
38
39struct skb_header
40{
41	u8 status;
42	u8 control;
43	u16 next;	/* Do not change! */
44	u16 length;
45	u32 data;
46} __attribute((packed));
47
48struct mc32_stats
49{
50	/* RX Errors */
51	u32 rx_crc_errors;
52	u32 rx_alignment_errors;
53	u32 rx_overrun_errors;
54	u32 rx_tooshort_errors;
55	u32 rx_toolong_errors;
56	u32 rx_outofresource_errors;
57
58	u32 rx_discarded;  /* via card pattern match filter */
59
60	/* TX Errors */
61	u32 tx_max_collisions;
62	u32 tx_carrier_errors;
63	u32 tx_underrun_errors;
64	u32 tx_cts_errors;
65	u32 tx_timeout_errors;
66
67	/* various cruft */
68	u32 dataA[6];
69	u16 dataB[5];
70	u32 dataC[14];
71} __attribute((packed));
72
73#define STATUS_MASK	0x0F
74#define COMPLETED	(1<<7)
75#define COMPLETED_OK	(1<<6)
76#define BUFFER_BUSY	(1<<5)
77
78#define CONTROL_EOP	(1<<7)	/* End Of Packet */
79#define CONTROL_EOL	(1<<6)	/* End of List */
80
81#define MCA_MC32_ID	0x0041	/* Our MCA ident */
82