blob: 33230186e44fd194dc236fa72d7e08b594310540 (
plain)
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
|
/*
* Copyright 1996 The Australian National University.
* Copyright 1996 Fujitsu Laboratories Limited
*
* This software may be distributed under the terms of the Gnu
* Public License version 2 or later
*/
#define BUFFER_MEM 0x40000
#define CSR0 0x60000
#define CSR1 0x60004
#define PLC 0x60080
#define FORMAC 0x60200
#define FIFO 0x68000
/* Size of buffer memory */
#define BUFFER_SIZE 32768 /* words; 128kB */
/* Bits in CSR0 */
#define CS0_INT_REQ 0x8000 /* board interrupt request asserted */
#define CS0_MAC_IRQ 0x4000 /* FORMAC is requesting interrupt */
#define CS0_PHY_IRQ 0x2000 /* PLC is requesting interrupt */
#define CS0_LED2 0x1000 /* turn on led 2 */
#define CS0_DO_IRQ 0x0200 /* request interrupt */
#define CS0_INT_ENABLE 0x0100 /* enable interrupt requests */
#define CS0_DMA_ENABLE 0x0080 /* enable DMA requests */
#define CS0_DMA_RECV 0x0040 /* DMA requests are in receive dirn. */
#define CS0_LED1 0x0010 /* turn on led 1 */
#define CS0_LED0 0x0008 /* turn on led 0 (red) */
#define CS0_HREQ 0x0007 /* host request to FORMAC */
#define CS0_HREQ_WSPEC 0x0002 /* write special frames */
#define CS0_HREQ_RECV 0x0003 /* read receive queue */
#define CS0_HREQ_WS 0x0004 /* write synchronous queue */
#define CS0_HREQ_WA0 0x0005 /* write async queue 0 */
#define CS0_HREQ_WA1 0x0006 /* write async queue 1 */
#define CS0_HREQ_WA2 0x0007 /* write async queue 2 */
/* Bits in CSR1 */
#define CS1_THIS_QAF 0x0800 /* this queue almost full */
#define CS1_FIFO_TAG 0x0400 /* tag of word at head of fifo */
#define CS1_BUF_RD_TAG 0x0200 /* tag of last word read from buffer */
#define CS1_BUF_WR_TAG 0x0100 /* tag to write to buffer */
#define CS1_TAGMODE 0x0080 /* enable tag mode */
#define CS1_RESET_MAC 0x0040 /* reset FORMAC and PLC */
#define CS1_RESET_FIFO 0x0020 /* reset FIFO */
#define CS1_CLEAR_QAF 0x0010 /* clear queue-almost-full bits */
#define CS1_FIFO_LEVEL 0x0007 /* # words in FIFO (0 - 4) */
/*
* FDDI Frame Control values.
*/
#define FDDI_SMT 0x41
#define FDDI_SMT_NSA 0x4f
#define FDDI_FC_LLC 0x50
#define FDDI_FC_LLC_MASK 0xf0
/*
* Unnumbered LLC format commands
*/
#define LLC_UI 0x3
#define LLC_UI_P 0x13
#define LLC_DISC 0x43
#define LLC_DISC_P 0x53
#define LLC_UA 0x63
#define LLC_UA_P 0x73
#define LLC_TEST 0xe3
#define LLC_TEST_P 0xf3
#define LLC_FRMR 0x87
#define LLC_FRMR_P 0x97
#define LLC_DM 0x0f
#define LLC_DM_P 0x1f
#define LLC_XID 0xaf
#define LLC_XID_P 0xbf
#define LLC_SABME 0x6f
#define LLC_SABME_P 0x7f
/*
* Supervisory LLC commands
*/
#define LLC_RR 0x01
#define LLC_RNR 0x05
#define LLC_REJ 0x09
/*
* Info format - dummy only
*/
#define LLC_INFO 0x00
/*
* ISO PDTR 10178 contains among others
*/
#define LLC_X25_LSAP 0x7e
#define LLC_SNAP_LSAP 0xaa
#define LLC_ISO_LSAP 0xfe
/*
* Structure of the FDDI MAC header.
*/
struct fddi_header {
u_char fddi_fc; /* frame control field */
u_char fddi_dhost[6]; /* destination address */
u_char fddi_shost[6]; /* source address */
};
/*
* Structure of LLC/SNAP header.
*/
struct llc_header {
u_char llc_dsap;
u_char llc_ssap;
u_char snap_control;
u_char snap_org_code[3];
u_short snap_ether_type;
};
#define FDDI_HDRLEN 13 /* sizeof(struct fddi_header) */
#define LLC_SNAPLEN 8 /* bytes for LLC/SNAP header */
#define FDDI_HARDHDR_LEN 28 /* Hard header size */
#define FDDIMTU 4352
/* Types of loopback we can do. */
typedef enum {
loop_none,
loop_formac,
loop_plc_lm,
loop_plc_eb,
loop_pdx
} LoopbackType;
/* Offset from fifo for writing word with tag. */
#define FIFO_TAG 0x80
#define MAX_FRAME_LEN 4500
void set_ring_op(int up);
void rmt_event(int st);
void set_cf_join(int on);
extern struct device *apfddi_device;
extern struct net_device_stats *apfddi_stats;
|