Annotation of researchv10dc/lsys/sys/debna.h, revision 1.1.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.