*BSD News Article 73465


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!nntp.coast.net!sgigate.sgi.com!news.msfc.nasa.gov!newsfeed.internetmci.com!news.inc.net!newspump.sol.net!news.mindspring.com!psinntp!psinntp!psinntp!psinntp!clothos.candle.com!phobos.candle.com!main.elgin.candle.com
From: mevans@candle.com
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: problem with 3c590
Date: Fri, 12 Jul 96 00:13:50
Organization: Candle Corporation
Lines: 15
Message-ID: <4s4n0a$721@phobos.Candle.Com>
References: <4rf9u3$7vp@news.uit.no> <4rl1vb$u3@anorak.coverform.lan> <4rt0bd$4fl@uriah.heep.sax.de> <4s0hqt$a6@anorak.coverform.lan>
NNTP-Posting-Host: main.elgin.candle.com
X-Newsreader: IBM-WebExplorer-DLL

     I'm the author of the patch, and it has nothing to do with 2's complement arithmetic.
 Bit 15 is the flag to request a transmit complete interrupt.  The driver was apparently written
to minimize interrupts, and if not for a 3-COM design quirk, everything would be just ducky.
 Prior to loading the outbound packet into the FIFO, the driver checks to see if there's enough
space to contain the packet.  If not, the driver requests a transmit-available interrupt when
there is sufficient room.  Unfortunately, the card is continuing to process the prior FIFO,
and by the time the driver sets the threshold for a transmit available interrupt, the space
is already available.  When this occurs, the 3COM card ignores the interrupt request, and the
driver is hung waiting for an interrupt that will never occur.  There's probably a more elegant
solution, but requesting the transmit complete interrupt was the easiest to implement.  An
alternative fix might be to check free FIFO space again, after requesting the transmit available
interrupt, but I haven't bothered pursuing this.  Since the patch, my 3C590 (PCI, same FIFO
interface as 3C509) has been rock solid.

Mike Evans