diff options
author | weongyo <weongyo@FreeBSD.org> | 2010-03-14 01:57:32 +0000 |
---|---|---|
committer | weongyo <weongyo@FreeBSD.org> | 2010-03-14 01:57:32 +0000 |
commit | ca2c72ee9b79501fcfa2ec6186cd4abc6394f92b (patch) | |
tree | 523327e6966bcd4594587838e854b8002114c93f /sys/net80211/ieee80211_tdma.c | |
parent | 6be35ddc1a8fedc3f7f37d3b88f55fc51dd67b33 (diff) | |
download | FreeBSD-src-ca2c72ee9b79501fcfa2ec6186cd4abc6394f92b.zip FreeBSD-src-ca2c72ee9b79501fcfa2ec6186cd4abc6394f92b.tar.gz |
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
Diffstat (limited to 'sys/net80211/ieee80211_tdma.c')
-rw-r--r-- | sys/net80211/ieee80211_tdma.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_tdma.c b/sys/net80211/ieee80211_tdma.c index 43f32f7..8c191ab 100644 --- a/sys/net80211/ieee80211_tdma.c +++ b/sys/net80211/ieee80211_tdma.c @@ -295,6 +295,8 @@ tdma_beacon_miss(struct ieee80211vap *vap) "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; |