svn commit: r188543 - in projects/vap7/sys: . contrib/pf dev
dev/ath dev/ath/ath_hal dev/ath/ath_hal/ar5210
dev/ath/ath_hal/ar5211 dev/ath/ath_hal/ar5212
dev/ath/ath_hal/ar5312 dev/ath/ath_hal/ar54...
Sam Leffler
sam at FreeBSD.org
Thu Feb 12 15:45:59 PST 2009
Author: sam
Date: Thu Feb 12 23:45:58 2009
New Revision: 188543
URL: http://svn.freebsd.org/changeset/base/188543
Log:
merge r188541: replace ieee80211_node_reclaim by individual operations
Modified:
projects/vap7/sys/ (props changed)
projects/vap7/sys/contrib/pf/ (props changed)
projects/vap7/sys/dev/ (props changed)
projects/vap7/sys/dev/ath/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ar5210/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ar5211/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ar5212/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ar5312/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ar5416/ (props changed)
projects/vap7/sys/dev/cxgb/ (props changed)
projects/vap7/sys/dev/usb2/ (props changed)
projects/vap7/sys/i386/conf/USB2 (props changed)
projects/vap7/sys/modules/usb2/ (props changed)
projects/vap7/sys/net80211/ (props changed)
projects/vap7/sys/net80211/ieee80211_node.c
Modified: projects/vap7/sys/net80211/ieee80211_node.c
==============================================================================
--- projects/vap7/sys/net80211/ieee80211_node.c Thu Feb 12 23:44:59 2009 (r188542)
+++ projects/vap7/sys/net80211/ieee80211_node.c Thu Feb 12 23:45:58 2009 (r188543)
@@ -87,7 +87,6 @@ static void ieee80211_node_table_init(st
int inact, int keymaxix);
static void ieee80211_node_table_reset(struct ieee80211_node_table *,
struct ieee80211vap *);
-static void ieee80211_node_reclaim(struct ieee80211_node *);
static void ieee80211_node_table_cleanup(struct ieee80211_node_table *nt);
static void ieee80211_erp_timeout(struct ieee80211com *);
@@ -674,7 +673,8 @@ ieee80211_sta_join1(struct ieee80211_nod
vap->iv_bss = selbs; /* NB: caller assumed to bump refcnt */
if (obss != NULL) {
copy_bss(selbs, obss);
- ieee80211_node_reclaim(obss);
+ ieee80211_node_decref(obss); /* iv_bss reference */
+ ieee80211_free_node(obss); /* station table reference */
obss = NULL; /* NB: guard against later use */
}
@@ -1739,64 +1739,6 @@ node_reclaim(struct ieee80211_node_table
}
/*
- * Reclaim a (bss) node. Decrement the refcnt and reclaim
- * the node if the only other reference to it is in the sta
- * table. This is effectively ieee80211_free_node followed
- * by node_reclaim when the refcnt is 1 (after the free).
- */
-static void
-ieee80211_node_reclaim(struct ieee80211_node *ni)
-{
- struct ieee80211_node_table *nt = ni->ni_table;
-
- KASSERT(nt != NULL, ("reclaim node not in table"));
-
-#ifdef IEEE80211_DEBUG_REFCNT
- IEEE80211_DPRINTF(ni->ni_vap, IEEE80211_MSG_NODE,
- "%s %p<%s> refcnt %d\n", __func__, ni,
- ether_sprintf(ni->ni_macaddr), ieee80211_node_refcnt(ni)-1);
-#endif
- IEEE80211_NODE_LOCK(nt);
- if (ieee80211_node_dectestref(ni)) {
- /*
- * Last reference, reclaim state.
- */
- _ieee80211_free_node(ni);
- nt = NULL;
- } else if (ieee80211_node_refcnt(ni) == 1 && nt->nt_keyixmap != NULL) {
- ieee80211_keyix keyix;
- /*
- * Check for a last reference in the key mapping table.
- */
- keyix = ni->ni_ucastkey.wk_rxkeyix;
- if (keyix < nt->nt_keyixmax &&
- nt->nt_keyixmap[keyix] == ni) {
- IEEE80211_DPRINTF(ni->ni_vap,
- IEEE80211_MSG_NODE,
- "%s: %p<%s> clear key map entry %u", __func__,
- ni, ether_sprintf(ni->ni_macaddr), keyix);
- nt->nt_keyixmap[keyix] = NULL;
- ieee80211_node_decref(ni); /* XXX needed? */
- _ieee80211_free_node(ni);
- nt = NULL;
- }
- }
- if (nt != NULL && ieee80211_node_refcnt(ni) == 1) {
- /*
- * Last reference is in the sta table; complete
- * the reclaim. This handles bss nodes being
- * recycled: the node has two references, one for
- * iv_bss and one for the table. After dropping
- * the iv_bss ref above we need to reclaim the sta
- * table reference.
- */
- ieee80211_node_decref(ni); /* NB: be pendantic */
- _ieee80211_free_node(ni);
- }
- IEEE80211_NODE_UNLOCK(nt);
-}
-
-/*
* Node table support.
*/
More information about the svn-src-projects
mailing list