cvs commit: src/sys/dev/netif/nfe if_nfe.c

Matthew Dillon dillon at
Thu Aug 9 00:26:46 PDT 2007

dillon      2007/08/09 00:24:50 PDT

DragonFly src repository

  Modified files:
    sys/dev/netif/nfe    if_nfe.c 
  Introduce two delays in nfe_stop().
  The first seems to fix or greatly reduce instances of watchdog failures.
  I theorize that a TX KICK occuring just prior to a nfe_stop() is confusing
  the microcontroller due to the polled nature of the rest of the tx/rx control
  registers and the (almost certain) hardware aided TX KICK bit.  This
  confusion survives the nfe_stop() and nfe_init().  I'll again theorize that
  the KICK, which is probably a microcontroller interrupt, is not being reset
  and is being handled at some inappropriate point in time in the middle of
  nfe_stop() or nfe_init().
  The second delay gives the device time to actually stop the DMA engine
  before we destroy the ring buffers.  Even if those registers were under
  direct hardware control (and I really doubt they are), DMA just doesn't
  instantly stop when you tell it to.
  Revision  Changes    Path
  1.13      +27 -0     src/sys/dev/netif/nfe/if_nfe.c

More information about the Commits mailing list