mfa(7)mfa(7)NAMEmfa - DEMFA FDDI Network Interface
SYNOPSIS
config_driver mfaDESCRIPTION
The mfa interface is a high speed XMI adapter to a 100 Mbit/second
Fiber Distributed Data Interface (FDDI) timed token ring network
adapter. The mfa interface allows the host system to be an FDDI single
attachment station.
The host's Internet address is specified at boot time with an SIOCSI‐
FADDR ioctl. The mfa interface employs the address resolution protocol
described in arp(7) to map dynamically between Internet and FDDI
addresses on the local network.
The maximum frame size for the mfa interface is 4500 bytes, which is
substantially larger that the 1500 bytes maximum packet size of the
Ethernet interfaces. The mfa 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
DEMFA adapter. The physical address of the DEMFA 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 DEMFA supports up to 15 multicast addresses.
The SIOCRDCTRS ioctl can be used to read the FDDI driver counters. The
DEMFA adapter status and characteristics can also be read through this
ioctl by providing a FDDISTATUS flag . 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 SIOCIFRESET ioctl can be used to reset the adapter.
ERRORS
Diagnostic error messages contain information provided by the mfa
driver. For example: The DEMFA adapter did not pass the power-up self‐
test during autoconfiguration. The DEMFA is unable to allocate system
memory or cluster mbufs for device initialization. The DEMFA cannot
transition to the initialized state. An interrupt has been received
with no packets found. An internal command to the device has failed to
complete on time. An internal command to the device has returned an
error. The DEMFA has received an unknown type of unsolicited interrupt
about the FDDI ring state. The DEMFA has received an unsolicited
interrupt, the FDDI ring state has been changed. The DEMFA was unable
to change FDDI characteristics and restart. An attempt was made to add
more than 15 multicast addresses to the device. The DEMFA has failed
internal self test during a reset operation. The DEMFA has failed to
re-initialize after a reset operation. The DEMFA has encountered a
hard error which should cause the device to reset.
EXAMPLES
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 defini‐
tions */ #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,"mfa0");
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 defini‐
tions */ #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,"mfa0");
if (ioctl(s,SIOCIFRESET,&data) < 0) {
perror("SIOCIFRESET:");
exit(1);
}
close(s); }
SEE ALSOnetstat(1), arp(7), inet(7), intro(7), fddi_config(8)mfa(7)