Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Apr 2004 00:08:39 -0700 (PDT)
From:      Bill Paul <wpaul@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/compat/ndis kern_ndis.c src/sys/dev/if_ndis if_ndis.c
Message-ID:  <200404220708.i3M78d1Q016504@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



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