All rights reserved. The Berkeley software License Agreement
specifies the terms and conditions for redistribution.
@(#)en.4 6.2 (Berkeley) 05/16/86
Each of the host's network addresses is specified at boot time with an SIOCSIFADDR ioctl. The station address is discovered by probing the on-board Ethernet address register, and is used to verify the protocol addresses. No packets will be sent or accepted until a network address is supplied.
The interface software implements an exponential backoff algorithm when notified of a collision on the cable. This algorithm utilizes a 16-bit mask and the VAX-11's interval timer in calculating a series of random backoff values. The algorithm is as follows:
5 1. Initialize the mask to be all 1's.
5 2. If the mask is zero, 16 retries have been made and we give up.
5 3. Shift the mask left one bit and formulate a backoff by masking the interval timer with the mask (this is actually the two's complement of the value).
5 4. Use the value calculated in step 3 to delay before retransmitting the packet.
The interface handles both Internet and NS protocol families. It 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.
"en%d: send error" . After 16 retransmissions using the exponential backoff algorithm described above, the packet was dropped.
"en%d: input error" . The hardware indicated an error in reading a packet off the cable.
"en%d: can't handle af%d" . The interface was handed a message with addresses formatted in an unsuitable address family; the packet was dropped.
The hardware does word at a time DMA without byte swapping. To compensate, byte swapping of user data must either be done by the user or by the system. A kludge to byte swap only IP packets is provided if the ENF_SWABIPS flag is defined in the driver and set at boot time with an SIOCSIFFLAGS ioctl.