The LDT fixes in particular fix some potentially random strange behaviour.
[davej-history.git] / drivers / net / wan / comx.h
blob1461d5fb18cb40a779bc9c2dee3cf54442c50ade
1 /*
2 * General definitions for the COMX driver
3 *
4 * Original authors: Arpad Bakay <bakay.arpad@synergon.hu>,
5 * Peter Bajan <bajan.peter@synergon.hu>,
6 * Previous maintainer: Tivadar Szemethy <tiv@itc.hu>
7 * Currently maintained by: Gergely Madarasz <gorgo@itc.hu>
9 * Copyright (C) 1995-1999 ITConsult-Pro Co. <info@itc.hu>
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version
14 * 2 of the License, or (at your option) any later version.
17 * net_device_stats:
18 * rx_length_errors rec_len < 4 || rec_len > 2000
19 * rx_over_errors receive overrun (OVR)
20 * rx_crc_errors rx crc error
21 * rx_frame_errors aborts rec'd (ABO)
22 * rx_fifo_errors status fifo overrun (PBUFOVR)
23 * rx_missed_errors receive buffer overrun (BUFOVR)
24 * tx_aborted_errors ?
25 * tx_carrier_errors modem line status changes
26 * tx_fifo_errors tx underrun (locomx)
28 #include <linux/config.h>
30 struct comx_protocol {
31 char *name;
32 char *version;
33 unsigned short encap_type;
34 int (*line_init)(struct net_device *dev);
35 int (*line_exit)(struct net_device *dev);
36 struct comx_protocol *next;
39 struct comx_hardware {
40 char *name;
41 char *version;
42 int (*hw_init)(struct net_device *dev);
43 int (*hw_exit)(struct net_device *dev);
44 int (*hw_dump)(struct net_device *dev);
45 struct comx_hardware *next;
48 struct comx_channel {
49 void *if_ptr; // General purpose pointer
50 struct net_device *dev; // Where we belong to
51 struct net_device *twin; // On dual-port cards
52 struct proc_dir_entry *procdir; // the directory
54 unsigned char init_status;
55 unsigned char line_status;
57 struct timer_list lineup_timer; // against line jitter
58 long int lineup_pending;
59 unsigned char lineup_delay;
61 #if 0
62 struct timer_list reset_timer; // for board resetting
63 long reset_pending;
64 int reset_timeout;
65 #endif
67 struct net_device_stats stats;
68 struct net_device_stats *current_stats;
69 #if 0
70 unsigned long board_resets;
71 #endif
72 unsigned long *avg_bytes;
73 int loadavg_counter, loadavg_size;
74 int loadavg[3];
75 struct timer_list loadavg_timer;
76 int debug_flags;
77 char *debug_area;
78 int debug_start, debug_end, debug_size;
79 struct proc_dir_entry *debug_file;
80 #ifdef CONFIG_COMX_DEBUG_RAW
81 char *raw;
82 int raw_len;
83 #endif
84 // LINE specific
85 struct comx_protocol *protocol;
86 void (*LINE_rx)(struct net_device *dev, struct sk_buff *skb);
87 int (*LINE_tx)(struct net_device *dev);
88 void (*LINE_status)(struct net_device *dev, u_short status);
89 int (*LINE_open)(struct net_device *dev);
90 int (*LINE_close)(struct net_device *dev);
91 int (*LINE_xmit)(struct sk_buff *skb, struct net_device *dev);
92 int (*LINE_header)(struct sk_buff *skb, struct net_device *dev,
93 u_short type,void *daddr, void *saddr,
94 unsigned len);
95 int (*LINE_rebuild_header)(struct sk_buff *skb);
96 int (*LINE_statistics)(struct net_device *dev, char *page);
97 int (*LINE_parameter_check)(struct net_device *dev);
98 int (*LINE_ioctl)(struct net_device *dev, struct ifreq *ifr,
99 int cmd);
100 void (*LINE_mod_use)(int);
101 void * LINE_privdata;
103 // HW specific
105 struct comx_hardware *hardware;
106 void (*HW_board_on)(struct net_device *dev);
107 void (*HW_board_off)(struct net_device *dev);
108 struct net_device *(*HW_access_board)(struct net_device *dev);
109 void (*HW_release_board)(struct net_device *dev, struct net_device *savep);
110 int (*HW_txe)(struct net_device *dev);
111 int (*HW_open)(struct net_device *dev);
112 int (*HW_close)(struct net_device *dev);
113 int (*HW_send_packet)(struct net_device *dev,struct sk_buff *skb);
114 int (*HW_statistics)(struct net_device *dev, char *page);
115 #if 0
116 int (*HW_reset)(struct net_device *dev, char *page);
117 #endif
118 int (*HW_load_board)(struct net_device *dev);
119 void (*HW_set_clock)(struct net_device *dev);
120 void *HW_privdata;
123 struct comx_debugflags_struct {
124 char *name;
125 int value;
128 #define COMX_ROOT_DIR_NAME "comx"
130 #define FILENAME_HARDWARE "boardtype"
131 #define FILENAME_HARDWARELIST "boardtypes"
132 #define FILENAME_PROTOCOL "protocol"
133 #define FILENAME_PROTOCOLLIST "protocols"
134 #define FILENAME_DEBUG "debug"
135 #define FILENAME_CLOCK "clock"
136 #define FILENAME_STATUS "status"
137 #define FILENAME_IO "io"
138 #define FILENAME_IRQ "irq"
139 #define FILENAME_KEEPALIVE "keepalive"
140 #define FILENAME_LINEUPDELAY "lineup_delay"
141 #define FILENAME_CHANNEL "channel"
142 #define FILENAME_FIRMWARE "firmware"
143 #define FILENAME_MEMADDR "memaddr"
144 #define FILENAME_TWIN "twin"
145 #define FILENAME_T1 "t1"
146 #define FILENAME_T2 "t2"
147 #define FILENAME_N2 "n2"
148 #define FILENAME_WINDOW "window"
149 #define FILENAME_MODE "mode"
150 #define FILENAME_DLCI "dlci"
151 #define FILENAME_MASTER "master"
152 #ifdef CONFIG_COMX_DEBUG_RAW
153 #define FILENAME_RAW "raw"
154 #endif
156 #define PROTONAME_NONE "none"
157 #define HWNAME_NONE "none"
158 #define KEEPALIVE_OFF "off"
160 #define FRAME_ACCEPTED 0 /* sending and xmitter busy */
161 #define FRAME_DROPPED 1
162 #define FRAME_ERROR 2 /* xmitter error */
163 #define FRAME_QUEUED 3 /* sending but more can come */
165 #define LINE_UP 1 /* Modem UP */
166 #define PROTO_UP 2
167 #define PROTO_LOOP 4
169 #define HW_OPEN 1
170 #define LINE_OPEN 2
171 #define FW_LOADED 4
172 #define IRQ_ALLOCATED 8
174 #define DEBUG_COMX_RX 2
175 #define DEBUG_COMX_TX 4
176 #define DEBUG_HW_TX 16
177 #define DEBUG_HW_RX 32
178 #define DEBUG_HDLC_KEEPALIVE 64
179 #define DEBUG_COMX_PPP 128
180 #define DEBUG_COMX_LAPB 256
181 #define DEBUG_COMX_DLCI 512
183 #define DEBUG_PAGESIZE 3072
184 #define DEFAULT_DEBUG_SIZE 4096
185 #define DEFAULT_LINEUP_DELAY 1
186 #define FILE_PAGESIZE 3072
188 #ifndef COMX_PPP_MAJOR
189 #define COMX_PPP_MAJOR 88
190 #endif
193 #ifndef min
194 #define min(a,b) ((a) > (b) ? (b) : (a))
195 #endif
196 #ifndef max
197 #define max(a,b) ((a) > (b) ? (a) : (b))
198 #endif
201 #define COMX_CHANNEL(dev) ((struct comx_channel*)dev->priv)
203 #define TWIN(dev) (COMX_CHANNEL(dev)->twin)
206 #ifndef byte
207 typedef u8 byte;
208 #endif
209 #ifndef word
210 typedef u16 word;
211 #endif
213 #ifndef SEEK_SET
214 #define SEEK_SET 0
215 #endif
216 #ifndef SEEK_CUR
217 #define SEEK_CUR 1
218 #endif
219 #ifndef SEEK_END
220 #define SEEK_END 2
221 #endif
223 extern struct proc_dir_entry * comx_root_dir;
225 extern int comx_register_hardware(struct comx_hardware *comx_hw);
226 extern int comx_unregister_hardware(char *name);
227 extern int comx_register_protocol(struct comx_protocol *comx_line);
228 extern int comx_unregister_protocol(char *name);
230 extern int comx_rx(struct net_device *dev, struct sk_buff *skb);
231 extern void comx_status(struct net_device *dev, int status);
232 extern void comx_lineup_func(unsigned long d);
234 extern int comx_debug(struct net_device *dev, char *fmt, ...);
235 extern int comx_debug_skb(struct net_device *dev, struct sk_buff *skb, char *msg);
236 extern int comx_debug_bytes(struct net_device *dev, unsigned char *bytes, int len,
237 char *msg);
238 extern int comx_strcasecmp(const char *cs, const char *ct);
240 extern struct inode_operations comx_normal_inode_ops;