svn commit: r206780 - stable/8/sys/net80211
Weongyo Jeong
weongyo at FreeBSD.org
Sat Apr 17 23:48:08 UTC 2010
Author: weongyo
Date: Sat Apr 17 23:48:07 2010
New Revision: 206780
URL: http://svn.freebsd.org/changeset/base/206780
Log:
MFC r205140:
fixes a broken software beacon miss handler. There is a race to check
vap->iv_bmiss_count == 0 in ieee80211_swbmiss because iv_swbmiss_task
is enqueued by taskqueue.
Reviewed by: rpaulo
Modified:
stable/8/sys/net80211/ieee80211_proto.c
stable/8/sys/net80211/ieee80211_sta.c
stable/8/sys/net80211/ieee80211_tdma.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/dev/uath/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
Modified: stable/8/sys/net80211/ieee80211_proto.c
==============================================================================
--- stable/8/sys/net80211/ieee80211_proto.c Sat Apr 17 23:14:06 2010 (r206779)
+++ stable/8/sys/net80211/ieee80211_proto.c Sat Apr 17 23:48:07 2010 (r206780)
@@ -1432,8 +1432,6 @@ ieee80211_swbmiss(void *arg)
} else if (vap->iv_swbmiss_count == 0) {
if (vap->iv_bmiss != NULL)
ieee80211_runtask(ic, &vap->iv_swbmiss_task);
- if (vap->iv_bmiss_count == 0) /* don't re-arm timer */
- return;
} else
vap->iv_swbmiss_count = 0;
callout_reset(&vap->iv_swbmiss, vap->iv_swbmiss_period,
Modified: stable/8/sys/net80211/ieee80211_sta.c
==============================================================================
--- stable/8/sys/net80211/ieee80211_sta.c Sat Apr 17 23:14:06 2010 (r206779)
+++ stable/8/sys/net80211/ieee80211_sta.c Sat Apr 17 23:48:07 2010 (r206780)
@@ -141,6 +141,8 @@ sta_beacon_miss(struct ieee80211vap *vap
vap->iv_bss->ni_essid, vap->iv_bss->ni_esslen);
return;
}
+
+ callout_stop(&vap->iv_swbmiss);
vap->iv_bmiss_count = 0;
vap->iv_stats.is_beacon_miss++;
if (vap->iv_roaming == IEEE80211_ROAMING_AUTO) {
Modified: stable/8/sys/net80211/ieee80211_tdma.c
==============================================================================
--- stable/8/sys/net80211/ieee80211_tdma.c Sat Apr 17 23:14:06 2010 (r206779)
+++ stable/8/sys/net80211/ieee80211_tdma.c Sat Apr 17 23:48:07 2010 (r206780)
@@ -295,6 +295,8 @@ tdma_beacon_miss(struct ieee80211vap *va
"beacon miss, mode %u state %s\n",
vap->iv_opmode, ieee80211_state_name[vap->iv_state]);
+ callout_stop(&vap->iv_swbmiss);
+
if (ts->tdma_peer != NULL) { /* XXX? can this be null? */
ieee80211_notify_node_leave(vap->iv_bss);
ts->tdma_peer = NULL;
More information about the svn-src-stable-8
mailing list