All rights reserved.
Redistribution and use in source and binary forms are permitted
provided that the above copyright notice and this paragraph are
duplicated in all such forms and that any documentation,
advertising materials, and other materials related to such
distribution and use acknowledge that the software was developed
by the University of California, Berkeley. The name of the
University may not be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
@(#)ace.4 6.3 (Berkeley) 02/14/89
The hardware has 32 kilobytes of dual-ported memory on the VERSAbus. This memory is used for internal buffering by the board, and the interface code reads the buffer contents directly through the VERSAbus. The address of this memory is given in the flags field in the configuration file.
Each of the host's network addresses is specified at boot time with an SIOCSIFADDR ioctl. The ace interface employs the address resolution protocol described in arp (4) to dynamically map between Internet and Ethernet addresses on the local network.
The interface normally tries to use a ``trailer'' encapsulation to minimize copying data on input and output. The use of trailers is negotiated with ARP. This negotiation may be disabled, on a per-interface basis, by setting the IFF_NOTRAILERS flag with an SIOCSIFFLAGS ioctl.
The device implements an exponential backoff algorithm when notified of a collision on the cable. This algorithm utilizes a table of random numbers setup by the system at boot time. The delay is done in the controller.
The device doesn't autoconfigure its interrupt vector; it is set at 0x90 + eight times the unit number.