Annotation of cci/usr/src/etc/nstat/if_enp.h, revision 1.1

1.1     ! root        1: /*     Copyright (c) 1984 by Communication Machinery Corporation
        !             2:  *
        !             3:  *     This file contains material which is proprietary to
        !             4:  *     Communication Machinery Corporation (CMC) and which
        !             5:  *     may not be divulged without the written permission
        !             6:  *     of CMC.
        !             7:  *
        !             8:  *     ENP-10 Ram Definition
        !             9:  *
        !            10:  *     3/15/85 Jon Phares
        !            11:  *     Update 7/10/85 S. Holmgren
        !            12:  *     ENP-10 update 7/21/85 J. Mullen
        !            13:  *     ENP-20 update 8/11/85 J. Mullen
        !            14:  *     Mods for CCI TAHOE system 8/14/85 J. Mullen
        !            15:  * 
        !            16:  */
        !            17: 
        !            18: #define K              *1024
        !            19: 
        !            20: #define ENPSIZE                (124 K)         /* VME bus space allocated to enp */
        !            21: #define MINPKTSIZE     60              /* minimum ethernet packet size */
        !            22: 
        !            23: /* Note: paged window (4 K) is identity mapped by ENP kernel to provide
        !            24:  * 124 K contiguous RAM (as reflected in RAM_SIZE)
        !            25:  */
        !            26: 
        !            27: #define RAM_WINDOW     (128 K)
        !            28: #define IOACCESS_WINDOW (512)
        !            29: #define FIXED_WINDOW   (RAM_WINDOW - IOACCESS_WINDOW)
        !            30: #define RAMROM_SWAP    (4 K)
        !            31: #define RAM_SIZE       (FIXED_WINDOW - RAMROM_SWAP)
        !            32: 
        !            33: #define HOST_RAMSIZE   (48 K)
        !            34: #define ENP_RAMSIZE    (20 K)
        !            35: 
        !            36: /* ...top of 4K local i/o space for ENP */
        !            37: 
        !            38: #ifdef notdef
        !            39: typedef struct iow10 {
        !            40:        char    pad1[0x81];
        !            41: /* written to: causes an interrupt on the host at the vector written
        !            42:    read from : returns the most significant 8 bits of the slave address */
        !            43:        char    vector;
        !            44:        char    pad2[0x1F];
        !            45:        char    csrarr[0x1E];
        !            46:        char    pad3[2];
        !            47:        char    ier;            /* intr. enable reg., 0x80 == enable,0 == off*/
        !            48:        char    pad4[1];
        !            49:        char    tir;            /* transmit intr. (Level 4 INP autovector) */
        !            50:        char    pad5[1];
        !            51:        char    rir;            /* receive intr. (Level 5 INP autovector) */
        !            52:        char    pad6[1];
        !            53:        char    uir;            /* utility intr. (Level 1 INP autovector) */
        !            54:        char    pad7[7];
        !            55:        char    mapfirst4k;     /* bit 7 set means ram, clear means rom */
        !            56:        char    pad8[0x11];
        !            57:        char    exr;            /* exception register, see bit defines above */
        !            58:        char    pad9[0xD1F];
        !            59:        char    hst2enp_interrupt;      /* R or W interrupts ENP */
        !            60:        char    pad10[0xFF];
        !            61:        char    hst2enp_reset;  /* R or W resets ENP */
        !            62: } iow10;
        !            63: #endif notdef
        !            64: 
        !            65: typedef struct iow20
        !            66: {
        !            67:        char    pad0;   
        !            68:        char    hst2enp_interrupt;
        !            69:        char    pad1[510];
        !            70: } iow20;
        !            71: 
        !            72: 
        !            73: #ifdef notdef
        !            74: typedef struct iow30 
        !            75: {
        !            76:        char    pad0;
        !            77:        char    impucsr;
        !            78:        char    pad1[0x1d];
        !            79:        short   bus2mpu_interrupt;
        !            80:        short   bs2enp_wsctl;
        !            81:        short   bs2enp_rsctl;
        !            82:        short   enp2hst_clear_intr;  /* 0x27 */
        !            83:        short   enp_rcv_intr;
        !            84:        short   enp_xmit_intr;
        !            85:        short   hst2enp_interrupt;   /* 0x2d */
        !            86:        short   pad2;
        !            87:        char    pad3[0xf];
        !            88:        short   bus_page;       /* Bus page register */ 
        !            89:        char    pad4[0x1d];
        !            90:        short   lock_ctrl;
        !            91:        char    pad5[0x1d];
        !            92:        short   duart[0x10];    /* 16 duart regs */
        !            93:        char    pad6[0x1f];
        !            94:        short   bus_window;
        !            95: } iow30; 
        !            96: #endif notdef
        !            97: 
        !            98: struct ether_addr
        !            99: {
        !           100:        u_char ea_addr[6];
        !           101: };
        !           102: 
        !           103: #define ETHADDR                struct ether_addr
        !           104: #define ETHADDR_SIZE   6               /* size of ethernet address     */
        !           105: 
        !           106: typedef
        !           107: struct ethlist
        !           108: {
        !           109:        int     e_listsize;             /* active addr entries */
        !           110:        ETHADDR e_baseaddr;             /* addr lance is working with */
        !           111:        ETHADDR e_addrs[ 16 ];          /* possible addresses */
        !           112: } ETHLIST;
        !           113: 
        !           114: typedef
        !           115: struct enpstat
        !           116: {
        !           117:        unsigned long e_xmit_successful;        /* Successful transmissions */
        !           118:        unsigned long e_mult_retry;             /* multiple retries on xmit */
        !           119:        unsigned long e_one_retry;              /* single retries */
        !           120:        unsigned long e_fail_retry;             /* too many retries */
        !           121:        unsigned long e_deferrals;              /* transmission delayed due
        !           122:                                                   to active medium */
        !           123:        unsigned long e_xmit_buff_err;          /* xmit data chaining failed --
        !           124:                                                   "can't happen" */
        !           125:        unsigned long e_silo_underrun;          /* transmit data fetch failed */
        !           126:        unsigned long e_late_coll;              /* collision after xmit */
        !           127:        unsigned long e_lost_carrier;
        !           128:        unsigned long e_babble;                 /* xmit length > 1518 */
        !           129:        unsigned long e_collision;
        !           130:        unsigned long e_xmit_mem_err;
        !           131:        unsigned long e_rcv_successful;         /* good receptions */
        !           132:        unsigned long e_rcv_missed;             /* no recv buff available */
        !           133:        unsigned long e_crc_err;                /* checksum failed */
        !           134:        unsigned long e_frame_err;              /* crc error AND
        !           135:                                                   data length != 0 mod 8 */
        !           136:        unsigned long e_rcv_buff_err;           /* rcv data chain failure --
        !           137:                                                   "can't happen" */
        !           138:        unsigned long e_silo_overrun;           /* receive data store failed */
        !           139:        unsigned long e_rcv_mem_err;
        !           140: } ENPSTAT;
        !           141: 
        !           142: typedef struct RING
        !           143: {
        !           144:        short   r_rdidx;
        !           145:        short   r_wrtidx;
        !           146:        short   r_size;
        !           147:        short   r_pad;
        !           148:        int     r_slot[1];
        !           149: } RING;
        !           150: 
        !           151: typedef struct RING32
        !           152: {
        !           153:        short   r_rdidx;
        !           154:        short   r_wrtidx;
        !           155:        short   r_size;
        !           156:        short   r_pad;                  /* to make VAXen happy */
        !           157:        int     r_slot[ 32 ];
        !           158: } RING32;
        !           159: 
        !           160: /*
        !           161:  *     ENP Ram data layout
        !           162:  *
        !           163:  *     If you don't put it here - it isn't there
        !           164:  *
        !           165:  */
        !           166: 
        !           167: typedef struct enpdevice {
        !           168: #ifdef notdef
        !           169:        char    enp_ram_rom[4 K];
        !           170: #endif notdef
        !           171:        union {
        !           172:                char    all_ram[RAM_SIZE];
        !           173:                struct {
        !           174:                        unsigned int    t_go;
        !           175:                        unsigned int    t_pstart;
        !           176:                } t;
        !           177:                struct {
        !           178:                        char    nram[RAM_SIZE - (HOST_RAMSIZE + ENP_RAMSIZE)];
        !           179:                        char    hram[HOST_RAMSIZE];
        !           180:                        char    kram[ENP_RAMSIZE];
        !           181:                } u_ram;
        !           182:                struct
        !           183:                {
        !           184:                        char    pad7[ 0x100 ];  /* starts 0x1100 - 0x2000 */
        !           185:                        short   e_enpstate;     /* 1102 */
        !           186:                        short   e_enpmode;      /* 1104 */
        !           187:                        int     e_enpbase;      /* 1104 */
        !           188:                        int     e_enprun;       /* 1108 */
        !           189:                        unsigned short  e_intrvec;
        !           190:                        unsigned short  e_dummy[3];
        !           191: 
        !           192:                        RING32  h_toenp;        /* 110C */
        !           193:                        RING32  h_hostfree;             
        !           194:                        RING32  e_tohost;               
        !           195:                        RING32  e_enpfree;              
        !           196: 
        !           197:                        ENPSTAT e_stat;
        !           198:                        ETHLIST e_netaddr;              
        !           199:                } iface;
        !           200:        } enp_u;
        !           201:        iow20   enp_iow;
        !           202: } ENPDEVICE;
        !           203: 
        !           204: #define        enp_ram         enp_u.all_ram
        !           205: #define        enp_nram        enp_u.u_ram.nram
        !           206: #define        enp_hram        enp_u.u_ram.hram
        !           207: #define        enp_kram        enp_u.u_ram.kram
        !           208: #define        enp_go          enp_u.t.t_go
        !           209: #define        enp_prog_start  enp_u.t.t_pstart
        !           210: #define        enp_intrvec     enp_u.iface.e_intrvec
        !           211: #define enp_state      enp_u.iface.e_enpstate
        !           212: #define enp_mode       enp_u.iface.e_enpmode
        !           213: #define enp_base       enp_u.iface.e_enpbase
        !           214: #define enp_enprun     enp_u.iface.e_enprun
        !           215: #define enp_toenp      enp_u.iface.h_toenp
        !           216: #define enp_hostfree   enp_u.iface.h_hostfree
        !           217: #define enp_tohost     enp_u.iface.e_tohost
        !           218: #define enp_enpfree    enp_u.iface.e_enpfree
        !           219: #define enp_freembuf   enp_u.iface.h_freembuf
        !           220: #define enp_stat       enp_u.iface.e_stat
        !           221: #define enp_addr       enp_u.iface.e_netaddr
        !           222: 
        !           223: #define ENPVAL         0xff    /* value to poke in enp_iow.hst2enp_interrupt */
        !           224: #define RESETVAL       0x00    /* value to poke in enp_iow.enp2hst_clear_intr */
        !           225: 
        !           226: #define INTR_ENP(addr)         addr->enp_iow.hst2enp_interrupt = ENPVAL
        !           227: 
        !           228: #if ENP == 30
        !           229: #define ACK_ENP_INTR(addr)     addr->enp_iow.enp2hst_clear_intr = RESETVAL
        !           230: #define IS_ENP_INTR(addr)      (addr->enp_iow.enp2hst_clear_intr&0x80)
        !           231: # else
        !           232: #define ACK_ENP_INTR(addr)
        !           233: #define IS_ENP_INTR(addr)      ( 1 )
        !           234: #endif ENP == 30
        !           235: 
        !           236: #ifdef notdef
        !           237: #define RESET_ENP(addr)                addr->enp_iow.hst2enp_reset = 01
        !           238: # else
        !           239: #define RESET_ENP(addr)
        !           240: #endif notdef
        !           241: 
        !           242: #ifdef TAHOE
        !           243: #define ENP_GO( addr,start )   {int v; v = start; \
        !           244:                        enpcopy(&v, &addr->enp_prog_start, sizeof(v) ); \
        !           245:                        v = 0x80800000; \
        !           246:                        enpcopy( &v, &addr->enp_go, sizeof(v) ); }
        !           247: #else
        !           248: #define ENP_GO( addr,start,intvec ) { addr->enp_prog_start = (unsigned int)(start); \
        !           249:                                addr->enp_intrvec = (unsigned short) intvec; \
        !           250:                                addr->enp_go = 0x80800000; }
        !           251: #endif TAHOE
        !           252: 
        !           253: #define SPL_ENP                        spl4
        !           254: 
        !           255: 
        !           256: /*
        !           257:  * state bits
        !           258:  */
        !           259: 
        !           260: #define S_ENPRESET     01              /* enp is in reset state */
        !           261: #define S_ENPRUN       02              /* enp is in run state */
        !           262: 
        !           263: /*
        !           264:  * mode bits
        !           265:  */
        !           266: 
        !           267: #define E_SWAP16               0x1             /* swap two octets within 16 */
        !           268: #define E_SWAP32               0x2             /* swap 16s within 32 */
        !           269: #define E_SWAPRD               0x4             /* swap on read */
        !           270: #define E_SWAPWRT              0x8             /* swap on write */
        !           271: #define E_DMA                  0x10            /* enp does data moving */
        !           272: 
        !           273: #define E_EXAM_LIST            0x80000000      /*enp should examine addrlist */
        !           274: #define E_ADDR_SUPP            0x40000000      /*enp should use supplied addr*/
        !           275: 
        !           276: 
        !           277: /*
        !           278:  *     Download ioctl definitions
        !           279:  */
        !           280: 
        !           281: #define mkioctl(type,value) (0x20000000|('type'<<8)|value)
        !           282: 
        !           283: #define ENPIOGO                mkioctl( S,1 )          /* start the enp */
        !           284: #define ENPIORESET     mkioctl( S,2 )          /* reset the enp */
        !           285: 
        !           286: /*
        !           287:  *     The ENP Data Buffer Structure
        !           288:  */
        !           289: 
        !           290: typedef struct BCB
        !           291: {
        !           292:        struct BCB *b_link;
        !           293:        short    b_stat;
        !           294:        short    b_len;
        !           295:        char    *b_addr;
        !           296:        short    b_msglen;
        !           297:        short    b_reserved;
        !           298: }BCB;
        !           299: 
        !           300: struct  enp_softc 
        !           301: {
        !           302:        struct  arpcom es_ac;           /* common ethernet structures */
        !           303:        struct  ether_addr es_boardaddr;/* board ethernet address */
        !           304: }; 
        !           305: 
        !           306: #define es_if           es_ac.ac_if     /* network-visible interface */
        !           307: #define es_enaddr       es_ac.ac_enaddr /* hardware ethernet address */
        !           308: 
        !           309: #define        ENP_OPEN        1               /* device enpram opened */
        !           310: #define ENP_CLOSE      2               /* device enpram closed */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.