home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 December / MICD_2000_12_NR1.iso / Dreamnet / drivery / Trendware / Te-16pct.exe / SCOUNIX / 5.X / R2E.H < prev    next >
C/C++ Source or Header  |  1996-02-05  |  7KB  |  220 lines

  1. /*
  2.  *    @(#) e3B.h 5.1 94/06/10 SCOINC
  3.  *
  4.  *      Copyright (C) The Santa Cruz Operation, 1993-1994.
  5.  *      This Module contains Proprietary Information of
  6.  *      The Santa Cruz Operation and should be treated
  7.  *      as Confidential.
  8.  */
  9.  
  10. /*
  11.  *      System V STREAMS TCP - Release 4.0
  12.  *
  13.  *      Copyright 1990 Interactive Systems Corporation,(ISC)
  14.  *      All Rights Reserved.
  15.  *
  16.  *      Copyright 1987, 1988, 1989 Lachman Associates, Incorporated (LAI)
  17.  *      All Rights Reserved.
  18.  *
  19.  *      System V STREAMS TCP was jointly developed by Lachman
  20.  *      Associates and Convergent Technologies.
  21.  */
  22. /*      SCCS IDENTIFICATION        */
  23. /* Header for Ethernet board */
  24. #define    r2e_NMCADDR    16
  25. #define    r2e_ADDR    6
  26.  
  27. #define    MCON        0    /* turn on multicast mode */
  28. #define    MCOFF        1    /* turn off multicast mode */
  29.  
  30. /* LAN Controller, Control Register bits 3=0, 2=0 */
  31.  
  32. #define CR    (device->base)        /* Command register (r/w) */
  33. #define        XSTP    0x01            /* Stop */
  34. #define        STA    0x02            /* Start */
  35. #define        TXP    0x04            /* Transmit packet */
  36. #define        RD0    0x08            /* Remote DMA command */
  37. #define        RD1    0x10
  38. #define        RD2    0x20
  39. #define        PS0    0x40            /* Page select */
  40. #define        PS1    0x80
  41. /* page 0 registers */
  42. #define PSTART    (device->base+0x01)    /* Page start register (w) */
  43. #define PSTOP    (device->base+0x02)    /* Page stop register (w) */
  44. #define BNRY    (device->base+0x03)    /* Boundary pointer (r/w) */
  45. #define TSR    (device->base+0x04)    /* Transmit status (r) */
  46. #define        PTX    0x01            /* Packet transmitted */
  47. #define        NDT    0x02            /* Non-deferred transmission */
  48. #define        COL    0x04            /* Transmit collided */
  49. #define        ABT    0x08            /* Transmit aborted */
  50. #define        CRS    0x10            /* Carrier sense lost */
  51. #define     FU    0x20            /* FIFO underrun */
  52. #define        CDH    0x40            /* Collision-detect heartbeat */
  53. #define        OWC    0x80            /* Out-of-windown collision */
  54. #define TPSR    (device->base+0x04)    /* Transmit page start (w) */
  55. #define NCR    (device->base+0x05)    /* # collisions (r) */
  56. #define TBCR0    (device->base+0x05)    /* Transmit byte count (w) */
  57. #define TBCR1    (device->base+0x06)
  58. #define ISR    (device->base+0x07)    /* Interrupt status (r/w) */
  59. #define        IPRX    0x01             /* Packet received */
  60. #define        IPTX    0x02            /* Packet transmitted */
  61. #define        IRXE    0x04            /* Receive error */
  62. #define        ITXE    0x08            /* Transmit error */
  63. #define        IOVW    0x10            /* Overwrite warning */
  64. #define        ICNT    0x20            /* Counter overflow */
  65. #define        IRDC    0x40            /* Remote DMA complete */
  66. #define        IRST    0x80            /* Reset status */
  67. #define RSAR0    (device->base+0x08)    /* Remote start address (w) */
  68. #define RSAR1    (device->base+0x09)
  69. #define RBCR0    (device->base+0x0a)    /* Remote byte count (w) */
  70. #define RBCR1    (device->base+0x0b)
  71. #define RSR    (device->base+0x0c)    /* Receive status (r) */
  72. #define        PRX    0x01            /* Pakcet received intact */
  73. #define        CRCE    0x02            /* CRC error */
  74. #define        FAE    0x04            /* Frame alignment error */
  75. #define        FO    0x08            /* FIFO overrun */
  76. #define        MPA    0x10            /* Missed packet */
  77. #define        PHY    0x20            /* Physical/multicast address */
  78. #define        DIS    0x40            /* Receiver disabled */
  79. #define        DFR    0x80            /* Deferring */
  80. #define RCR    (device->base+0x0c)    /* Receive configuration (w) */
  81. #define        SEP    0x01            /* Save errored packets */
  82. #define        AR    0x02            /* Accept runt packets */
  83. #define        AB    0x04            /* Accept broadcast */
  84. #define        AM    0x08            /* Accept multicast */
  85. #define        PRO    0x10            /* Promiscuous physical */
  86. #define        MON    0x20            /* Monitor mode */
  87. #define CNTR0    (device->base+0x0d)    /* Frame alignment errors (r) */
  88. #define TCR    (device->base+0x0d)    /* Transmit configuration (w) */
  89. #define        CRC    0x01            /* Inhibit CRC */
  90. #define        LB0    0x02            /* Encoded loopback control */
  91. #define        LB1    0x04
  92. #define        ATD    0x08            /* Auto-transmit disable */
  93. #define        OFST    0x10            /* Collision offset enable */
  94. #define CNTR1    (device->base+0x0e)    /* CRC errors (r) */
  95. #define DCR    (device->base+0x0e)    /* Data configuration (w) */
  96. #define        WTS    0x01            /* Word transfer select */
  97. #define        BOS    0x02            /* Byte order select */
  98. #define        LAS    0x04            /* Long address select */
  99. #define        BMS    0x08            /* Burst mode select */
  100. #define        ARM    0x10            /* Autoinitialize remote */
  101. #define        FT0    0x20            /* FIFO threshold select */
  102. #define        FT1    0x40
  103. #define CNTR2    (device->base+0x0f)    /* Missed packet errors (r) */
  104. #define IMR    (device->base+0x0f)    /* Interrupt mask (w) */
  105. #define        PRXE    0x01            /* Packet received */
  106. #define        PTXE    0x02            /* Packet transmitted */
  107. #define        RXEE    0x04            /* Receive error */
  108. #define        TXEE    0x08            /* Transmit error */
  109. #define        OVWE    0x10            /* Overwrite warning */
  110. #define        CNTE    0x20            /* Counter overflow */
  111. #define        RDCE    0x40            /* DMA complete */
  112. /* page 1 registers */
  113. #define PAR0    (device->base+0x01)    /* Physical address (r/w) */
  114. #define CURR    (device->base+0x07)    /* Current page (r/w) */
  115. #define MAR0    (device->base+0x08)    /* Multicast address (r/w) */
  116.  
  117. /* Ethernet Address PROM, Control Register bits 3=0, 2=1 */
  118.  
  119. #define    EADDR    (device->base)         /* Address (read & write)*/
  120.  
  121. /* Gate Array  */
  122.  
  123.  
  124. #define    EDEVSIZ    (0x20 * sizeof(char))
  125. /*
  126.  * Total buffer size, is therefore 1566. We allow 2000.
  127.  */
  128.  
  129. #define TX_BUFBASE    0x40
  130. #define TX_BUFSIZE    0x06
  131. #define RX_BUFBASE    0x4c
  132. #define RX_BUFLIM    0x60
  133. #define RX_BUFLIM16    0x80
  134. #define NXT_RXBUF(p)    ((p)==device->rx_buflim-1 ? RX_BUFBASE : (p)+1)
  135. #define PRV_RXBUF(p)    ((p)==RX_BUFBASE ? device->rx_buflim-1 : (p)-1)
  136. #define CURRXBUF(t)    (outb(CR, PS0|RD2|STA), t=inb(CURR), outb(CR, RD2|STA), t)
  137.  
  138. #define r2e_MINPACK    60     /* minimum output packet length */
  139. #define r2e_MAXPACK  1514    /* maximum output packet length */
  140.  
  141. /* transfer limits */
  142.  
  143. #define r2eETHERMIN        (r2e_MINPACK)
  144. #define r2eETHERMTU        (r2e_MAXPACK)
  145.  
  146. struct r2edevice {
  147. #ifdef DYNAMIC
  148. #define RX_MBLKS    64
  149.     mblk_t *mblk[RX_MBLKS];
  150. #endif
  151.     queue_t            *up_queue;
  152.     unsigned int        base;
  153.     int            open;        /* device open already? */
  154.     unsigned char        type16;
  155.     unsigned char        rx_buflim;
  156.         unsigned char           next_pkt;
  157.     unsigned int        flags;
  158.     unsigned int        tid;        /* TX timeout */
  159.     mac_stats_eth_t        macstats;    /* stats */
  160.  
  161.     unsigned char        eaddr[r2e_ADDR]; /* H/W address */
  162.                         /* Multicast table */
  163.     unsigned char        mctbl[r2e_NMCADDR][r2e_ADDR];
  164.     int            mccnt;
  165.         unsigned int            vect;
  166.  
  167.     /* dual transmit buffer stuff */
  168.     unsigned char        curtxbuf;
  169.     unsigned char        txbufstate[2];
  170.     unsigned char        txbufaddr[2];
  171.     unsigned short        txbuflen[2];
  172. };
  173.  
  174. /* device flags */
  175. #define r2eBUSY    0x01
  176. #define r2eWAITO    0x02
  177.  
  178. /* miscellany */
  179. #define OK    1
  180. #define NOT_OK    0
  181.  
  182. #define TX_TIMEOUT    (5*HZ)
  183. #define WATCHDOG2    (5*HZ)
  184.  
  185. #if 1
  186. #define r2eIMASK (PRXE|PTXE|RXEE|TXEE|OVWE|CNTE)
  187. #else
  188. #define r2eIMASK (PRXE|RXEE|OVWE|CNTE)
  189. #endif
  190.  
  191. extern struct r2edevice r2edevice[];
  192. extern unsigned int r2eiobase[];
  193. extern unsigned int r2eintl[];
  194. extern unsigned int r2e_nunit;  
  195.  
  196. #ifndef _INKERNEL
  197. #define r2eUNIT    4    /* maximum number of boards possible */
  198. #endif
  199.  
  200. #define    DIAGON        1
  201. #define    DIAGINTR    2
  202. #ifdef DEBUG
  203. #define r2eDIAG(M,S)    if (r2ediag & (M)) S
  204. #else
  205. #define r2eDIAG(M,S)
  206. #endif
  207.  
  208. #define r2e_INITED    (1)
  209. #define r2e_ACTIVE    (2)
  210. #define r2e_DOWN    (4)
  211.  
  212. #if !defined(ENETM_ID)
  213. #define ENETM_ID    101
  214. #endif
  215.  
  216. /* two transmit buffer state flags */
  217. #define TX_FREE        0
  218. #define TX_LOADED    1
  219. #define TX_TXING    2
  220.