fza - DEFZA FDDI Network Interface
config_driver fza
The fza interface is a high speed TURBOchannel bus to a
100 Mbit/second Fiber Distributed Data Interface (FDDI)
timed token ring network adapter. The fza 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 fza interface employs the
address resolution protocol described in arp(7) to map
dynamically between Internet and FDDI addresses on the
local network.
The Maximum Transmit Unit (MTU) size for fza interface is
4352 bytes, which is substantially larger that the 1500
bytes maximum packet size of the Ethernet interfaces. The
fza interface does not support the BSD trailer encapsulation.
The SIOCRPHYSADDR ioctl can be used to read the physical
address of the DEFZA adapter. The physical address of the
DEFZA adapter cannot be changed.
The SIOCADDMULTI and SIOCDELMULTI ioctls can be used to
add or delete multicast addresses. The DEFZA supports up
to 64 multicast addresses. The argument to the latter
ioctls is a pointer to an ifreq structure found in
<net/if.h>.
The SIOCRDCTRS ioctl can be used to read the FDDI driver
counters. The DEFZA adapter status and characteristics can
also be read through this ioctl by providing an FDDI_STATUS
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 SIOCEEUPDATE ioctl can be used to update the adapter's
firmware.
The SIOCIFRESET ioctl can be used to reset the adapter.
Some of the FDDI link characteristics can be changed by
the SIOCIFSETCHAR ioctl. These characteristics include
Request Token Rotation Time (T_REQ), Valid Transmission
Time, Link Error Monitor (LEM) Threshold, Restricted Token
Timeout, and Ring Purger Enable. The latter two characteristics
are supported by the firmware revision V1.2 and
higher. The T_REQ, Valid Transmission Time, and Restricted
Token Timeout value are based on 80 ns units. The setable
FDDI attributes are shown in the following table.
---------------------------------------------------------------------
Attribute Name Range Default Value
---------------------------------------------------------------------
Requested Token Rotation Time 4.0ms to 167.77208ms 8.0ms
Valid Transmission Time 2.35ms to 5.2224ms 2.621ms
Restricted Token Timeout 0ms to 10000ms 1000ms
LEM Threshold 5 to 8 8
Ring Purger Enable True or False True
---------------------------------------------------------------------
For a LEM Threshold attribute value of N, the threshold
value is 10 of power -N. The Ring Purger can be disabled
by setting the Ring Purger Enable field value to zero. The
unchanged characteristics need to be filled by a -1 or
0xffffffff value. The argument to this ioctl is a pointer
to an ifchar structure found in <net/if.h>. To set the
FDDI link characteristics, use the following form:
ioctl(s, SIOCIFSETCHAR, ifchar)
struct ifchar *ifchar;
The following example changes the Restricted Token Timeout
value to 16ms and disables the Ring Purger mode:
int s ; struct ifchar ifchar;
if((s = socket( AF_INET, SOCK_DGRAM, 0 )) < 0 )
exit(1);
strcpy(&ifchar.ifc_name[0],"fza0");
ifchar.ifc_treq = 200000 ; /* 200000 * 80 ns =
16 ms */
ifchar.ifc_rtoken = -1; /* unchanged */
ifchar.ifc_tvx = -1; /* unchanged */
ifchar.ifc_lem = -1; /* unchanged */
ifchar.ifc_ring_purger = 0 ; /* disable the ring
purger */
if(ioctl( s, SIOCIFSETCHAR, &ifchar) < 0 )
exit(1);
The FDDI link characteristics can be displayed by using
the following command: netstat -I interface -s
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,"fza0");
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,"fza0");
if (ioctl(s,SIOCIFRESET,&data) < 0) {
perror("SIOCIFRESET:");
exit(1);
}
close(s); }
Diagnostic error messages contain information provided by
the fza driver. For example: The DEFZA adapter did not
pass the power-up selftest during autoconfiguration. The
DEFZA adapter cannot be initialized. The DEFZA adapter
went to the Halt state because of an adapter firmware
fault. The network link went down which means than the
station is not on the FDDI ring. A Ring Initialization
unsolicited event has been received from the fza%d interface.
An invalid T_REQ value was discovered by the
adapter while user was trying to change the FDDI link
characteristics.
netstat(1), arp(7), inet(7), fddi_config(8)
fza(7)
[ Back ] |