BSD 4_3_Tahoe release
[unix-history] / usr / src / sys / vaxif / if_dmc.h
index 4129c67..515efa0 100644 (file)
@@ -1,30 +1,49 @@
-/*     if_dmc.h        6.1     83/07/29        */
+/*
+ * Copyright (c) 1982, 1986 Regents of the University of California.
+ * All rights reserved.  The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ *
+ *     @(#)if_dmc.h    7.3 (Berkeley) 5/26/88
+ */
 
 /*
  * DMC-11 Interface
  */
 
 struct dmcdevice {
 
 /*
  * DMC-11 Interface
  */
 
 struct dmcdevice {
-       union {
-               char    b[8];
-               short   w[4];
-       } un;
+        char    bsel0;
+       char    bsel1;
+       char    bsel2;
+       char    bsel3;
+       short   sel4;
+       short   sel6;
+};
+
+/*
+ * dmc software packet encapsulation.  This allows the dmc
+ * link to be multiplexed among several protocols.
+ * The first eight bytes of the dmc header are garbage,
+ * since on a vax the uba has been known to mung these
+ * bytes.  The next two bytes encapsulate packet type.
+ */
+struct dmc_header {
+       char    dmc_buf[8];     /* space for uba on vax */
+       short   dmc_type;       /* encapsulate packet type */
 };
 
 };
 
-#define        bsel0   un.b[0]
-#define        bsel1   un.b[1]
-#define        bsel2   un.b[2]
-#define        bsel3   un.b[3]
-#define        bsel4   un.b[4]
-#define        bsel5   un.b[5]
-#define        bsel6   un.b[6]
-#define        bsel7   un.b[7]
-#define        sel0    un.w[0]
-#define        sel2    un.w[1]
-#define        sel4    un.w[2]
-#define        sel6    un.w[3]
+/* packet types */
+#define        DMC_IPTYPE      1
+#define        DMC_TRAILER     2
+#define        DMC_NTRAILER    16
 
 
-#define        DMCMTU  (2048)
+/*
+ * DMCMTU includes space for data (1024) + 
+ * protocol header (256) + trailer descriptor (4).
+ * The software link encapsulation header (dmc_header)
+ * is handled separately.
+       #define DMCMTU  1284
+ */
+#define DMCMTU  1500
 
 #define        RDYSCAN 16      /* loop delay for RDYI after RQI */
 
 
 #define        RDYSCAN 16      /* loop delay for RDYI after RQI */
 
@@ -38,10 +57,12 @@ struct dmcdevice {
 #define        DMC_RQI         0040            /* port request bit */
 #define        DMC_IEI         0100            /* enable input interrupts */
 #define        DMC_RDYI        0200            /* port ready */
 #define        DMC_RQI         0040            /* port request bit */
 #define        DMC_IEI         0100            /* enable input interrupts */
 #define        DMC_RDYI        0200            /* port ready */
+#define        DMC0BITS        "\10\10RDI\7IEI\6RQI"
 
 /* defines for bsel1 */
 #define        DMC_MCLR        0100            /* DMC11 Master Clear */
 #define        DMC_RUN         0200            /* clock running */
 
 /* defines for bsel1 */
 #define        DMC_MCLR        0100            /* DMC11 Master Clear */
 #define        DMC_RUN         0200            /* clock running */
+#define        DMC1BITS        "\10\10RUN\7MCLR"
 
 /* defines for bsel2 */
 #define        DMC_BACCO       0
 
 /* defines for bsel2 */
 #define        DMC_BACCO       0
@@ -50,6 +71,7 @@ struct dmcdevice {
 #define        DMC_OUR         4               /* read block */
 #define        DMC_IEO         0100            /* enable output interrupts */
 #define        DMC_RDYO        0200            /* port available */
 #define        DMC_OUR         4               /* read block */
 #define        DMC_IEO         0100            /* enable output interrupts */
 #define        DMC_RDYO        0200            /* port available */
+#define        DMC2BITS        "\10\10RDO\7IEO"
 
 /* defines for CNTLI mode */
 #define        DMC_HDPLX       02000           /* half duplex DDCMP operation */
 
 /* defines for CNTLI mode */
 #define        DMC_HDPLX       02000           /* half duplex DDCMP operation */
@@ -63,4 +85,17 @@ struct dmcdevice {
 
 /* defines for CNTLO */
 #define        DMC_CNTMASK     01777
 
 /* defines for CNTLO */
 #define        DMC_CNTMASK     01777
-#define        DMC_FATAL       01620
+
+#define        DMC_DATACK      01
+#define        DMC_TIMEOUT     02
+#define        DMC_NOBUFS      04
+#define        DMC_MAINTREC    010
+#define        DMC_LOSTDATA    020
+#define        DMC_DISCONN     0100
+#define        DMC_START       0200
+#define        DMC_NEXMEM      0400
+#define        DMC_ERROR       01000
+
+#define        DMC_FATAL (DMC_ERROR|DMC_NEXMEM|DMC_START|DMC_LOSTDATA|DMC_MAINTREC)
+#define        CNTLO_BITS      \
+   "\10\12ERROR\11NEXMEM\10START\7DISC\5LSTDATA\4MAINT\3NOBUF\2TIMEO\1DATACK"