# 2.11BSD#431 - /usr/src/sys/vaxif/if_uba.h

##### Macros

    IFRW_W            X
    IF_MAXNUBAMR      X
    if_rubaget        X
    if_ubainit        X
    if_wubaput        X
    ifu_flags         X
    ifu_hlen          X
    ifu_uba           X
    ifu_uban          X
    ifu_w             X
    ifu_xtofree       X
    ifw_addr          X
    ifw_bdp           X
    ifw_flags         X
    ifw_info          X
    ifw_mr            X
    ifw_proto         X

##### struct's

    ifrw              X
    ifuba             X
    ifubinfo          X
    ifxmt             X

       1: /*
       2:  * Copyright (c) 1982, 1986 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  *
       6:  *	@(#)if_uba.h	7.1 (Berkeley) 6/5/86
       7:  */
       8:
       9: /*
      10:  * Structure and routine definitions
      11:  * for UNIBUS network interfaces.
      12:  */
      13:
      14: #define IF_MAXNUBAMR    10
      15: /*
      16:  * Each interface has structures giving information
      17:  * about UNIBUS resources held by the interface
      18:  * for each send and receive buffer.
      19:  *
      20:  * We hold IF_NUBAMR map registers for datagram data, starting
      21:  * at ifr_mr.  Map register ifr_mr[-1] maps the local network header
      22:  * ending on the page boundary.  Bdp's are reserved for read and for
      23:  * write, given by ifr_bdp.  The prototype of the map register for
      24:  * read and for write is saved in ifr_proto.
      25:  *
      26:  * When write transfers are not full pages on page boundaries we just
      27:  * copy the data into the pages mapped on the UNIBUS and start the
      28:  * transfer.  If a write transfer is of a (1024 byte) page on a page
      29:  * boundary, we swap in UNIBUS pte's to reference the pages, and then
      30:  * remap the initial pages (from ifu_wmap) when the transfer completes.
      31:  *
      32:  * When read transfers give whole pages of data to be input, we
      33:  * allocate page frames from a network page list and trade them
      34:  * with the pages already containing the data, mapping the allocated
      35:  * pages to replace the input pages for the next UNIBUS data input.
      36:  */
      37:
      38: /*
      39:  * Information per interface.
      40:  */
      41: struct  ifubinfo {
      42:     short   iff_uban;           /* uba number */
      43:     short   iff_hlen;           /* local net header length */
      44:     struct  uba_regs *iff_uba;      /* uba regs, in vm */
      45:     short   iff_flags;          /* used during uballoc's */
      46: };
      47:
      48: /*
      49:  * Information per buffer.
      50:  */
      51: struct ifrw {
      52:     caddr_t ifrw_addr;          /* virt addr of header */
      53:     short   ifrw_bdp;           /* unibus bdp */
      54:     short   ifrw_flags;         /* type, etc. */
      55: #define IFRW_W  0x01                /* is a transmit buffer */
      56:     int ifrw_info;          /* value from ubaalloc */
      57:     int ifrw_proto;         /* map register prototype */
      58:     struct  pte *ifrw_mr;           /* base of map registers */
      59: };
      60:
      61: /*
      62:  * Information per transmit buffer, including the above.
      63:  */
      64: struct ifxmt {
      65:     struct  ifrw ifrw;
      66:     caddr_t ifw_base;           /* virt addr of buffer */
      67:     struct  pte ifw_wmap[IF_MAXNUBAMR]; /* base pages for output */
      68:     struct  mbuf *ifw_xtofree;      /* pages being dma'd out */
      69:     short   ifw_xswapd;         /* mask of clusters swapped */
      70:     short   ifw_nmr;            /* number of entries in wmap */
      71: };
      72: #define ifw_addr    ifrw.ifrw_addr
      73: #define ifw_bdp     ifrw.ifrw_bdp
      74: #define ifw_flags   ifrw.ifrw_flags
      75: #define ifw_info    ifrw.ifrw_info
      76: #define ifw_proto   ifrw.ifrw_proto
      77: #define ifw_mr      ifrw.ifrw_mr
      78:
      79: /*
      80:  * Most interfaces have a single receive and a single transmit buffer,
      81:  * and use struct ifuba to store all of the unibus information.
      82:  */
      83: struct ifuba {
      84:     struct  ifubinfo ifu_info;
      85:     struct  ifrw ifu_r;
      86:     struct  ifxmt ifu_xmt;
      87: };
      88:
      89: #define ifu_uban    ifu_info.iff_uban
      90: #define ifu_hlen    ifu_info.iff_hlen
      91: #define ifu_uba     ifu_info.iff_uba
      92: #define ifu_flags   ifu_info.iff_flags
      93: #define ifu_w       ifu_xmt.ifrw
      94: #define ifu_xtofree ifu_xmt.ifw_xtofree
      95:
      96: #ifdef  KERNEL
      97: #define if_ubainit(ifuba, uban, hlen, nmr) \
      98:         if_ubaminit(&(ifuba)->ifu_info, uban, hlen, nmr, \
      99:             &(ifuba)->ifu_r, 1, &(ifuba)->ifu_xmt, 1)
     100: #define if_rubaget(ifu, totlen, off0, ifp) \
     101:         if_ubaget(&(ifu)->ifu_info, &(ifu)->ifu_r, totlen, off0, ifp)
     102: #define if_wubaput(ifu, m) \
     103:         if_ubaput(&(ifu)->ifu_info, &(ifu)->ifu_xmt, m)
     104: struct  mbuf *if_ubaget();
     105: #endif

#### Defined struct's

ifrw defined in line 51; used 4 times

- in line 65(2), 85(2)

ifuba defined in line 83; never used
ifubinfo defined in line 41; used 2 times

- in line 84(2)

ifxmt defined in line 64; used 2 times

- in line 86(2)

#### Defined macros

IFRW_W defined in line 55; never used
IF_MAXNUBAMR defined in line 14; used 1 times

- in line 67

if_rubaget defined in line 100; never used
if_ubainit defined in line 97; never used
if_wubaput defined in line 102; never used
ifu_flags defined in line 92; never used
ifu_hlen defined in line 90; never used
ifu_uba defined in line 91; never used
ifu_uban defined in line 89; never used
ifu_w defined in line 93; never used
ifu_xtofree defined in line 94; never used
ifw_addr defined in line 72; never used
ifw_bdp defined in line 73; never used
ifw_flags defined in line 74; never used
ifw_info defined in line 75; never used
ifw_mr defined in line 77; never used
ifw_proto defined in line 76; never used

Last modified: 1986-06-05 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 328 |