faa - DEFAA FDDI Network Interface
controller faa0 at * vector faaintr
This is the entry in the configuration file.
The faa interface is a high-speed Futurebus+ adapter to a
100 megabit per second Fiber Distributed Data Interface
(FDDI) timed token ring network adapter. The faa interface
allows the host system to be an FDDI single attachment
station.
The DEFAA uses DMA transfers for both transmitted and
received data. The driver initializes the DMA engine
before placing the adapter on the ring.
The DEFAA can operate in full duplex mode. To allow the
faa interface operate in full duplex mode, connect two
DEFAA adapters back-to-back. The full duplex mode is
enabled or disabled by using the fddi_config command.
The host's Internet address is specified at boot time with
an SIOCSIFADDR ioctl. The faa interface employs the
address resolution protocol described in arp(7) to map
dynamically between Internet and physical addresses on the
FDDI ring.
The maximum frame size for the faa interface is 4500
bytes, which is substantially larger that the 1500 bytes
maximum packet size of the Ethernet interfaces. The faa
interface does not support the BSD trailer encapsulation,
which is specific to the VAX architecture.
The SIOCRPHYSADDR ioctl can be used to read the physical
address of the DEFAA adapter. The physical address of the
DEFAA adapter can be changed by use of the SIOCSPHYSADDR
ioctl.
The SIOCADDMULTI and SIOCDELMULTI ioctls can be used to
add or delete multicast addresses. The DEFAA supports up
to 62 multicast addresses.
The SIOCRDCTRS ioctl can be used to read the FDDI driver
counters. The DEFAA adapter status and characteristics
can also be read through this ioctl by providing one of
the following flags: FDDI_STATUS, CTR_FDDI, FDDIMIB_PATH,
FDDIMIB_SMT, FDDIMIB_MAC, FDDIMIB_PORT, and FDDIMIB_ATTA.
The argument to this ioctl is a pointer to a counter or
status structure, ctrreq, found in <net/if.h>.
The SIOCENABLBACK and SIOCDISABLBACK ioctls can be used to
enable and disable the interface loopback mode, respectively.
The driver enables internal loopback only.
The SIOCIFRESET ioctl can be used to reset the adapter.
Diagnostic messages contain information provided by the
faa driver and the adapter. The following messages contain
information about the adapter's state, and are printed on
the console, where n is a message number:
faan: Reset
faan: Upgrade
faan: DMA Unavailable
faan: DMA Available
faan: Link Available
faan: Link Unavailable
faan: Halted
Once in the DMA Available state, the adapter goes to the
Link Unavailable state and finally to the Link Available
state.
The following messages contain information about adapter
events: The DEFAA has received a directed beacon. There
is a parity error on the host bus. A link transmit underrun
occurred. A link transmit failure occurred. The
DEFAA adapter has detected a parity error in the packet
memory. A PC Trace has been initiated. The DEFAA adapter
received a PC trace. The adapter's receive queue is full
and packets are being dropped. A ring beacon was initiated.
The FDDI ring is being initialized. This occurs
each time a machine comes on or goes off the ring. A ring
purge error has occurred.
The following are diagnostic error messages about driver
events: The driver could not start the thread that perform
error recovery. This error is not fatal. If an error
occurs, the driver will not reinitialize the adapter. The
DEFAA cannot transition to the DMA Available state. The
driver could not disable the internal loopback on the
DEFAA adapter. A fatal error occurred, and the driver
cannot recover. The driver is off line. The driver could
not enable the internal loopback on the DEFAA adapter.
The DEFAA detected an error and signaled the driver to
flush the transmit queue. The DEFAA is being reinitialized.
The adapter will reset the adapter and force it to
the DMA Available state. The adapter self test failed.
The driver accessed an illegal location on the adapter.
To obtain the physical address of the adapter, use the
SIOCRPHYSADDR ioctl as in the following program example:
#include <stdio.h> /* standard I/O */
#include <errno.h> /* error numbers */
#include <sys/socket.h> /* socket definitions */
#include <sys/ioctl.h> /* ioctls */ #include
<net/if.h> /* generic interface structures */
main() {
int s,i;
static struct ifdevea devea;
/* Get a socket */
s = socket(AF_INET,SOCK_DGRAM,0);
if (s < 0) {
perror("socket");
exit(1);
}
strcpy(devea.ifr_name,"faa0");
if (ioctl(s,SIOCRPHYSADDR,&devea) < 0) {
perror(&devea.ifr_name[0]);
exit(1);
}
printf("Address is ");
for (i = 0; i < 6; i++)
printf("%X ", devea.default_pa[i] & 0xff);
printf("\n");
close(s); }
To reset the adapter, use the SIOCIFRESET ioctl as in the
following program example:
#include <stdio.h> /* standard I/O */
#include <errno.h> /* error numbers */
#include <sys/socket.h> /* socket definitions */
#include <sys/ioctl.h> /* ioctls */ #include
<net/if.h> /* generic interface structures */
main() {
int s;
struct ifreq data;
/* Get a socket */
s = socket(AF_INET,SOCK_DGRAM,0);
if (s < 0) {
perror("socket");
exit(1);
}
strcpy(data.ifr_name,"faa0");
if (ioctl(s,SIOCIFRESET,&data) < 0) {
perror("SIOCIFRESET:");
exit(1);
}
close(s); }
netstat(1), arp(7), inet(7), intro(7), fddi_config(8)
faa(7)
[ Back ] |