Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Aug 2005 22:38:01 GMT
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 81809 for review
Message-ID:  <200508102238.j7AMc1rt070595@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=81809

Change 81809 by sam@sam_ebb on 2005/08/10 22:37:39

	Bandaid deadlock: on tx timeout we're in the callout callback
	when we clock the state machine, but this results in a call
	to callout_drain which blocks because the callout is active.
	Workaround for now is to use callout_stop which won't block
	but this potentially leaves us open to a race.

Affected files ...

.. //depot/projects/wifi/sys/net80211/ieee80211_proto.c#36 edit

Differences ...

==== //depot/projects/wifi/sys/net80211/ieee80211_proto.c#36 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/net80211/ieee80211_proto.c,v 1.22 2005/07/22 21:11:26 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/net80211/ieee80211_proto.c,v 1.23 2005/08/10 16:22:29 sam Exp $");
 
 /*
  * IEEE 802.11 protocol support.
@@ -949,7 +949,7 @@
 	IEEE80211_DPRINTF(ic, IEEE80211_MSG_STATE, "%s: %s -> %s\n", __func__,
 		ieee80211_state_name[ostate], ieee80211_state_name[nstate]);
 	ic->ic_state = nstate;			/* state transition */
-	callout_drain(&ic->ic_mgtsend);
+	callout_stop(&ic->ic_mgtsend);		/* XXX callout_drain */
 	if (ostate != IEEE80211_S_SCAN)
 		ieee80211_cancel_scan(ic);	/* background scan */
 	ni = ic->ic_bss;			/* NB: no reference held */



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