cvs commit: src/sys/compat/ndis kern_ndis.c src/sys/dev/if_ndis if_ndis.c

Bill Paul wpaul at FreeBSD.org
Thu Apr 22 00:08:39 PDT 2004


wpaul       2004/04/22 00:08:39 PDT

  FreeBSD src repository

  Modified files:
    sys/compat/ndis      kern_ndis.c 
    sys/dev/if_ndis      if_ndis.c 
  Log:
  Ok, _really_ fix the Intel 2100B Centrino deadlock problems this time.
  (I hope.)
  
  My original instinct to make ndis_return_packet() asynchronous was correct.
  Making ndis_rxeof() submit packets to the stack asynchronously fixes
  one recursive spinlock acquisition, but it's also possible for it to
  happen via the ndis_txeof() path too. So:
  
  - In if_ndis.c, revert ndis_rxeof() to its old behavior (and don't bother
    putting ndis_rxeof_serial() back since we don't need it anymore).
  
  - In kern_ndis.c, make ndis_return_packet() submit the call to the
    MiniportReturnPacket() function to the "ndis swi" thread so that
    it always happens in another context no matter who calls it.
  
  Revision  Changes    Path
  1.53      +27 -12    src/sys/compat/ndis/kern_ndis.c
  1.55      +3 -29     src/sys/dev/if_ndis/if_ndis.c


More information about the cvs-all mailing list