man(1) Manual page archive


     DK(4)                                                       DK(4)

     NAME
          dk, dkp_ld, unixp_ld, cmc_ld - Datakit interface and
          protocols

     SYNOPSIS
          #include <sys/dkio.h>

     DESCRIPTION
          These device drivers and line disciplines are used to con-
          nect to a Datakit network.  Normally the programs in
          dkmgr(8) do all the work.

          Several combinations of hardware and software may be used to
          connect a system to Datakit:

               The dk driver works with a DR11-C or DRV11-J connected
               through an adapter box to a Datakit CPM-422.  The host
               computer does all the protocol work.

               The kdi driver works with a KMC11-B and one of several
               line units (KDI, DUBHI, KMS11-P) connected to one of
               several Datakit or ISN interface boards.  The KMC11
               runs microcode that handles the URP protocol.

               The experimental kmcdk driver works with a KMC11-B and
               a line unit, as above, but the KMC11 runs different
               microcode implementing a simple DMA engine, and the
               host does all the protocol work.  This is slower, but
               rather more robust, than the kdi setup.

               The experimental cure driver works with a custom-built
               microprocessor board connected to a Datakit, ISN, or
               Hyperkit fiber interface.  The host does all the proto-
               col work.

          Each minor device number represents a Datakit channel; the
          device number is the channel number.  The kdi driver allows
          only 96 channels per KMC11-line unit pair; devices 96-191
          are channels 0-95 on a second pair, if present, and devices
          192-255 are channels 0-63 on a third.  For the other
          drivers, there may be only one hardware interface, which may
          have up to 256 channels.

          Usually there is one interface, with files in directory See
          dkmgr(8) for more about naming conventions.

          Dkp_ld is a stream line discipline implementing the URP pro-
          tocol.  The kdi driver makes its own URP arrangements; other
          interfaces need the line discipline.  A separate copy of
          dkp_ld must be pushed on each active channel.

     DK(4)                                                       DK(4)

          Cmc_ld and unixp_ld are line disciplines set up calls handle
          and controller handshake messages.  Cmc_ld runs a Research-
          only call setup protocol; unixp_ld runs the standard one.
          One copy of the appropriate line discipline must be pushed
          on the common signaling channel to deal with occasional con-
          troller keep-alive and maintenance messages.  Other copies
          of the line discipline come and go as calls are placed.

          These ioctl calls are provided by the device drivers:
          DIOCNXCL   Allow this channel to be opened many times.  By
                     default, if a channel is open, it may not be
                     opened again.  The default is restored whenever
                     the channel is completely closed.
          KIOCSHUT   Reset the kdi driver, hanging up all channels.

          These ioctl calls are provided by the URP processors, dkp_ld
          and kdi:

          DIOCSTREAM Don't generate a stream delimiter when this chan-
                     nel receives a BOT trailer.
          DIOCRECORD Insert a stream delimiter after receiving BOT;
                     the default.
          DIOCSCTL   The third argument points to a byte; send that as
                     a Datakit control envelope.
          DIOCRCTL   The third argument points to a byte; copy the
                     most recently received non-URP control envelope
                     there.  Zero means no control has been received
                     since the last call.
          DIOCXWIN   Set transmit window size.  The third argument
                     points to an array of two long integers.  The
                     first number is the maximum size of each URP
                     block; the second is the number of blocks that
                     may be outstanding.  Blocks may be no more than
                     4096 bytes, and the protocol allows no more than
                     eight blocks in a window.  A KIOCINIT call should
                     follow immediately, or things may go awry.
          KIOCISURP  Return success if some URP processor is active on
                     this channel.
          KIOCINIT   Initialize URP.

          These ioctl calls are provided by the call setup line disci-
          plines:

          DIOCLHN    This is the common signalling channel.
          DIOCHUP    Tell the controller to initialize, hanging up all
                     channels.
          DIOCSTOP   Temporarily hold back received data, so it won't
                     be lost in call setup messages.
          DIOCSTART  Release data held by DIOCSTOP.
          DIOCCHAN   The third argument points to an integer; fill it
                     in with the number of a free channel for calling
                     out.  This is a hint, not a promise; the channel

     DK(4)                                                       DK(4)

                     may already be taken by the time it is opened.
                     The caller should be prepared to try again.

     FILES
     SEE ALSO
          dkmgr(8), kmc(8)
          A. G. Fraser and W. T. Marshall, `Data Transport in a Byte
          Stream Network', IEEE J-SAC, (September, 1989)
          Datakit VSC Internal Interface Specification, select code
          700-283, AT&T Customer Information Center, Indianapolis

     BUGS
          Dkp_ld and kdi insist on using exactly three blocks in a
          window, no matter what they are told in DIOCXWIN.
          The kdi driver has only two block sizes, 28 and 252 bytes.