diff options
author | Damien Bergamini <damien@cvs.openbsd.org> | 2010-07-19 18:53:53 +0000 |
---|---|---|
committer | Damien Bergamini <damien@cvs.openbsd.org> | 2010-07-19 18:53:53 +0000 |
commit | 498053d3da31ecb89811e946542e3807ecb3d471 (patch) | |
tree | a40498a8a6ed8cd582a20c81cf63e9aee1cd5bd6 /sys/net80211 | |
parent | e5b61aec056c97208c4ff513e162e19703fc6164 (diff) |
in hostap mode, notify drivers via a new callback when a STA leaves
the BSS. this is needed by drivers that need to maintain a hardware
table of associated STAs (like ral(4) RT2860).
idea from Nathanael Rensen
Diffstat (limited to 'sys/net80211')
-rw-r--r-- | sys/net80211/ieee80211_node.c | 5 | ||||
-rw-r--r-- | sys/net80211/ieee80211_var.h | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c index b3c483570c5..8ea9c0a5c69 100644 --- a/sys/net80211/ieee80211_node.c +++ b/sys/net80211/ieee80211_node.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ieee80211_node.c,v 1.60 2010/06/19 08:33:50 damien Exp $ */ +/* $OpenBSD: ieee80211_node.c,v 1.61 2010/07/19 18:53:52 damien Exp $ */ /* $NetBSD: ieee80211_node.c,v 1.14 2004/05/09 09:18:47 dyoung Exp $ */ /*- @@ -1524,6 +1524,9 @@ ieee80211_node_leave(struct ieee80211com *ic, struct ieee80211_node *ni) ieee80211_node_leave_ht(ic, ni); #endif + if (ic->ic_node_leave != NULL) + (*ic->ic_node_leave)(ic, ni); + IEEE80211_AID_CLR(ni->ni_associd, ic->ic_aid_bitmap); ni->ni_associd = 0; ieee80211_node_newstate(ni, IEEE80211_STA_COLLECT); diff --git a/sys/net80211/ieee80211_var.h b/sys/net80211/ieee80211_var.h index e5154e15705..ba218df0742 100644 --- a/sys/net80211/ieee80211_var.h +++ b/sys/net80211/ieee80211_var.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ieee80211_var.h,v 1.60 2009/05/19 16:09:02 damien Exp $ */ +/* $OpenBSD: ieee80211_var.h,v 1.61 2010/07/19 18:53:52 damien Exp $ */ /* $NetBSD: ieee80211_var.h,v 1.7 2004/05/06 03:07:10 dyoung Exp $ */ /*- @@ -202,6 +202,8 @@ struct ieee80211com { enum ieee80211_state, int); void (*ic_newassoc)(struct ieee80211com *, struct ieee80211_node *, int); + void (*ic_node_leave)(struct ieee80211com *, + struct ieee80211_node *); void (*ic_updateslot)(struct ieee80211com *); void (*ic_updateedca)(struct ieee80211com *); void (*ic_set_tim)(struct ieee80211com *, int, int); |