tra - DETRA 4 Mb/s or 16 Mb/s Token Ring interface
config_driver tra
Entry in the system configuration file.
The tra interface is a Token Ring TURBOchannel adapter
that can operate at 4 Mb/s or 16 Mb/s. The adapter uses a
TMS380 chip to implement the Token Ring protocol.
The host's Internet address is specified at boot time with
a SIOCSIFADDR ioctl. Also the speed at which the interface
should operate can be specified using the SIOCSMACSPEED
ioctl. The default speed at which the interface
will try and enter the ring is at 16 Mb/s. The other supported
speed is 4 Mb/s. ifconfig(8) describes how to set
the speed of the interface by using the speed option.
The maximum MAC frame size supported by the driver on a 4
Mb/s Token Ring network is 4136 and for a 16 Mb/s network
it is 8232.
The SIOCRPHYSADDR ioctl can be used to read the physical
address of the DETRA adapter.
The SIOCADDMULTI and SIOCDELMULTI ioctls can be used to
add or delete functional addresses.
The SIOCRDCTRS ioctl can be used to read the Token Ring
driver counters. The DETRA adapter status and characteristics
can also be read through this ioctl by providing
one of the following options: Reads the counters Reads the
characteristics Reads the RFC 1231 mib entry Reads the RFC
1231 status entry
The driver does not support reporting information on the
timer statistics as defined in RFC 1239.
The argument to this ioctl is a pointer to a counter or
status structure, ctrreq, found in <net/if.h>. The structures
defining the Token Ring counters and status maintained
can be found in <netinet/if_trnstat.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
tra driver and the adapter. The following messages contain
information about the adapter's state, and are
printed on the console. Each message begins with the
adapter identification, including the number of the
adapter: The driver received an adapter check interrupt.
The reason for the interrupt is displayed. The driver
could not get an aligned address for the System Status
Block (SSB). (See Texas Instruments, TMS380 SecondGeneration
Token Ring User's Guide for an explanation of
SSB.) The Bring Up Diagnostics (BUD) failed. The value
of the command/status register and the reason for the
failure are displayed. The driver received an unknown
interrupt. An error while trying to write out the initialization
block to the TMS380 Token Ring chip. The
value of the command/status register is displayed in hexadecimal.
The MAC_CLOSE command returned an unknown status
to the driver. A request to close the MAC was previously
issued to the adapter. A request to open the MAC
was previously issued to the adapter. The command to open
the MAC was rejected. The reason is displayed. The
driver opened the adapter into the ring at the speed indicated.
Only two speeds are supported - 4 Mb/s and 16
Mb/s. If either message is displayed, reset the adapter
by issuing the following commands: % ifconfig tra0 down %
ifconfig tra0 up
If the message persists, an error is occurring
while transmitting and receiving packets. You will
need to investigate the error. The status of the
ring. The driver has taken the adapter off the
ring. A timeout occurred while waiting for the
MAC_READ_ERROR_LOG command to complete. A timeout
occurred while trying to close the MAC; the interface
is down. A timeout occurred while waiting for
the MAC_OPEN command to complete.
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,"tra0");
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,"tra0");
if (ioctl(s,SIOCIFRESET,&data) < 0) {
perror("SIOCIFRESET:");
exit(1);
}
close(s); }
netstat(1), ifconfig(8), srconfig(8)
Network Programmer's Guide
tra(7)
[ Back ] |