Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Apr 2004 12:32:16 +0300
From:      Niki Denev <nike_d@cytexbg.com>
To:        Bill Paul <wpaul@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org
Subject:   Re: cvs commit: src/sys/dev/if_ndis if_ndis.c
Message-ID:  <cone.1082539936.980810.569.1001@phobos.totalterror.net>
References:  <200404210229.i3L2TSes070256@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a MIME GnuPG-signed message.  If you see this text, it means that
your E-mail or Usenet software does not support MIME signed messages.

--=_mimegpg-phobos.totalterror.net-569-1082539936-0001
Content-Type: text/plain; format=flowed; charset="US-ASCII"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

Bill Paul writes:

> wpaul       2004/04/20 19:29:28 PDT
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/dev/if_ndis      if_ndis.c 
>   Log:
>   Fix the problems people have been having with the Intel 2100B Centrino
>   wireless ever since I added the new spinlock code. Previously, I added
>   a special ndis_rxeof_serial() function to insure that when we receive
>   a packet, we never end up calling the MiniportReturnPacket() routine
>   until after the receive handler has finished. I set things up so that
>   ndis_rxeof_serial() would only be used for serialized miniports since
>   they depend on this property. Well, it turns out deserialized miniports
>   depend on a similar property: you can't let MiniportReturnPacket() be
>   called from the same context as the receive handler at all. The 2100B
>   driver happens to use a single spinlock for all of its synchronization,
>   and it tries to acquire it both while in MiniportHandleInterrupt() and
>   in MiniportReturnPacket(), so if we call MiniportReturnPacket() from
>   the MiniportHandleInterrupt() context, we will end up trying to acquire
>   the spinlock recursively, which you can't do.
>   
>   To fix this, I made the ndis_rxeof_serial() handler the default. An
>   alternate solution would be to make ndis_return_packet() submit
>   the call to MiniportReturnPacket() to the NDIS task queue thread.
>   I may do that in the future, after I've tested things a bit more.
>   
>   Revision  Changes    Path
>   1.54      +19 -107   src/sys/dev/if_ndis/if_ndis.c
> _______________________________________________
> cvs-src@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/cvs-src
> To unsubscribe, send any mail to "cvs-src-unsubscribe@freebsd.org"
> 
> 

doesn't seem to help here.... i got exactly the same lockup after the first 
packets transmitted/recvd over the wireless as before...
the machine is ibm tp X31, with the above mentioned centrino wireless mini 
pci card, and -current as from 1-2 hours ago.
is there any info that i can provide, to help on this?

--niki


--=_mimegpg-phobos.totalterror.net-569-1082539936-0001
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)

iD8DBQBAhj+hHNAJ/fLbfrkRAjAiAJ91IjPBvkcD7kFrPOsyNrA0XzRe0wCdEJbg
8BNGP+lusBHZYnh+1VYknXk=
=aTDZ
-----END PGP SIGNATURE-----

--=_mimegpg-phobos.totalterror.net-569-1082539936-0001--



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