hapn.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:4k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. #ifndef _HAPN_H
  2. #define _HAPN_H
  3. #ifndef _GLOBAL_H
  4. #include "global.h"
  5. #endif
  6. #ifndef _MBUF_H
  7. #include "mbuf.h"
  8. #endif
  9. #ifndef _IFACE_H
  10. #include "iface.h"
  11. #endif
  12. #ifndef _TIMER_H
  13. #include "timer.h"
  14. #endif
  15. /*  HAPN-1 PC plug-in card driver.
  16.  *  This card contains an Intel 8273 SDLC/HDLC Protocol Controller
  17.  *  The card is hardwired to addresses 310-31f and IRQ 2
  18.  */
  19. #define NHAPN 1
  20. #define INTMASK 0x21 /*  PC interrupt controller (8259) */
  21. struct hapn {
  22. struct iface *iface;
  23. long rxints;            /* RX interupt count                  */
  24. long txints;            /* TX interrupt count                 */
  25. /* Error counters                     */
  26. int badint;             /* Bad interrupt type                 */
  27. int crcerr;             /* CRC errors                         */
  28. int aborts;             /* RX frame aborts                    */
  29. int dmaorun;            /* DMA overun                         */
  30. int toobig;             /* RX frame too large                 */
  31. int rframes;            /* # of RX frames                     */
  32. int cdloss;             /* Loss of DCD during receive         */
  33. int rxorun;             /* Receive interrupt overun           */
  34. int nomem;              /* insufficient memory                */
  35. int t_urun;             /* TX underruns                       */
  36. int ctsloss;            /* Loss of CTS (dead-man timeout)     */
  37. int taborts;            /* TX aborts                          */
  38. int tframes;            /* # of TX frames                     */
  39. struct mbuf *rcvbuf;    /* Current receive buffer             */
  40. uint16 bufsiz;           /* Maximum RX frame size              */
  41. uint8 *rcp; /* RX data pointer                    */
  42. struct mbuf *sndq;      /* Transmit frames queue              */
  43. uint16 sndcnt;           /* Count of frames on sndq            */
  44. struct mbuf *sndbuf;    /* Current TX frame buffer            */
  45. int tstate;             /* Transmitter state                  */
  46. #define IDLE 0
  47. #define DEFER 1
  48. #define ACTIVE 2
  49. struct timer defer;
  50. int mode;               /* Channel-access mode                */
  51. #define CSMA 0
  52. #define FULLDUP 1
  53. uint16 base;             /* Base I/O address of board          */
  54. unsigned vec;           /* Interrupt level                    */
  55. INTERRUPT (*oldvec)(void); /* Previous interrupt service vector */
  56. uint8 chain; /* Interrupt chaining enable */
  57. };
  58. extern struct hapn Hapn[];
  59. /*  Interrupt vector handler  */
  60. /* In hapn.c: */
  61. INTERRUPT (far *(haint)(int dev))();
  62. /* In hapnvec.asm: */
  63. INTERRUPT ha0vec(void);
  64. /*  8273 register addresses  */
  65. #define CMD 0
  66. #define STA 0
  67. #define PAR 1
  68. #define RES 1
  69. #define RST 1
  70. #define TXI 2
  71. #define RXI 3
  72. #define TXD 4
  73. #define RXD 8
  74. /*  8273 commands  */
  75. #define SET_ONE 0xa4
  76. #define RST_ONE 0x64
  77. #define SET_XFER 0x97
  78. #define RST_XFER 0x57
  79. #define SET_MODE 0x91
  80. #define RST_MODE 0x51
  81. #define HDLC 0x20
  82. #define EOP 0x10
  83. #define EARLY 0x8
  84. #define BUFFERD 4
  85. #define PREFRM 2
  86. #define FLG_STM 1
  87. #define SET_SERIAL 0xa0
  88. #define RST_SERIAL 0x60
  89. #define LOOP 4
  90. #define TXC_RXC 2
  91. #define NRZI 1
  92. #define GENERAL_RX 0xc0
  93. #define SELECT_RX 0xc1
  94. #define SELECT_LRX 0xc2
  95. #define RX_DISABLE 0xc5
  96. #define TX_FRAME 0xc8
  97. #define LOOP_TX 0xca
  98. #define TX_TRANS 0xc9
  99. #define ABORT_TXF 0xcc
  100. #define ABORT_LTX 0xce
  101. #define ABORT_TXT 0xcd
  102. #define READ_A 0x22
  103. #define CD 2
  104. #define CTS 1
  105. #define READ_B 0x23
  106. #define SET_B 0xa3
  107. #define RST_B 0x63
  108. #define FLAG_D 0x20
  109. #define IRQ_ENB 8
  110. #define RTS 1
  111. /*  Status register bits  */
  112. #define CBSY 0x80
  113. #define CBF 0x40
  114. #define CPBF 0x20
  115. #define CRBF 0x10
  116. #define RXINT 8
  117. #define TXINT 4
  118. #define RXIRA 2
  119. #define TXIRA 1
  120. /*  Transmit result codes  */
  121. #define EARLY_TXI 0xc
  122. #define TX_CMPLT 0xd
  123. #define DMA_URUN 0xe
  124. #define CTS_LOSS 0xf
  125. #define ABORT_CMPLT 0x10
  126. /*  Receive result codes  */
  127. #define A1_MATCH 0
  128. #define A2_MATCH 1
  129. #define CRCERR 3
  130. #define ABORT_DET 4
  131. #define IDLE_DET 5
  132. #define EOP_DET 6
  133. #define SHORT_FRM 7
  134. #define DMA_OVRN 8
  135. #define MEM_OVFL 9
  136. #define CD_LOSS 0xa
  137. #define RX_ORUN 0xb
  138. #endif /* _HAPN_H */