Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Jan 2005 01:18:19 GMT
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 69340 for review
Message-ID:  <200501200118.j0K1IJ3I013579@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=69340

Change 69340 by sam@sam_ebb on 2005/01/20 01:17:33

	when a station is removed due to inactivity remove them from
	the table so they aren't considered again

Affected files ...

.. //depot/projects/wifi/sys/net80211/ieee80211_node.c#46 edit

Differences ...

==== //depot/projects/wifi/sys/net80211/ieee80211_node.c#46 (text+ko) ====

@@ -1698,6 +1698,7 @@
 void
 ieee80211_node_leave(struct ieee80211com *ic, struct ieee80211_node *ni)
 {
+	struct ieee80211_node_table *nt = ni->ni_table;
 
 	IEEE80211_DPRINTF(ic, IEEE80211_MSG_ASSOC | IEEE80211_MSG_DEBUG,
 	    "[%s] station with aid %d leaves\n",
@@ -1737,8 +1738,18 @@
 	 */
 	ieee80211_sta_leave(ic, ni);
 done:
-	ni->ni_inact_reload = ic->ic_inact_init;	/* just in case */
-	ieee80211_free_node(ni);
+	/*
+	 * Remove the node from any table it's recorded in and
+	 * drop the caller's reference.  Removal from the table
+	 * is important to insure the node is not reprocessed
+	 * for inactivity.
+	 */
+	if (nt != NULL) {
+		IEEE80211_NODE_LOCK(nt);
+		node_reclaim(nt, ni);
+		IEEE80211_NODE_UNLOCK(nt);
+	} else
+		ieee80211_free_node(ni);
 }
 
 u_int8_t



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200501200118.j0K1IJ3I013579>