Annotation of 43BSDTahoe/sys/tahoeif/if_enpreg.h, revision 1.1

1.1     ! root        1: /*
        !             2:  *     @(#)if_enpreg.h 7.1 (Berkeley) 5/31/88
        !             3:  */
        !             4: 
        !             5: /*     Copyright (c) 1984 by Communication Machinery Corporation
        !             6:  *
        !             7:  *     This file contains material which is proprietary to
        !             8:  *     Communication Machinery Corporation (CMC) and which
        !             9:  *     may not be divulged without the written permission
        !            10:  *     of CMC.
        !            11:  *
        !            12:  *     ENP-10 Ram Definition
        !            13:  *
        !            14:  *     3/15/85 Jon Phares
        !            15:  *     Update 7/10/85 S. Holmgren
        !            16:  *     ENP-10 update 7/21/85 J. Mullen
        !            17:  *     ENP-20 update 8/11/85 J. Mullen
        !            18:  *     Mods for CCI TAHOE system 8/14/85 J. Mullen
        !            19:  */
        !            20: 
        !            21: #define K              *1024
        !            22: 
        !            23: struct ether_addr {
        !            24:        u_char ea_addr[6];
        !            25: };
        !            26: 
        !            27: typedef struct ethlist {
        !            28:        int     e_listsize;             /* active addr entries */
        !            29:        struct  ether_addr e_baseaddr;  /* addr lance is working with */
        !            30:        struct  ether_addr e_addrs[16]; /* possible addresses */
        !            31: } ETHLIST;
        !            32: 
        !            33: typedef struct {
        !            34:        u_long  e_xmit_successful;      /* Successful transmissions */
        !            35:        u_long  e_mult_retry;           /* multiple retries on xmit */
        !            36:        u_long  e_one_retry;            /* single retries */
        !            37:        u_long  e_fail_retry;           /* too many retries */
        !            38:        u_long  e_deferrals;            /* xmit delayed 'cuz cable busy */
        !            39:        u_long  e_xmit_buff_err;        /* xmit data chaining failed --
        !            40:                                                   "can't happen" */
        !            41:        u_long  e_silo_underrun;        /* transmit data fetch failed */
        !            42:        u_long  e_late_coll;            /* collision after xmit */
        !            43:        u_long  e_lost_carrier;
        !            44:        u_long  e_babble;               /* xmit length > 1518 */
        !            45:        u_long  e_collision;
        !            46:        u_long  e_xmit_mem_err;
        !            47:        u_long  e_rcv_successful;       /* good receptions */
        !            48:        u_long  e_rcv_missed;           /* no recv buff available */
        !            49:        u_long  e_crc_err;              /* checksum failed */
        !            50:        u_long  e_frame_err;            /* crc error & data length != 0 mod 8 */
        !            51:        u_long  e_rcv_buff_err;         /* rcv data chain failure --
        !            52:                                                   "can't happen" */
        !            53:        u_long  e_silo_overrun;         /* receive data store failed */
        !            54:        u_long  e_rcv_mem_err;
        !            55: } ENPSTAT;
        !            56: 
        !            57: typedef struct RING {
        !            58:        short   r_rdidx;
        !            59:        short   r_wrtidx;
        !            60:        short   r_size;
        !            61:        short   r_pad;
        !            62:        int     r_slot[1];
        !            63: } RING;
        !            64: 
        !            65: typedef struct RING32 {
        !            66:        short   r_rdidx;
        !            67:        short   r_wrtidx;
        !            68:        short   r_size;
        !            69:        short   r_pad;                  /* to make VAXen happy */
        !            70:        int     r_slot[32];
        !            71: } RING32;
        !            72: 
        !            73: /*
        !            74:  * ENP Ram data layout
        !            75:  */
        !            76: 
        !            77: /*
        !            78:  * Note: paged window (4 K) is identity mapped by ENP kernel to provide
        !            79:  * 124 K contiguous RAM (as reflected in RAM_SIZE)
        !            80:  */
        !            81: #define RAM_WINDOW     (128 K)
        !            82: #define IOACCESS_WINDOW (512)
        !            83: #define FIXED_WINDOW   (RAM_WINDOW - IOACCESS_WINDOW)
        !            84: #define RAMROM_SWAP    (4 K)
        !            85: #define RAM_SIZE       (FIXED_WINDOW - RAMROM_SWAP)
        !            86: 
        !            87: #define HOST_RAMSIZE   (48 K)
        !            88: #define ENP_RAMSIZE    (20 K)
        !            89: 
        !            90: typedef        struct iow20 {
        !            91:        char    pad0;   
        !            92:        char    hst2enp_interrupt;
        !            93:        char    pad1[510];
        !            94: } iow20;
        !            95: 
        !            96: struct enpdevice {
        !            97: #ifdef notdef
        !            98:        char    enp_ram_rom[4 K];
        !            99: #endif notdef
        !           100:        union {
        !           101:                char    all_ram[RAM_SIZE];
        !           102:                struct {
        !           103:                        u_int   t_go;
        !           104:                        u_int   t_pstart;
        !           105:                } t;
        !           106:                struct {
        !           107:                        char    nram[RAM_SIZE - (HOST_RAMSIZE + ENP_RAMSIZE)];
        !           108:                        char    hram[HOST_RAMSIZE];
        !           109:                        char    kram[ENP_RAMSIZE];
        !           110:                } u_ram;
        !           111:                struct {
        !           112:                        char    pad7[0x100];    /* starts 0x1100 - 0x2000 */
        !           113:                        short   e_enpstate;     /* 1102 */
        !           114:                        short   e_enpmode;      /* 1104 */
        !           115:                        int     e_enpbase;      /* 1104 */
        !           116:                        int     e_enprun;       /* 1108 */
        !           117:                        u_short e_intrvec;
        !           118:                        u_short e_dummy[3];
        !           119:                        RING32  h_toenp;        /* 110C */
        !           120:                        RING32  h_hostfree;             
        !           121:                        RING32  e_tohost;               
        !           122:                        RING32  e_enpfree;              
        !           123:                        ENPSTAT e_stat;
        !           124:                        ETHLIST e_netaddr;              
        !           125:                } iface;
        !           126:        } enp_u;
        !           127:        iow20   enp_iow;
        !           128: };
        !           129: 
        !           130: #define        enp_ram         enp_u.all_ram
        !           131: #define        enp_nram        enp_u.u_ram.nram
        !           132: #define        enp_hram        enp_u.u_ram.hram
        !           133: #define        enp_kram        enp_u.u_ram.kram
        !           134: #define        enp_go          enp_u.t.t_go
        !           135: #define        enp_prog_start  enp_u.t.t_pstart
        !           136: #define        enp_intrvec     enp_u.iface.e_intrvec
        !           137: #define enp_state      enp_u.iface.e_enpstate
        !           138: #define enp_mode       enp_u.iface.e_enpmode
        !           139: #define enp_base       enp_u.iface.e_enpbase
        !           140: #define enp_enprun     enp_u.iface.e_enprun
        !           141: #define enp_toenp      enp_u.iface.h_toenp
        !           142: #define enp_hostfree   enp_u.iface.h_hostfree
        !           143: #define enp_tohost     enp_u.iface.e_tohost
        !           144: #define enp_enpfree    enp_u.iface.e_enpfree
        !           145: #define enp_freembuf   enp_u.iface.h_freembuf
        !           146: #define enp_stat       enp_u.iface.e_stat
        !           147: #define enp_addr       enp_u.iface.e_netaddr
        !           148: 
        !           149: #define ENPVAL         0xff    /* enp_iow.hst2enp_interrupt poke value */
        !           150: #define RESETVAL       0x00    /* enp_iow.enp2hst_clear_intr poke value */
        !           151: 
        !           152: #define INTR_ENP(addr)         (addr->enp_iow.hst2enp_interrupt = ENPVAL)
        !           153: 
        !           154: #if ENP == 30
        !           155: #define ACK_ENP_INTR(addr)     (addr->enp_iow.enp2hst_clear_intr = RESETVAL)
        !           156: #define IS_ENP_INTR(addr)      (addr->enp_iow.enp2hst_clear_intr&0x80)
        !           157: #endif
        !           158: 
        !           159: #ifdef notdef
        !           160: #define RESET_ENP(addr)                (addr->enp_iow.hst2enp_reset = 01)
        !           161: #else
        !           162: #ifdef lint
        !           163: #define RESET_ENP(addr)                ((addr) = (addr))
        !           164: #else
        !           165: #define RESET_ENP(addr)
        !           166: #endif lint
        !           167: #endif notdef
        !           168: 
        !           169: #ifdef tahoe
        !           170: #define ENP_GO(addr,start) { \
        !           171:        int v = start; \
        !           172:        enpcopy((u_char *)&v, (u_char *)&addr->enp_prog_start, sizeof(v) ); \
        !           173:        v = 0x80800000; \
        !           174:        enpcopy((u_char *)&v, (u_char *)&addr->enp_go, sizeof(v) ); \
        !           175: }
        !           176: #else
        !           177: #define ENP_GO(addr,start,intvec ) { \
        !           178:        addr->enp_prog_start = (u_int)(start); \
        !           179:        addr->enp_intrvec = (u_short) intvec; \
        !           180:        addr->enp_go = 0x80800000; \
        !           181: }
        !           182: #endif tahoe
        !           183: 
        !           184: /*
        !           185:  * State bits
        !           186:  */
        !           187: #define S_ENPRESET     01              /* enp is in reset state */
        !           188: #define S_ENPRUN       02              /* enp is in run state */
        !           189: 
        !           190: /*
        !           191:  * Mode bits
        !           192:  */
        !           193: #define E_SWAP16       0x1             /* swap two octets within 16 */
        !           194: #define E_SWAP32       0x2             /* swap 16s within 32 */
        !           195: #define E_SWAPRD       0x4             /* swap on read */
        !           196: #define E_SWAPWRT      0x8             /* swap on write */
        !           197: #define E_DMA          0x10            /* enp does data moving */
        !           198: 
        !           199: #define E_EXAM_LIST    0x80000000      /* enp should examine addrlist */
        !           200: #define E_ADDR_SUPP    0x40000000      /* enp should use supplied addr */
        !           201: 
        !           202: /*
        !           203:  * Download ioctl definitions
        !           204:  */
        !           205: #define ENPIOGO                _IO('S',1)              /* start the enp */
        !           206: #define ENPIORESET     _IO('S',2)              /* reset the enp */
        !           207: 
        !           208: /*
        !           209:  * The ENP Data Buffer Structure
        !           210:  */
        !           211: typedef struct BCB {
        !           212:        struct  BCB *b_link;
        !           213:        short    b_stat;
        !           214:        short    b_len;
        !           215:        u_char  *b_addr;
        !           216:        short    b_msglen;
        !           217:        short    b_reserved;
        !           218: } BCB;

unix.superglobalmegacorp.com

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