comx.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:7k
- /*
- * General definitions for the COMX driver
- *
- * Original authors: Arpad Bakay <bakay.arpad@synergon.hu>,
- * Peter Bajan <bajan.peter@synergon.hu>,
- * Previous maintainer: Tivadar Szemethy <tiv@itc.hu>
- * Currently maintained by: Gergely Madarasz <gorgo@itc.hu>
- *
- * Copyright (C) 1995-1999 ITConsult-Pro Co. <info@itc.hu>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- *
- *
- * net_device_stats:
- * rx_length_errors rec_len < 4 || rec_len > 2000
- * rx_over_errors receive overrun (OVR)
- * rx_crc_errors rx crc error
- * rx_frame_errors aborts rec'd (ABO)
- * rx_fifo_errors status fifo overrun (PBUFOVR)
- * rx_missed_errors receive buffer overrun (BUFOVR)
- * tx_aborted_errors ?
- * tx_carrier_errors modem line status changes
- * tx_fifo_errors tx underrun (locomx)
- */
- #include <linux/config.h>
- struct comx_protocol {
- char *name;
- char *version;
- unsigned short encap_type;
- int (*line_init)(struct net_device *dev);
- int (*line_exit)(struct net_device *dev);
- struct comx_protocol *next;
- };
- struct comx_hardware {
- char *name;
- char *version;
- int (*hw_init)(struct net_device *dev);
- int (*hw_exit)(struct net_device *dev);
- int (*hw_dump)(struct net_device *dev);
- struct comx_hardware *next;
- };
- struct comx_channel {
- void *if_ptr; // General purpose pointer
- struct net_device *dev; // Where we belong to
- struct net_device *twin; // On dual-port cards
- struct proc_dir_entry *procdir; // the directory
- unsigned char init_status;
- unsigned char line_status;
- struct timer_list lineup_timer; // against line jitter
- long int lineup_pending;
- unsigned char lineup_delay;
- #if 0
- struct timer_list reset_timer; // for board resetting
- long reset_pending;
- int reset_timeout;
- #endif
- struct net_device_stats stats;
- struct net_device_stats *current_stats;
- #if 0
- unsigned long board_resets;
- #endif
- unsigned long *avg_bytes;
- int loadavg_counter, loadavg_size;
- int loadavg[3];
- struct timer_list loadavg_timer;
- int debug_flags;
- char *debug_area;
- int debug_start, debug_end, debug_size;
- struct proc_dir_entry *debug_file;
- #ifdef CONFIG_COMX_DEBUG_RAW
- char *raw;
- int raw_len;
- #endif
- // LINE specific
- struct comx_protocol *protocol;
- void (*LINE_rx)(struct net_device *dev, struct sk_buff *skb);
- int (*LINE_tx)(struct net_device *dev);
- void (*LINE_status)(struct net_device *dev, u_short status);
- int (*LINE_open)(struct net_device *dev);
- int (*LINE_close)(struct net_device *dev);
- int (*LINE_xmit)(struct sk_buff *skb, struct net_device *dev);
- int (*LINE_header)(struct sk_buff *skb, struct net_device *dev,
- u_short type,void *daddr, void *saddr,
- unsigned len);
- int (*LINE_rebuild_header)(struct sk_buff *skb);
- int (*LINE_statistics)(struct net_device *dev, char *page);
- int (*LINE_parameter_check)(struct net_device *dev);
- int (*LINE_ioctl)(struct net_device *dev, struct ifreq *ifr,
- int cmd);
- void (*LINE_mod_use)(int);
- void * LINE_privdata;
- // HW specific
- struct comx_hardware *hardware;
- void (*HW_board_on)(struct net_device *dev);
- void (*HW_board_off)(struct net_device *dev);
- struct net_device *(*HW_access_board)(struct net_device *dev);
- void (*HW_release_board)(struct net_device *dev, struct net_device *savep);
- int (*HW_txe)(struct net_device *dev);
- int (*HW_open)(struct net_device *dev);
- int (*HW_close)(struct net_device *dev);
- int (*HW_send_packet)(struct net_device *dev,struct sk_buff *skb);
- int (*HW_statistics)(struct net_device *dev, char *page);
- #if 0
- int (*HW_reset)(struct net_device *dev, char *page);
- #endif
- int (*HW_load_board)(struct net_device *dev);
- void (*HW_set_clock)(struct net_device *dev);
- void *HW_privdata;
- };
- struct comx_debugflags_struct {
- char *name;
- int value;
- };
- #define COMX_ROOT_DIR_NAME "comx"
- #define FILENAME_HARDWARE "boardtype"
- #define FILENAME_HARDWARELIST "boardtypes"
- #define FILENAME_PROTOCOL "protocol"
- #define FILENAME_PROTOCOLLIST "protocols"
- #define FILENAME_DEBUG "debug"
- #define FILENAME_CLOCK "clock"
- #define FILENAME_STATUS "status"
- #define FILENAME_IO "io"
- #define FILENAME_IRQ "irq"
- #define FILENAME_KEEPALIVE "keepalive"
- #define FILENAME_LINEUPDELAY "lineup_delay"
- #define FILENAME_CHANNEL "channel"
- #define FILENAME_FIRMWARE "firmware"
- #define FILENAME_MEMADDR "memaddr"
- #define FILENAME_TWIN "twin"
- #define FILENAME_T1 "t1"
- #define FILENAME_T2 "t2"
- #define FILENAME_N2 "n2"
- #define FILENAME_WINDOW "window"
- #define FILENAME_MODE "mode"
- #define FILENAME_DLCI "dlci"
- #define FILENAME_MASTER "master"
- #ifdef CONFIG_COMX_DEBUG_RAW
- #define FILENAME_RAW "raw"
- #endif
- #define PROTONAME_NONE "none"
- #define HWNAME_NONE "none"
- #define KEEPALIVE_OFF "off"
- #define FRAME_ACCEPTED 0 /* sending and xmitter busy */
- #define FRAME_DROPPED 1
- #define FRAME_ERROR 2 /* xmitter error */
- #define FRAME_QUEUED 3 /* sending but more can come */
- #define LINE_UP 1 /* Modem UP */
- #define PROTO_UP 2
- #define PROTO_LOOP 4
- #define HW_OPEN 1
- #define LINE_OPEN 2
- #define FW_LOADED 4
- #define IRQ_ALLOCATED 8
- #define DEBUG_COMX_RX 2
- #define DEBUG_COMX_TX 4
- #define DEBUG_HW_TX 16
- #define DEBUG_HW_RX 32
- #define DEBUG_HDLC_KEEPALIVE 64
- #define DEBUG_COMX_PPP 128
- #define DEBUG_COMX_LAPB 256
- #define DEBUG_COMX_DLCI 512
- #define DEBUG_PAGESIZE 3072
- #define DEFAULT_DEBUG_SIZE 4096
- #define DEFAULT_LINEUP_DELAY 1
- #define FILE_PAGESIZE 3072
- #ifndef COMX_PPP_MAJOR
- #define COMX_PPP_MAJOR 88
- #endif
- #define COMX_CHANNEL(dev) ((struct comx_channel*)dev->priv)
- #define TWIN(dev) (COMX_CHANNEL(dev)->twin)
- #ifndef byte
- typedef u8 byte;
- #endif
- #ifndef word
- typedef u16 word;
- #endif
- #ifndef SEEK_SET
- #define SEEK_SET 0
- #endif
- #ifndef SEEK_CUR
- #define SEEK_CUR 1
- #endif
- #ifndef SEEK_END
- #define SEEK_END 2
- #endif
- extern struct proc_dir_entry * comx_root_dir;
- extern int comx_register_hardware(struct comx_hardware *comx_hw);
- extern int comx_unregister_hardware(char *name);
- extern int comx_register_protocol(struct comx_protocol *comx_line);
- extern int comx_unregister_protocol(char *name);
- extern int comx_rx(struct net_device *dev, struct sk_buff *skb);
- extern void comx_status(struct net_device *dev, int status);
- extern void comx_lineup_func(unsigned long d);
- extern int comx_debug(struct net_device *dev, char *fmt, ...);
- extern int comx_debug_skb(struct net_device *dev, struct sk_buff *skb, char *msg);
- extern int comx_debug_bytes(struct net_device *dev, unsigned char *bytes, int len,
- char *msg);
- extern int comx_strcasecmp(const char *cs, const char *ct);
- extern struct inode_operations comx_normal_inode_ops;