comx.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:7k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  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>
  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. struct comx_protocol {
  30. char *name;
  31. char *version;
  32. unsigned short encap_type;
  33. int (*line_init)(struct net_device *dev);
  34. int (*line_exit)(struct net_device *dev);
  35. struct comx_protocol *next;
  36. };
  37. struct comx_hardware {
  38. char *name; 
  39. char *version;
  40. int (*hw_init)(struct net_device *dev);
  41. int (*hw_exit)(struct net_device *dev);
  42. int (*hw_dump)(struct net_device *dev);
  43. struct comx_hardware *next;
  44. };
  45. struct comx_channel {
  46. void *if_ptr; // General purpose pointer
  47. struct net_device  *dev; // Where we belong to
  48. struct net_device *twin; // On dual-port cards
  49. struct proc_dir_entry *procdir; // the directory
  50. unsigned char init_status;
  51. unsigned char line_status;
  52. struct timer_list lineup_timer; // against line jitter
  53. long int lineup_pending;
  54. unsigned char lineup_delay;
  55. #if 0
  56. struct timer_list reset_timer; // for board resetting
  57. long reset_pending;
  58. int reset_timeout;
  59. #endif
  60. struct net_device_stats stats;
  61. struct net_device_stats *current_stats;
  62. #if 0
  63. unsigned long board_resets;
  64. #endif
  65. unsigned long  *avg_bytes;
  66. int loadavg_counter, loadavg_size;
  67. int loadavg[3];
  68. struct timer_list loadavg_timer;
  69. int debug_flags;
  70. char  *debug_area;
  71. int debug_start, debug_end, debug_size;
  72. struct proc_dir_entry *debug_file;
  73. #ifdef CONFIG_COMX_DEBUG_RAW
  74. char *raw;
  75. int raw_len;
  76. #endif
  77. // LINE specific
  78. struct comx_protocol *protocol;
  79. void (*LINE_rx)(struct net_device *dev, struct sk_buff *skb);
  80. int (*LINE_tx)(struct net_device *dev);
  81. void (*LINE_status)(struct net_device *dev, u_short status);
  82. int (*LINE_open)(struct net_device *dev);
  83. int (*LINE_close)(struct net_device *dev);
  84. int (*LINE_xmit)(struct sk_buff *skb, struct net_device *dev);
  85. int (*LINE_header)(struct sk_buff *skb, struct net_device *dev,
  86. u_short type,void *daddr, void *saddr, 
  87. unsigned len);
  88. int (*LINE_rebuild_header)(struct sk_buff *skb);
  89. int (*LINE_statistics)(struct net_device *dev, char *page);
  90. int (*LINE_parameter_check)(struct net_device *dev);
  91. int (*LINE_ioctl)(struct net_device *dev, struct ifreq *ifr,
  92. int cmd);
  93. void (*LINE_mod_use)(int);
  94. void * LINE_privdata;
  95. // HW specific
  96. struct comx_hardware *hardware;
  97. void (*HW_board_on)(struct net_device *dev);
  98. void (*HW_board_off)(struct net_device *dev);
  99. struct net_device *(*HW_access_board)(struct net_device *dev);
  100. void (*HW_release_board)(struct net_device *dev, struct net_device *savep);
  101. int (*HW_txe)(struct net_device *dev);
  102. int (*HW_open)(struct net_device *dev);
  103. int (*HW_close)(struct net_device *dev);
  104. int (*HW_send_packet)(struct net_device *dev,struct sk_buff *skb);
  105. int (*HW_statistics)(struct net_device *dev, char *page);
  106. #if 0
  107. int (*HW_reset)(struct net_device *dev, char *page);
  108. #endif
  109. int (*HW_load_board)(struct net_device *dev);
  110. void (*HW_set_clock)(struct net_device *dev);
  111. void *HW_privdata;
  112. };
  113. struct comx_debugflags_struct {
  114. char *name;
  115. int  value;
  116. };
  117. #define COMX_ROOT_DIR_NAME "comx"
  118. #define FILENAME_HARDWARE "boardtype"
  119. #define FILENAME_HARDWARELIST "boardtypes"
  120. #define FILENAME_PROTOCOL "protocol"
  121. #define FILENAME_PROTOCOLLIST "protocols"
  122. #define FILENAME_DEBUG "debug"
  123. #define FILENAME_CLOCK "clock"
  124. #define FILENAME_STATUS "status"
  125. #define FILENAME_IO "io"
  126. #define FILENAME_IRQ "irq"
  127. #define FILENAME_KEEPALIVE "keepalive"
  128. #define FILENAME_LINEUPDELAY "lineup_delay"
  129. #define FILENAME_CHANNEL "channel"
  130. #define FILENAME_FIRMWARE "firmware"
  131. #define FILENAME_MEMADDR "memaddr"
  132. #define FILENAME_TWIN "twin"
  133. #define FILENAME_T1 "t1"
  134. #define FILENAME_T2 "t2"
  135. #define FILENAME_N2 "n2"
  136. #define FILENAME_WINDOW "window"
  137. #define FILENAME_MODE "mode"
  138. #define FILENAME_DLCI "dlci"
  139. #define FILENAME_MASTER "master"
  140. #ifdef CONFIG_COMX_DEBUG_RAW
  141. #define FILENAME_RAW "raw"
  142. #endif
  143. #define PROTONAME_NONE "none"
  144. #define HWNAME_NONE "none"
  145. #define KEEPALIVE_OFF "off"
  146. #define FRAME_ACCEPTED 0 /* sending and xmitter busy */
  147. #define FRAME_DROPPED 1
  148. #define FRAME_ERROR 2 /* xmitter error */
  149. #define FRAME_QUEUED 3 /* sending but more can come */
  150. #define LINE_UP 1 /* Modem UP */
  151. #define PROTO_UP 2
  152. #define PROTO_LOOP 4
  153. #define HW_OPEN 1
  154. #define LINE_OPEN 2
  155. #define FW_LOADED 4
  156. #define IRQ_ALLOCATED 8
  157. #define DEBUG_COMX_RX 2
  158. #define DEBUG_COMX_TX 4
  159. #define DEBUG_HW_TX 16
  160. #define DEBUG_HW_RX 32
  161. #define DEBUG_HDLC_KEEPALIVE 64
  162. #define DEBUG_COMX_PPP 128
  163. #define DEBUG_COMX_LAPB 256
  164. #define DEBUG_COMX_DLCI 512
  165. #define DEBUG_PAGESIZE 3072
  166. #define DEFAULT_DEBUG_SIZE 4096
  167. #define DEFAULT_LINEUP_DELAY 1
  168. #define FILE_PAGESIZE 3072
  169. #ifndef COMX_PPP_MAJOR
  170. #define COMX_PPP_MAJOR 88
  171. #endif
  172. #define COMX_CHANNEL(dev) ((struct comx_channel*)dev->priv)
  173. #define TWIN(dev) (COMX_CHANNEL(dev)->twin)
  174. #ifndef byte
  175. typedef u8 byte;
  176. #endif
  177. #ifndef word
  178. typedef u16 word;
  179. #endif
  180. #ifndef SEEK_SET
  181. #define SEEK_SET 0
  182. #endif
  183. #ifndef SEEK_CUR
  184. #define SEEK_CUR 1
  185. #endif
  186. #ifndef SEEK_END
  187. #define SEEK_END 2
  188. #endif
  189. extern struct proc_dir_entry * comx_root_dir;
  190. extern int comx_register_hardware(struct comx_hardware *comx_hw);
  191. extern int comx_unregister_hardware(char *name);
  192. extern int comx_register_protocol(struct comx_protocol *comx_line);
  193. extern int comx_unregister_protocol(char *name);
  194. extern int comx_rx(struct net_device *dev, struct sk_buff *skb);
  195. extern void comx_status(struct net_device *dev, int status);
  196. extern void comx_lineup_func(unsigned long d);
  197. extern int comx_debug(struct net_device *dev, char *fmt, ...);
  198. extern int comx_debug_skb(struct net_device *dev, struct sk_buff *skb, char *msg);
  199. extern int comx_debug_bytes(struct net_device *dev, unsigned char *bytes, int len,
  200. char *msg);
  201. extern int comx_strcasecmp(const char *cs, const char *ct);
  202. extern struct inode_operations comx_normal_inode_ops;