Annotation of researchv10dc/lsys/sys/debna.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * definitions for the DEBNA driver
        !             3:  *
        !             4:  * each hardware device has eight channels;
        !             5:  * each channel dedicated to a particular Ethernet protocol
        !             6:  * one bnachan per channel
        !             7:  */
        !             8: #define        BNACHAN 8
        !             9: 
        !            10: struct bnachan {
        !            11:        short proto;    /* our protocol */
        !            12:        char needst;    /* channel needs stptdb */
        !            13:        unsigned char dcnt;     /* number of queued packets */
        !            14:        char unit;      /* which controller is ours */
        !            15:        struct queue *rq;
        !            16: };
        !            17: 
        !            18: /*
        !            19:  * one bnactl per controller
        !            20:  */
        !            21: struct bnactl {
        !            22:        struct bvp bvp;         /* general port stuff */
        !            23:        struct dgi *xfree;      /* free xmit buffers */
        !            24:        char lastx;             /* last channel transmitted -- fairness */
        !            25:        char needst;            /* at least one channel needs STPTDB */
        !            26:        char myaddr[6];         /* 6 slightly magic */
        !            27:        struct bnachan chan[BNACHAN];
        !            28: };
        !            29: 
        !            30: /*
        !            31:  * our buffers
        !            32:  * BNASLOP is there to allow two kinds of alignment in memory:
        !            33:  * 1.  interlocked queue instructions require quadword-aligned headers.
        !            34:  * 2.  a bug in the DEBNA causes it to choke if a BVP message or datagram
        !            35:  * header crosses a page boundary; the longest such header is 28 bytes
        !            36:  * it is assumed that a header misalignment can happen only once per
        !            37:  * set of buffers, because the numbers happen to make it true
        !            38:  * it would be easier, but more wasteful of memory, to make BNABSIZE
        !            39:  * an even multiple of the page size
        !            40:  * we have to allow slop and fix it up at runtime because the
        !            41:  * VAX loader guarantees no more than longword alignment
        !            42:  */
        !            43: #define        BNABSIZE 1600   /* must be multiple of eight -- quad-align */
        !            44: #define        BNASLOP (8+28)
        !            45: #define        BNAXBUF 8
        !            46: #define        BNARBUF 8
        !            47: 
        !            48: struct bnabuf {
        !            49:        char rbuf[BNARBUF*BNABSIZE + BNASLOP];
        !            50:        char xbuf[BNAXBUF*BNABSIZE + BNASLOP];
        !            51: };

unix.superglobalmegacorp.com

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