PERFORCE change 81809 for review

Sam Leffler sam at FreeBSD.org
Wed Aug 10 22:46:46 GMT 2005


http://perforce.freebsd.org/chv.cgi?CH=81809

Change 81809 by sam at 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 */


More information about the p4-projects mailing list