OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [net/] [wan/] [comx.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
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>
8
 *
9
 * Copyright (C) 1995-1999 ITConsult-Pro Co. <info@itc.hu>
10
 *
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.
15
 *
16
 *
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)
27
 */
28
#include <linux/config.h>
29
 
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;
37
        };
38
 
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;
46
        };
47
 
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
53
 
54
        unsigned char   init_status;
55
        unsigned char   line_status;
56
 
57
        struct timer_list lineup_timer; // against line jitter
58
        long int        lineup_pending;
59
        unsigned char   lineup_delay;
60
 
61
#if 0
62
        struct timer_list reset_timer; // for board resetting
63
        long            reset_pending;
64
        int             reset_timeout;
65
#endif
66
 
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;
102
 
103
        // HW specific
104
 
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;
121
        };
122
 
123
struct comx_debugflags_struct {
124
        char *name;
125
        int  value;
126
        };
127
 
128
#define COMX_ROOT_DIR_NAME      "comx"
129
 
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
155
 
156
#define PROTONAME_NONE          "none"
157
#define HWNAME_NONE             "none"
158
#define KEEPALIVE_OFF           "off"
159
 
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 */
164
 
165
#define LINE_UP                 1               /* Modem UP */
166
#define PROTO_UP                2
167
#define PROTO_LOOP              4
168
 
169
#define HW_OPEN                 1
170
#define LINE_OPEN               2
171
#define FW_LOADED               4
172
#define IRQ_ALLOCATED           8
173
 
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
182
 
183
#define DEBUG_PAGESIZE          3072
184
#define DEFAULT_DEBUG_SIZE      4096
185
#define DEFAULT_LINEUP_DELAY    1
186
#define FILE_PAGESIZE           3072
187
 
188
#ifndef COMX_PPP_MAJOR
189
#define COMX_PPP_MAJOR          88
190
#endif
191
 
192
 
193
#define COMX_CHANNEL(dev) ((struct comx_channel*)dev->priv)
194
 
195
#define TWIN(dev) (COMX_CHANNEL(dev)->twin)
196
 
197
 
198
#ifndef byte
199
typedef u8      byte;
200
#endif
201
#ifndef word
202
typedef u16     word;
203
#endif
204
 
205
#ifndef SEEK_SET
206
#define SEEK_SET        0
207
#endif
208
#ifndef SEEK_CUR
209
#define SEEK_CUR        1
210
#endif
211
#ifndef SEEK_END
212
#define SEEK_END        2
213
#endif
214
 
215
extern struct proc_dir_entry * comx_root_dir;
216
 
217
extern int      comx_register_hardware(struct comx_hardware *comx_hw);
218
extern int      comx_unregister_hardware(char *name);
219
extern int      comx_register_protocol(struct comx_protocol *comx_line);
220
extern int      comx_unregister_protocol(char *name);
221
 
222
extern int      comx_rx(struct net_device *dev, struct sk_buff *skb);
223
extern void     comx_status(struct net_device *dev, int status);
224
extern void     comx_lineup_func(unsigned long d);
225
 
226
extern int      comx_debug(struct net_device *dev, char *fmt, ...);
227
extern int      comx_debug_skb(struct net_device *dev, struct sk_buff *skb, char *msg);
228
extern int      comx_debug_bytes(struct net_device *dev, unsigned char *bytes, int len,
229
                char *msg);
230
extern int      comx_strcasecmp(const char *cs, const char *ct);
231
 
232
extern struct inode_operations comx_normal_inode_ops;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.