mfa - DEMFA FDDI Network Interface
config_driver mfa
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 SIOCSIFADDR 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.
Diagnostic error messages contain information provided by
the mfa driver. For example: The DEMFA adapter did not
pass the power-up selftest 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.
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,"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 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,"mfa0");
if (ioctl(s,SIOCIFRESET,&data) < 0) {
perror("SIOCIFRESET:");
exit(1);
}
close(s); }
netstat(1), arp(7), inet(7), intro(7), fddi_config(8)
mfa(7)
[ Back ] |