1*47674Scael.\" Copyright (c) 1983, 1991 The Regents of the University of California. 236756Sbostic.\" All rights reserved. 320714Smckusick.\" 443582Strent.\" %sccs.include.redist.man% 520714Smckusick.\" 6*47674Scael.\" @(#)ec.4 6.7 (Berkeley) 03/27/91 736756Sbostic.\" 8*47674Scael.Dd 9*47674Scael.Dt EC 4 vax 10*47674Scael.Os BSD 4.2 11*47674Scael.Sh NAME 12*47674Scael.Nm ec 13*47674Scael.Nd 3Com 10 Mb/s Ethernet interface 14*47674Scael.Sh SYNOPSIS 15*47674Scael.Cd "device ec0 at uba0 csr 161000 vector ecrint eccollide ecxint flags 0" 16*47674Scael.Sh DESCRIPTION 1720714SmckusickThe 18*47674Scael.Nm ec 1920714Smckusickinterface provides access to a 10 Mb/s Ethernet network through 2020714Smckusicka 3com controller. 21*47674Scael.Pp 22*47674ScaelThe hardware has 32 kilobytes of dual-ported memory on the 23*47674Scael.Tn UNIBUS . 2420714SmckusickThis memory 2520714Smckusickis used for internal buffering by the board, and the interface code reads 26*47674Scaelthe buffer contents directly through the 27*47674Scael.Tn UNIBUS . 28*47674ScaelThe address of this memory is given in the 29*47674Scael.Ar flags 30*47674Scaelfield 3126226Skarelsin the configuration file. 3226226SkarelsThe first interface normally has its memory at Unibus address 0. 33*47674Scael.Pp 3428258SkarelsEach of the host's network addresses 35*47674Scaelis specified at boot time with an 36*47674Scael.Dv SIOCSIFADDR 37*47674Scael.Xr ioctl 2 . 38*47674ScaelThe 39*47674Scael.Nm ec 4020714Smckusickinterface employs the address resolution protocol described in 41*47674Scael.Xr arp 4 4220714Smckusickto dynamically map between Internet and Ethernet addresses on the local 4320714Smckusicknetwork. 44*47674Scael.Pp 45*47674ScaelThe interface normally tries to use a 46*47674Scael.Dq trailer 47*47674Scaelencapsulation 4828258Skarelsto minimize copying data on input and output. 49*47674ScaelThe use of trailers is negotiated with 50*47674Scael.Tn ARP . 5128258SkarelsThis negotiation may be disabled, on a per-interface basis, 52*47674Scaelby setting the 53*47674Scael.Dv IFF_NOTRAILERS 54*47674Scaelflag with an 55*47674Scael.Dv SIOCSIFFLAGS 56*47674Scael.Xr ioctl . 57*47674Scael.Pp 5820714SmckusickThe interface software implements an exponential backoff algorithm 5920714Smckusickwhen notified of a collision on the cable. This algorithm utilizes 60*47674Scaela 16-bit mask and the 61*47674Scael.Tn VAX-11 Ns 's 62*47674Scaelinterval timer in calculating a series 6320714Smckusickof random backoff values. The algorithm is as follows: 64*47674Scael.Bl -enum -offset indent 65*47674Scael.It 6620714SmckusickInitialize the mask to be all 1's. 67*47674Scael.It 6820714SmckusickIf the mask is zero, 16 retries have been made and we give 6920714Smckusickup. 70*47674Scael.It 7120714SmckusickShift the mask left one bit and formulate a backoff by 7226225Skarelsmasking the interval timer with the smaller of the complement of this mask 7326225Skarelsand a 5-bit mask, resulting in a pseudo-random number between 0 and 31. 7426225SkarelsThis produces the number of slot times to delay, 7526225Skarelswhere a slot is 51 microseconds. 76*47674Scael.It 7720714SmckusickUse the value calculated in step 3 to delay before retransmitting 7826225Skarelsthe packet. 7926225SkarelsThe delay is done in a software busy loop. 80*47674Scael.El 81*47674Scael.Sh DIAGNOSTICS 82*47674Scael.Bl -diag 83*47674Scael.It ec%d: send error. 8420714SmckusickAfter 16 retransmissions using the 8520714Smckusickexponential backoff algorithm described above, the packet 8620714Smckusickwas dropped. 87*47674Scael.Pp 88*47674Scael.It ec%d: input error (offset=%d). 8920714SmckusickThe hardware indicated an error 9020714Smckusickin reading a packet off the cable or an illegally sized packet. 9120714SmckusickThe buffer offset value is printed for debugging purposes. 92*47674Scael.Pp 93*47674Scael.It ec%d: can't handle af%d. 9420714SmckusickThe interface was handed 9520714Smckusicka message with addresses formatted in an unsuitable address 9620714Smckusickfamily; the packet was dropped. 97*47674Scael.El 98*47674Scael.Sh SEE ALSO 99*47674Scael.Xr netintro 4 , 100*47674Scael.Xr inet 4 , 101*47674Scael.Xr arp 4 102*47674Scael.Sh HISTORY 103*47674ScaelThe 104*47674Scael.Nm 105*47674Scaeldriver appeared in 106*47674Scael.Bx 4.2 . 107*47674Scael.Sh BUGS 10820714SmckusickThe hardware is not capable of talking to itself. The software 10920714Smckusickimplements local sending and broadcast by sending such packets to the 11020714Smckusickloop interface. This is a kludge. 111*47674Scael.Pp 11220714SmckusickBackoff delays are done in a software busy loop. This can degrade the 11320714Smckusicksystem if the network experiences frequent collisions. 114