ATM(7M)ATM(7M)NAME
atm, quadoc3 - IRIS ATM OC-3c drivers
SYNOPSISatm - driver for Challenge/Onyx OC-3c ATM interface
quadoc3 - driver for SGI XIO 4-Port OC-3c ATM interface
#include <sys/atm.h>
#include <sys/atm_user.h>
/hw/atm/*
DESCRIPTION
These drivers control the SGI OC-3c ATM interfaces and provides an API to
the ATM AAL5 adaptation layer. The driver supports rate controlled
constant bit-rate transmission of data. The driver supports both
permanent virtual circuits (PVCs) and switched virtual circuits (SVCs).
The driver uses ATM Forum UNI-3.0/3.1 compliant signalling to establish
switched virtual circuits.
Each time an application opens a device special file, /hw/atm/*, the
driver creates a clone device for that file descriptor. The file
descriptor is bound to a virtual circuit using one of three mechanisms:
An application binds a file descriptor to a permanent virtual circuit
(PVC) using the ATMIOC_CREATEPVC ioctl. The file descriptor is then used
to transmit and/or receive data on the virtual circuit with the VPI/VCI
identifiers given in the ioctl's parameters.
An application binds a file descriptor to a switched virtual circuit
(SVC) by using the ATMIOC_SETUP ioctl. This ioctl a request to the ATM
network to set up a connection to an ATM end-point with a specified ATM
address. If the connection set-up is successful, the ioctl call returns
without error and the file descriptor is bound to the resulting virtual
circuit. An application can then use the file descriptor to transmit and
receive data on the virtual circuit. If the connection set-up is not
successful, the ioctl returns with errno set to EIO and the reject field
of the set up request contains the reason for failure.
An application receives ATM switched virtual circuit set-up requests
using the ATMIOC_REGISTER and ATMIOC_LISTEN ioctls. For each call
request that comes in, the application can accept the call request and
bind the resulting switched virtual circuit to a file descriptor with an
ATMIOC_ACCEPT ioctl. Alternatively, the application can reject an
incoming call request with the ATMIOC_REJECT ioctl.
For every write call performed on a file descriptor bound to a transmit
VC, the driver forms one or more AAL5 PDU's from the data and transmits
them over that VC. The buffer in a write call must be aligned on an 8-
byte boundary. For non-blocking writes (when the O_NDELAY flag is used
when opening the file descriptor), the application must lock down the
buffer in physical memory using the mpin(2) system call.
Page 1
ATM(7M)ATM(7M)
For blocking writes, the write call returns after all the data has been
buffered on the interface. But, a write call can complete before the
data is completely transmitted (especially at slow transmit rates).
When a file descriptors is bound to a receiving VC, the interface sends
all PDUs received on that VC up to the application. Received PDUs are
buffered in the kernel in per-VC queues. It is the responsibility of the
application to perform enough read() calls to consume the data. If the
per-VC receive queue in the kernel overflows, PDUs will be dropped.
Cells received on non-active VCs are discarded by the ATM interface.
An application destroys a transmit VC by closing the corresponding file
descriptor. But, the VC will remain active on the interface until all
data buffered for transmit over that VC is completely transmitted.
BUGS
If an application closes a transmit PVC and then quickly attempts to
reestablish the same PVC, the previous incarnation of the PVC will still
be active if it is still transmitting data. The PVC will be available
again after all the data from the previous incarnation of the PVC has
been transmitted.
FILES
/etc/init.d/atm
/usr/include/sys/atm.h
/usr/include/sys/atm_user.h
/var/sysgen/master.d/atm (Challenge and Onyx)
/var/sysgen/master.d/quadoc3 (Origin and Onyx2)
/hw/atm/*
SEE ALSOif_atm(7M), if_atmarp(7M), atmarp(1M), atmconfig(1M), atmilmid(1M),
atmsigd(1M), atmstat(1M), atmtest(1M), ifatmconfig(1M), sigtest(1M)spansd(1M), mpin(2)
Silicon Graphics' ATM-OC3c API Programmer's Guide
Page 2