summaryrefslogtreecommitdiff
path: root/sys/net80211
diff options
context:
space:
mode:
authorDamien Bergamini <damien@cvs.openbsd.org>2010-07-19 18:53:53 +0000
committerDamien Bergamini <damien@cvs.openbsd.org>2010-07-19 18:53:53 +0000
commit498053d3da31ecb89811e946542e3807ecb3d471 (patch)
treea40498a8a6ed8cd582a20c81cf63e9aee1cd5bd6 /sys/net80211
parente5b61aec056c97208c4ff513e162e19703fc6164 (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.c5
-rw-r--r--sys/net80211/ieee80211_var.h4
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);