stp(7P)

stp - Scheduled Transfer Protocol

As shipped in IRIX 6.5.7. Added in IRIX 6.5.7.

NAME
     stp - Scheduled Transfer Protocol

SYNOPSIS
     #include <sys/socket.h>
     #include <netinet/in.h>

     s = socket(AF_STP, SOCK_SEQPACKET, IPPROTO_STP);

DESCRIPTION
     STP is a data transfer protocol that uses small control messages to pre-
     arrange data movement. Buffers are allocated at the sending and the
     receiving end before the data transmission, allowing full-rate, non-
     congesting data flow between the end devices.  The control and data may
     use different physical media, or may share a single physical medium.

     The read(2) or recv(2) and write(2) or send(2) system calls should be
     used to transfer data over STP sockets. By the very nature of STP, a send
     operation on an STP socket must have a corresponding receive at the peer
     in order for progress to be made.  This is because STP is fundamentally a
     ``no-copy'' protocol, where transfers are a-priori scheduled to occur
     directly from user-space to user-space: there is no intermediate copy of
     user-payload into kernel-space.

     STP supports several socket options which can be tested with
     getsockopt(2) and manipulated with setsockopt(2).  These options are
     defined in <netinet/st.h>.


     ST_CTS_OUTSTD
          Tells the ST socket how many outstanding clear-to-sends (CTS-es) the
          initiator of a write()/send() can handle. Other things remaining
          equal, increasing this value pipelines the data transfer, and is
          expected to increase bandwidth.  The default value for ST sockets is
          128.


     ST_BLKSZ
          Modifies the BlockSize parameter, as defined in the ST protocol
          standard. Other things remaining equal, a larger blocksize is
          expected to increase bandwidth. The parameter is specified as a
          power of 2. The default block size is 24 (16 MB). The maximum block
          size is 24.


     ST_BUFSZ
          The size of buffers to use for the transfer. As explained in the ST
          protocol specification, this information is exchanged between the
          initiator and the responder of a transfer during connection set-up.
          Other things remaining equal, a larger bufsize is expected to
          increase bandwidth. Note that setting a bufsize of N bytes makes
          sense if and only if the user buffer's physical memory fragments are
          each of size at least N bytes. The parameter is specified as a power
          of 2. The default bufsize is 14 (16 Kbytes).


     ST_STUSZ
          The default size of the Scheduled Transfer Unit (STU) to be
          transmitted.  (STU is similar to an MTU - Maximum Transfer Unit - on
          most networks.) This can be throttled down by the other end-point
          per the STP specification. The parameter is specified as a power of
          2. Default size is 24 (16777216 bytes) on GSN and 10 (1024 bytes) on
          all versions of ethernet. Also note that the actual STU size is the
          minimum of the ST_BLKSZ and ST_STUSZ parameters, per the STP
          specification.


     ST_OUT_VCNUM
          The virtual circuit to be used for payload packets -- can be set to
          1, 2 or 3. The default VC used for payload packets is 3.  [This
          parameter makes sense for Gigabyte System Network hardware only.]


     ST_TX_SPRAY_WIDTH
          The size of spray to be used for sending payload. This parameter can
          be set to 1, 2, 4, 6 or 8. The default spray size used for a send is
          1 ("no spray").  [Setting the spray width should be done very
          carefully, since it is easy to get garbled data on a transfer if all
          parameters of the spray are not exactly right.  This parameter makes
          sense for the Gigabyte System Network hardware only.]



     ST_RX_SPRAY_WIDTH
          The size of spray to be used for receiving payload. This parameter
          can be set to 1, 2, 4, 6 or 8. The default spray size used for a
          receive is 1 ("no spray").  [Setting the spray width should be done
          very carefully, since it is easy to get garbled data on a transfer
          if all parameters of the spray are not exactly right.  This
          parameter makes sense for the Gigabyte System Network hardware
          only.]



DIAGNOSTICS
     A socket operation may fail with one of the following errors returned:

     [EISCONN]      when trying to establish a connection on a socket which
                    already has one, or when trying to send a datagram with
                    the destination address specified and the socket is
                    already connected;

     [ENOTCONN]     when trying to send a datagram, but no destination address
                    is specified, and the socket hasn't been connected;

     [ENOBUFS]      when the system runs out of memory for an internal data
                    structure;

     [EADDRNOTAVAIL]
                    when an attempt is made to create a socket with a network
                    address for which no network interface exists.


SEE ALSO
     send(2), recv(2), intro(3), write(2), read(2),
     IRIX Network Programming Guide,
     ANSI T11.1/Project 1245-D: Scheduled Transfer Protocol specifications.