Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Jul 1996 03:49:56 -0700 (PDT)
From:      David Greenman <davidg>
To:        CVS-committers, cvs-all, cvs-sys
Subject:   cvs commit:  src/sys/i386/isa if_ep.c
Message-ID:  <199607131049.DAA03821@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
davidg      96/07/13 03:49:56

  Modified:    sys/i386/isa  if_ep.c
  Log:
  Enable transmit complete interrupt...
  
  (author's explaination):
  
   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.
  
  Submitted by:	mevans@candle.com (Mike Evans)
  
  Revision  Changes    Path
  1.50      +2 -2      src/sys/i386/isa/if_ep.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199607131049.DAA03821>