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;
|