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

##### Variables

    hy_state_names    X

##### Macros

    CLEARSENT         X
    ENDOPSENT         X
    HYE_BINS          X
    HYE_MAX           X
    HYE_SIZE          X
    HYGETELOG         X
    HYGETLOG          X
    HYGETROUTE        X
    HYLINK_IP         X
    HYL_CANCEL        X
    HYL_CATCHN        X
    HYL_CMD           X
    HYL_CONTINUOUS    X
    HYL_DISABLED      X
    HYL_INT           X
    HYL_IOCTL         X
    HYL_NOP           X
    HYL_RECV          X
    HYL_RESET         X
    HYL_SIZE          X
    HYL_STATISTICS    X
    HYL_STATUS        X
    HYL_UP            X
    HYL_XMIT          X
    HYM_SWLEN         X
    HYRHASH           X
    HYRSIZE           X
    HYR_DIR           X
    HYR_GATE          X
    HYR_INUSE         X
    HYR_LOOP          X
    HYR_RLOOP         X
    HYSETLOG          X
    HYSETROUTE        X
    H_ASSOC           X
    H_LOOPBK          X
    H_RLOOPBK         X
    H_RTRUNKS         X
    H_XTRUNKS         X
    IDLE              X
    MARKPORT          X
    PORTNUM           X
    RECVDATASENT      X
    RECVSENT          X
    RQ_ENDOP          X
    RQ_MARKDOWN       X
    RQ_MARKUP         X
    RQ_REISSUE        X
    RQ_STATISTICS     X
    RQ_STATUS         X
    RQ_XASSOC         X
    RSTATSENT         X
    STARTUP           X
    STATSENT          X
    WAITING           X
    XMITDATASENT      X
    XMITSENT          X
    hyh_from          X
    hyh_from_adapter  X
    hyh_from_port     X
    hyh_to            X
    hyh_to_adapter    X
    hyh_to_port       X
    hym_access        X
    hym_ctl           X
    hym_from          X
    hym_from_adapter  X
    hym_from_port     X
    hym_mplen         X
    hym_param         X
    hym_to            X
    hym_to_adapter    X
    hym_to_port       X
    hym_type          X
    hyr_access        X
    hyr_ctl           X
    hyr_dst           X
    hyr_egate         X
    hyr_nextgate      X
    hyr_pgate         X

##### struct's

    hy_hdr            X
    hy_log            X
    hy_route          X
    hy_stat           X
    hy_status         X
    hylsetget         X
    hym_hdr           X
    hyr_hash          X
    hyrsetget         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_hy.h	7.1 (Berkeley) 6/5/86
       7:  */
       8:
       9: /*
      10:  * 4.2 BSD Unix Kernel - Vax Network Interface Support
      11:  *
      12:  * $Header: if_hy.h,v 10.0 84/06/30 19:51:21 steveg Stable $
      13:  * $Locker:  $
      14:  *
      15:  * Modifications from Berkeley 4.2 BSD
      16:  * Copyright (c) 1983, Tektronix Inc.
      17:  * All Rights Reserved
      18:  *
      19:  *
      20:  * $Log:	if_hy.h,v $
      21:  *	Revision 10.0  84/06/30  19:51:21  steveg
      22:  *	Big Build
      23:  *
      24:  *	Revision 3.13  84/05/30  19:40:58  steveg
      25:  *	update hy_stat to reflect new microcode
      26:  *
      27:  *	Revision 3.12  84/05/30  19:06:57  steveg
      28:  *	move driver state number definition here from if_hy.c
      29:  *
      30:  *	Revision 3.11  84/05/30  18:56:15  steveg
      31:  *	add definition of HYE_MAX and HYE_SIZE
      32:  *
      33:  *	Revision 3.10  84/05/30  17:14:04  steveg
      34:  *	add hyl_filter
      35:  *
      36:  *	Revision 3.9  84/05/30  13:45:24  steveg
      37:  *	rework logging
      38:  *
      39:  *	Revision 3.8  84/05/04  05:18:59  steveg
      40:  *	hyr_key now a u_long
      41:  *
      42:  *	Revision 3.7  84/05/01  22:45:20  steveg
      43:  *	add H_RLOOPBK for A710 remote end loopback command
      44:  *
      45:  *
      46:  */
      47:
      48:
      49: /*
      50:  * Structure of a HYPERchannel adapter header
      51:  */
      52: struct  hy_hdr {
      53:     short   hyh_ctl;        /* control */
      54:     short   hyh_access;     /* access code */
      55:     union {
      56:         short   hyh_addr;
      57:         char    hyh_baddr[2];
      58:     } hyh_uto, hyh_ufrom;       /* to/from address */
      59:     short   hyh_param;      /* parameter word */
      60:     short   hyh_type;       /* record type */
      61: };
      62:
      63:
      64: #define hyh_to      hyh_uto.hyh_addr
      65: #define hyh_to_port hyh_uto.hyh_baddr[1]
      66: #define hyh_to_adapter  hyh_uto.hyh_baddr[0]
      67:
      68: #define hyh_from    hyh_ufrom.hyh_addr
      69: #define hyh_from_port   hyh_ufrom.hyh_baddr[1]
      70: #define hyh_from_adapter hyh_ufrom.hyh_baddr[0]
      71:
      72: /*
      73:  * Structure of a HYPERchannel message header (from software)
      74:  */
      75: struct  hym_hdr {
      76:     struct {
      77:         short   hymd_mplen; /* message proper len, if associated data */
      78:     } hym_d;
      79:     struct  hy_hdr hym_h;   /* hardware header, MUST BE LAST */
      80: };
      81:
      82: #define hym_mplen   hym_d.hymd_mplen
      83:
      84: #define hym_ctl     hym_h.hyh_ctl
      85: #define hym_access  hym_h.hyh_access
      86: #define hym_param   hym_h.hyh_param
      87: #define hym_type    hym_h.hyh_type
      88:
      89: #define hym_to      hym_h.hyh_to
      90: #define hym_to_port hym_h.hyh_to_port
      91: #define hym_to_adapter  hym_h.hyh_to_adapter
      92:
      93: #define hym_from    hym_h.hyh_from
      94: #define hym_from_port   hym_h.hyh_from_port
      95: #define hym_from_adapter hym_h.hyh_from_adapter
      96:
      97: #define HYM_SWLEN (sizeof(struct hym_hdr) - sizeof(struct hy_hdr))
      98:
      99: /*
     100:  * HYPERchannel header word control bits
     101:  */
     102: #define H_XTRUNKS   0x00F0  /* transmit trunks */
     103: #define H_RTRUNKS   0x000F  /* remote trunks to transmit on for loopback */
     104: #define H_ASSOC     0x0100  /* has associated data */
     105: #define H_LOOPBK    0x00FF  /* loopback command */
     106: #define H_RLOOPBK   0x008F  /* A710 remote loopback command */
     107:
     108: /*
     109:  * Hyperchannel record types
     110:  */
     111: #define HYLINK_IP   0   /* Internet Protocol Packet */
     112:
     113: /*
     114:  * Routing database
     115:  */
     116: #define HYRSIZE  37 /* max number of adapters in routing tables */
     117:
     118: struct hy_route {
     119:     time_t hyr_lasttime;        /* last update time */
     120:     u_char hyr_gateway[256];
     121:     struct hyr_hash {
     122:         u_long  hyr_key;    /* desired address */
     123:         u_short hyr_flags;  /* status flags - see below */
     124:         u_short hyr_size;   /* number of entries */
     125:         union {
     126:             /*
     127: 			 * direct entry (can get there directly)
     128: 			 */
     129:             struct {
     130:                 u_short hyru_dst;   /* adapter number & port */
     131:                 u_short hyru_ctl;   /* trunks to try */
     132:                 u_short hyru_access;    /* access code (mostly unused) */
     133:             } hyr_d;
     134: #define hyr_dst     hyr_u.hyr_d.hyru_dst
     135: #define hyr_ctl     hyr_u.hyr_d.hyru_ctl
     136: #define hyr_access  hyr_u.hyr_d.hyru_access
     137:             /*
     138: 			 * indirect entry (one or more hops required)
     139: 			 */
     140:             struct {
     141:                 u_char hyru_pgate;  /* 1st gateway slot */
     142:                 u_char hyru_egate;  /* # gateways */
     143:                 u_char hyru_nextgate;   /* gateway to use next */
     144:             } hyr_i;
     145: #define hyr_pgate   hyr_u.hyr_i.hyru_pgate
     146: #define hyr_egate   hyr_u.hyr_i.hyru_egate
     147: #define hyr_nextgate    hyr_u.hyr_i.hyru_nextgate
     148:         } hyr_u;
     149:     } hyr_hash[HYRSIZE];
     150: };
     151:
     152: /*
     153:  * routing table set/get structure
     154:  *
     155:  * used to just pass the entire routing table through, but 4.2 ioctls
     156:  * limit the data part of an ioctl to 128 bytes or so and use the
     157:  * interface name to get things sent the right place.
     158:  * see ../net/if.h for additional details.
     159:  */
     160: struct hyrsetget {
     161:     char    hyrsg_name[IFNAMSIZ];   /* if name, e.g. "hy0" */
     162:     struct hy_route *hyrsg_ptr; /* pointer to routing table */
     163:     unsigned    hyrsg_len;  /* size of routing table provided */
     164: };
     165:
     166: #define HYR_INUSE   0x01    /* entry in use */
     167: #define HYR_DIR     0x02    /* direct entry */
     168: #define HYR_GATE    0x04    /* gateway entry */
     169: #define HYR_LOOP    0x08    /* hardware loopback entry */
     170: #define HYR_RLOOP   0x10    /* remote adapter hardware loopback entry */
     171:
     172: #define HYRHASH(x) (((x) ^ ((x) >> 16)) % HYRSIZE)
     173:
     174: #define HYSETROUTE  _IOW(i, 0x80, struct hyrsetget)
     175: #define HYGETROUTE  _IOW(i, 0x81, struct hyrsetget)
     176:
     177: struct  hylsetget {
     178:     char    hylsg_name[IFNAMSIZ];   /* if name, e.g. "hy0" */
     179:     int hylsg_cmd;      /* logging command */
     180:     caddr_t hylsg_ptr;      /* pointer to table */
     181:     u_long  hylsg_len;      /* size of table provided */
     182: };
     183:
     184: #define HYSETLOG    _IOW(i, 0x82, struct hylsetget)
     185: #define HYGETLOG    _IOW(i, 0x83, struct hylsetget)
     186: #define HYGETELOG   _IOW(i, 0x84, struct hylsetget)
     187:
     188: /*
     189:  * Structure of Statistics Record (counters)
     190:  */
     191: struct  hy_stat {
     192:     u_char  hyc_df0[3];     /* # data frames trunk 0 */
     193:     u_char  hyc_df1[3];     /* # data frames trunk 1 */
     194:     u_char  hyc_df2[3];     /* # data frames trunk 2 */
     195:     u_char  hyc_df3[3];     /* # data frames trunk 3 */
     196:     u_char  hyc_cancel[2];      /* # cancel operations */
     197:     u_char  hyc_abort[2];       /* # aborts */
     198:     u_char  hyc_ret0[3];        /* # retransmissions trunk 0 */
     199:     u_char  hyc_ret1[3];        /* # retransmissions trunk 1 */
     200:     u_char  hyc_ret2[3];        /* # retransmissions trunk 2 */
     201:     u_char  hyc_ret3[3];        /* # retransmissions trunk 3 */
     202:     u_char  hyc_atype[3];       /* adapter type and revision level */
     203:     u_char  hyc_uaddr;      /* adapter unit number */
     204: };
     205:
     206: /*
     207:  * Structure of the Status Record
     208:  */
     209: struct hy_status {
     210:     u_char  hys_gen_status;     /* general status byte */
     211:     u_char  hys_last_fcn;       /* last function code issued */
     212:     u_char  hys_resp_trunk;     /* trunk response byte */
     213:     u_char  hys_status_trunk;   /* trunk status byte */
     214:     u_char  hys_recd_resp;      /* recieved response byte */
     215:     u_char  hys_error;      /* error code */
     216:     u_char  hys_caddr;      /* compressed addr of 1st msg on chain */
     217:     u_char  hys_pad;        /* not used */
     218: };
     219:
     220: /*
     221:  * Get port number from status record
     222:  */
     223: #define PORTNUM(p)  (((p)->hys_gen_status >> 6) & 0x03)
     224:
     225: #define HYL_SIZE 16*1024
     226: struct hy_log {
     227:     struct  hy_log *hyl_self;
     228:     u_char  hyl_enable;     /* logging enabled? */
     229:     u_char  hyl_onerr;      /* state to enter on error */
     230:     u_short hyl_wait;       /* number of bytes till next wakeup */
     231:     u_short hyl_count;      /* number of samples till stop */
     232:     u_short hyl_icount;     /* initial value of hyl_count */
     233:     u_long  hyl_filter;     /* log items with specific bits set */
     234:     u_char  *hyl_eptr;      /* &hy_log.hyl_buf[HYL_SIZE] */
     235:     u_char  *hyl_ptr;       /* pointer into hyl_buf */
     236:     u_char  hyl_buf[HYL_SIZE];  /* log buffer space */
     237: };
     238:
     239: #define HYL_NOP     0
     240: #define HYL_UP      1   /* markup */
     241: #define HYL_STATUS  2   /* status results (struct hy_status) */
     242: #define HYL_STATISTICS  3   /* statistics (struct hy_stat) */
     243: #define HYL_XMIT    4   /* packed being send (struct hym_hdr) */
     244: #define HYL_RECV    5   /* recieved pkt (short len; struct hym_hdr) */
     245: #define HYL_CMD     6   /* cmd issued (uchar cmd, state; short count) */
     246: #define HYL_INT     7   /* interrupt (short csr, wcr) */
     247: #define HYL_CANCEL  8   /* cancel transmit attempt */
     248: #define HYL_RESET   9   /* hyinit or unibus reset */
     249: #define HYL_IOCTL   10  /* hyioctl */
     250:
     251: #define HYL_DISABLED    0   /* logging disabled */
     252: #define HYL_CONTINUOUS  1   /* continuous logging */
     253: #define HYL_CATCHN  2   /* hyl_count transactions being captured */
     254:
     255: /*
     256:  * error code histograms
     257:  */
     258: #define HYE_MAX     0x18        /* maximum adapter error code */
     259: #define HYE_BINS    4       /* number of command bins */
     260: #define HYE_SIZE  (HYE_MAX+1)*HYE_BINS  /* size of histogram buffer */
     261:
     262: /*
     263:  * Requests for service (in order by descending priority).
     264:  */
     265: #define RQ_ENDOP    001 /* end the last adapter function */
     266: #define RQ_REISSUE  002 /* reissue previous cmd after status */
     267: #define RQ_STATUS   004 /* get the status of the adapter */
     268: #define RQ_STATISTICS   010 /* get the statistics of the adapter */
     269: #define RQ_MARKDOWN 020 /* mark this adapter port down */
     270: #define RQ_MARKUP   040 /* mark this interface up */
     271:
     272: #define RQ_XASSOC   0100    /* associated data to transmit */
     273:
     274: /*
     275:  * Driver states.
     276:  */
     277: #define STARTUP     0   /* initial state (before fully there) */
     278: #define IDLE        1   /* idle state */
     279: #define STATSENT    2   /* status cmd sent to adapter */
     280: #define ENDOPSENT   3   /* end operation cmd sent */
     281: #define RECVSENT    4   /* input message cmd sent */
     282: #define RECVDATASENT    5   /* input data cmd sent */
     283: #define XMITSENT    6   /* transmit message cmd sent */
     284: #define XMITDATASENT    7   /* transmit data cmd sent */
     285: #define WAITING     8   /* waiting for messages */
     286: #define CLEARSENT   9   /* clear wait for message cmd sent */
     287: #define MARKPORT    10  /* mark this host's adapter port down issued */
     288: #define RSTATSENT   11  /* read statistics cmd sent to adapter */
     289:
     290: #ifdef HYLOG
     291: char *hy_state_names[] = {
     292:     "Startup",
     293:     "Idle",
     294:     "Status Sent",
     295:     "End op Sent",
     296:     "Recieve Message Proper Sent",
     297:     "Recieve Data Sent",
     298:     "Transmit Message Proper Sent",
     299:     "Transmit Data Sent",
     300:     "Wait for Message Sent",
     301:     "Clear Wait for Message Sent",
     302:     "Mark Port Down Sent",
     303:     "Read Statistics Sent"
     304: };
     305: #endif

#### Defined variables

hy_state_names defined in line 291; never used

#### Defined struct's

hy_hdr defined in line 52; used 2 times

- in line 79(2)

hy_log defined in line 226; used 2 times

- in line 227(2)

hy_route defined in line 118; used 2 times

- in line 162(2)

hy_stat defined in line 191; never used
hy_status defined in line 209; never used
hylsetget defined in line 177; never used
hym_hdr defined in line 75; never used
hyr_hash defined in line 121; never used
hyrsetget defined in line 160; never used

#### Defined macros

CLEARSENT defined in line 286; never used
ENDOPSENT defined in line 280; never used
HYE_BINS defined in line 259; used 1 times

- in line 260

HYE_MAX defined in line 258; used 1 times

- in line 260

HYE_SIZE defined in line 260; never used
HYGETELOG defined in line 186; never used
HYGETLOG defined in line 185; never used
HYGETROUTE defined in line 175; never used
HYLINK_IP defined in line 111; never used
HYL_CANCEL defined in line 247; never used
HYL_CATCHN defined in line 253; never used
HYL_CMD defined in line 245; never used
HYL_CONTINUOUS defined in line 252; never used
HYL_DISABLED defined in line 251; never used
HYL_INT defined in line 246; never used
HYL_IOCTL defined in line 249; never used
HYL_NOP defined in line 239; never used
HYL_RECV defined in line 244; never used
HYL_RESET defined in line 248; never used
HYL_SIZE defined in line 225; used 1 times

- in line 236

HYL_STATISTICS defined in line 242; never used
HYL_STATUS defined in line 241; never used
HYL_UP defined in line 240; never used
HYL_XMIT defined in line 243; never used
HYM_SWLEN defined in line 97; never used
HYRHASH defined in line 172; never used
HYRSIZE defined in line 116; used 2 times

- in line 149, 172

HYR_DIR defined in line 167; never used
HYR_GATE defined in line 168; never used
HYR_INUSE defined in line 166; never used
HYR_LOOP defined in line 169; never used
HYR_RLOOP defined in line 170; never used
HYSETLOG defined in line 184; never used
HYSETROUTE defined in line 174; never used
H_ASSOC defined in line 104; never used
H_LOOPBK defined in line 105; never used
H_RLOOPBK defined in line 106; never used
H_RTRUNKS defined in line 103; never used
H_XTRUNKS defined in line 102; never used
IDLE defined in line 278; never used
MARKPORT defined in line 287; never used
PORTNUM defined in line 223; never used
RECVDATASENT defined in line 282; never used
RECVSENT defined in line 281; never used
RQ_ENDOP defined in line 265; never used
RQ_MARKDOWN defined in line 269; never used
RQ_MARKUP defined in line 270; never used
RQ_REISSUE defined in line 266; never used
RQ_STATISTICS defined in line 268; never used
RQ_STATUS defined in line 267; never used
RQ_XASSOC defined in line 272; never used
RSTATSENT defined in line 288; never used
STARTUP defined in line 277; never used
STATSENT defined in line 279; never used
WAITING defined in line 285; never used
XMITDATASENT defined in line 284; never used
XMITSENT defined in line 283; never used
hyh_from defined in line 68; used 1 times

- in line 93

hyh_from_adapter defined in line 70; used 1 times

- in line 95

hyh_from_port defined in line 69; used 1 times

- in line 94

hyh_to defined in line 64; used 1 times

- in line 89

hyh_to_adapter defined in line 66; used 1 times

- in line 91

hyh_to_port defined in line 65; used 1 times

- in line 90

hym_access defined in line 85; never used
hym_ctl defined in line 84; never used
hym_from defined in line 93; never used
hym_from_adapter defined in line 95; never used
hym_from_port defined in line 94; never used
hym_mplen defined in line 82; never used
hym_param defined in line 86; never used
hym_to defined in line 89; never used
hym_to_adapter defined in line 91; never used
hym_to_port defined in line 90; never used
hym_type defined in line 87; never used
hyr_access defined in line 136; never used
hyr_ctl defined in line 135; never used
hyr_dst defined in line 134; never used
hyr_egate defined in line 146; never used
hyr_nextgate defined in line 147; never used
hyr_pgate defined in line 145; never used

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