summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_node.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2005-08-10 17:42:13 +0000
committersam <sam@FreeBSD.org>2005-08-10 17:42:13 +0000
commit68a0fee0bb6cf21c068641cdd952932f7d2e8cf3 (patch)
treeb27c9fe6e2e4e633f02ab386c87d618edc22950a /sys/net80211/ieee80211_node.c
parentc9a2728833c21511e853b6ce133a7d3f3721aec3 (diff)
downloadFreeBSD-src-68a0fee0bb6cf21c068641cdd952932f7d2e8cf3.zip
FreeBSD-src-68a0fee0bb6cf21c068641cdd952932f7d2e8cf3.tar.gz
Don't use ic_curmode to decide when to do 11g station accounting,
use the station channel properties. Fixes assert failure/bogus operation when an ap is operating in 11a and has associated stations then switches to 11g. Noticed by: Michal Mertl Reviewed by: avatar MFC after: 2 weeks
Diffstat (limited to 'sys/net80211/ieee80211_node.c')
-rw-r--r--sys/net80211/ieee80211_node.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c
index dc098a0..eca1241 100644
--- a/sys/net80211/ieee80211_node.c
+++ b/sys/net80211/ieee80211_node.c
@@ -2062,9 +2062,9 @@ static void
ieee80211_node_leave_11g(struct ieee80211com *ic, struct ieee80211_node *ni)
{
- KASSERT(ic->ic_curmode == IEEE80211_MODE_11G ||
- ic->ic_curmode == IEEE80211_MODE_TURBO_G,
- ("not in 11g, curmode %x", ic->ic_curmode));
+ KASSERT(IEEE80211_IS_CHAN_ANYG(ni->ni_chan),
+ ("not in 11g, bss %u:0x%x, curmode %u", ni->ni_chan->ic_freq,
+ ni->ni_chan->ic_flags, ic->ic_curmode));
/*
* If a long slot station do the slot time bookkeeping.
@@ -2152,8 +2152,7 @@ ieee80211_node_leave(struct ieee80211com *ic, struct ieee80211_node *ni)
ni->ni_associd = 0;
ic->ic_sta_assoc--;
- if (ic->ic_curmode == IEEE80211_MODE_11G ||
- ic->ic_curmode == IEEE80211_MODE_TURBO_G)
+ if (IEEE80211_IS_CHAN_ANYG(ic->ic_bss->ni_chan))
ieee80211_node_leave_11g(ic, ni);
/*
* Cleanup station state. In particular clear various
OpenPOWER on IntegriCloud