The Am7990 Revision C chips have a bug which causes garbage to be inserted in front of the received packet occasionally. The work-around is to ignore packets with an invalid destination address (garbage will usually not match), by double-checking the destination address of every packet in the driver. This work-around is enabled with the
LANCE_REVC_BUG kernel option.
When
LANCE_REVC_BUG is enabled, the
le driver executes one or two calls to an inline Ethernet address comparison function for every received packet. On the mc68000 it is exactly eight instructions of 16 bits each. There is one comparison for each unicast packet, and two comparisons for each broadcast packet.
In summary, the cost of the LANCE_REVC_BUG option is:
1.
loss of multicast support, and
2.
eight extra CPU instructions per received packet, sometimes sixteen, depending on both the processor, and the type of packet.
All sun3 systems are presumed to have this bad revision of the Am7990, until proven otherwise. Alas, the only way to prove what revision of the chip is in a particular system is inspection of the date code on the chip package, to compare against a list of what chip revisions were fabricated between which dates.
Alas, the Am7990 chip is so old that AMD has “de-archived” the production information about it; pending a search elsewhere, we don't know how to identify the revision C chip from the date codes.
On all pmax front-ends, performance is impaired by hardware which forces a software copy of packets to and from DMA buffers. The
ioasic machines and the DECstation 3100 must copy packets to and from non-contiguous DMA buffers. The DECstation 5000/200 and the PMAD-AA must copy to and from an onboard SRAM DMA buffer. The CPU overhead is noticeable, but all machines can sustain full 10 Mb/s media speed.