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>