Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Nov 2004 22:54:46 GMT
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 64071 for review
Message-ID:  <200411012254.iA1MskAE066236@repoman.freebsd.org>

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

Change 64071 by sam@sam_ebb on 2004/11/01 22:54:04

	save refcnt debugging stuff; may not want to keep this longterm

Affected files ...

.. //depot/projects/wifi/sys/net80211/ieee80211_node.c#7 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_node.h#6 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_output.c#6 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_var.h#5 edit

Differences ...

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

@@ -716,7 +716,12 @@
 }
 
 static struct ieee80211_node *
+#ifdef IEEE80211_DEBUG_REFCNT
+_ieee80211_find_node_debug(struct ieee80211com *ic, u_int8_t *macaddr,
+	const char *func, int line)
+#else
 _ieee80211_find_node(struct ieee80211com *ic, u_int8_t *macaddr)
+#endif
 {
 	struct ieee80211_node *ni;
 	int hash;
@@ -727,14 +732,31 @@
 	LIST_FOREACH(ni, &ic->ic_hash[hash], ni_hash) {
 		if (IEEE80211_ADDR_EQ(ni->ni_macaddr, macaddr)) {
 			ieee80211_ref_node(ni);	/* mark referenced */
+			IEEE80211_DPRINTF(ic, IEEE80211_MSG_NODE,
+#ifdef IEEE80211_DEBUG_REFCNT
+			    "%s (%s:%u) %s refcnt %d\n", __func__, func, line,
+#else
+			    "%s %s refcnt %d\n", __func__,
+#endif
+			     ether_sprintf(ni->ni_macaddr),
+			     ieee80211_node_refcnt(ni));
 			return ni;
 		}
 	}
 	return NULL;
 }
+#ifdef IEEE80211_DEBUG_REFCNT
+#define	_ieee80211_find_node(ic, mac) \
+	_ieee80211_find_node_debug(ic, mac, func, line)
+#endif
 
 struct ieee80211_node *
+#ifdef IEEE80211_DEBUG_REFCNT
+ieee80211_find_node_debug(struct ieee80211com *ic, u_int8_t *macaddr,
+	const char *func, int line)
+#else
 ieee80211_find_node(struct ieee80211com *ic, u_int8_t *macaddr)
+#endif
 {
 	struct ieee80211_node *ni;
 
@@ -749,7 +771,12 @@
  * a data frame.  This handles node discovery in adhoc networks.
  */
 struct ieee80211_node *
+#ifdef IEEE80211_DEBUG_REFCNT
+ieee80211_find_txnode_debug(struct ieee80211com *ic, u_int8_t *macaddr,
+	const char *func, int line)
+#else
 ieee80211_find_txnode(struct ieee80211com *ic, u_int8_t *macaddr)
+#endif
 {
 	struct ieee80211_node *ni;
 
@@ -794,8 +821,14 @@
  * Like find but search based on the channel too.
  */
 struct ieee80211_node *
-ieee80211_find_node_with_channel(struct ieee80211com *ic, u_int8_t *macaddr,
-	struct ieee80211_channel *chan)
+#ifdef IEEE80211_DEBUG_REFCNT
+ieee80211_find_node_with_channel_debug(struct ieee80211com *ic,
+	u_int8_t *macaddr, struct ieee80211_channel *chan,
+	const char *func, int line)
+#else
+ieee80211_find_node_with_channel(struct ieee80211com *ic,
+	u_int8_t *macaddr, struct ieee80211_channel *chan)
+#endif
 {
 	struct ieee80211_node *ni;
 	int hash;
@@ -806,6 +839,14 @@
 		if (IEEE80211_ADDR_EQ(ni->ni_macaddr, macaddr) &&
 		    ni->ni_chan == chan) {
 			ieee80211_ref_node(ni);		/* mark referenced */
+			IEEE80211_DPRINTF(ic, IEEE80211_MSG_NODE,
+#ifdef IEEE80211_DEBUG_REFCNT
+			    "%s (%s:%u) %s refcnt %d\n", __func__, func, line,
+#else
+			    "%s %s refcnt %d\n", __func__,
+#endif
+			     ether_sprintf(ni->ni_macaddr),
+			     ieee80211_node_refcnt(ni));
 			break;
 		}
 	}
@@ -817,8 +858,13 @@
  * Like find but search based on the ssid too.
  */
 struct ieee80211_node *
+#ifdef IEEE80211_DEBUG_REFCNT
+ieee80211_find_node_with_ssid_debug(struct ieee80211com *ic, u_int8_t *macaddr,
+	u_int ssidlen, const u_int8_t *ssid, const char *func, int line)
+#else
 ieee80211_find_node_with_ssid(struct ieee80211com *ic, u_int8_t *macaddr,
 	u_int ssidlen, const u_int8_t *ssid)
+#endif
 {
 	struct ieee80211_node *ni;
 	int hash;
@@ -830,6 +876,14 @@
 		    ni->ni_esslen == ic->ic_des_esslen &&
 		    memcmp(ni->ni_essid, ic->ic_des_essid, ni->ni_esslen) == 0) {
 			ieee80211_ref_node(ni);		/* mark referenced */
+			IEEE80211_DPRINTF(ic, IEEE80211_MSG_NODE,
+#ifdef IEEE80211_DEBUG_REFCNT
+			    "%s (%s:%u) %s refcnt %d\n", __func__, func, line,
+#else
+			    "%s %s refcnt %d\n", __func__,
+#endif
+			     ether_sprintf(ni->ni_macaddr),
+			     ieee80211_node_refcnt(ni));
 			break;
 		}
 	}
@@ -863,13 +917,22 @@
 }
 
 void
+#ifdef IEEE80211_DEBUG_REFCNT
+ieee80211_free_node_debug(struct ieee80211com *ic, struct ieee80211_node *ni,
+	const char *func, int line)
+#else
 ieee80211_free_node(struct ieee80211com *ic, struct ieee80211_node *ni)
+#endif
 {
 	KASSERT(ni != ic->ic_bss, ("freeing ic_bss"));
 
 	IEEE80211_DPRINTF(ic, IEEE80211_MSG_NODE,
+#ifdef IEEE80211_DEBUG_REFCNT
+		"%s (%s:%u) %s refcnt %d\n", __func__, func, line,
+#else
 		"%s %s refcnt %d\n", __func__,
-		 ether_sprintf(ni->ni_macaddr), ieee80211_node_refcnt(ni));
+#endif
+		 ether_sprintf(ni->ni_macaddr), ieee80211_node_refcnt(ni)-1);
 	if (ieee80211_node_dectestref(ni)) {
 		IEEE80211_NODE_LOCK(ic);
 		_ieee80211_free_node(ic, ni);
@@ -1185,6 +1248,10 @@
 ieee80211_node_leave(struct ieee80211com *ic, struct ieee80211_node *ni)
 {
 
+	IEEE80211_DPRINTF(ic, IEEE80211_MSG_ASSOC | IEEE80211_MSG_DEBUG,
+		"station %s with aid %d leaves\n",
+		ether_sprintf(ni->ni_macaddr), IEEE80211_NODE_AID(ni));
+
 	KASSERT(ic->ic_opmode == IEEE80211_M_HOSTAP,
 		("not in ap mode, mode %u", ic->ic_opmode));
 	/*

==== //depot/projects/wifi/sys/net80211/ieee80211_node.h#6 (text+ko) ====

@@ -208,6 +208,30 @@
 		u_int8_t *);
 extern	struct ieee80211_node *ieee80211_dup_bss(struct ieee80211com *,
 		u_int8_t *);
+#ifdef IEEE80211_DEBUG_REFCNT
+extern	void ieee80211_free_node_debug(struct ieee80211com *,
+		struct ieee80211_node *, const char *func, int line);
+extern	struct ieee80211_node *ieee80211_find_node_debug(struct ieee80211com *,
+		u_int8_t *, const char *func, int line);
+extern	struct ieee80211_node *ieee80211_find_txnode_debug(
+		struct ieee80211com *, u_int8_t *, const char *func, int line);
+extern	struct ieee80211_node *ieee80211_find_node_with_channel_debug(
+		struct ieee80211com *, u_int8_t *macaddr,
+		struct ieee80211_channel *, const char *func, int line);
+extern	struct ieee80211_node *ieee80211_find_node_with_ssid_debug(
+		struct ieee80211com *, u_int8_t *macaddr, u_int ssidlen,
+		const u_int8_t *ssid, const char *func, int line);
+#define	ieee80211_free_node(ic, ni) \
+	ieee80211_free_node_debug(ic, ni, __func__, __LINE__)
+#define	ieee80211_find_node(ic, mac) \
+	ieee80211_find_node_debug(ic, mac, __func__, __LINE__)
+#define	ieee80211_find_txnode(ic, mac) \
+	ieee80211_find_txnode_debug(ic, mac, __func__, __LINE__)
+#define	ieee80211_find_node_with_channel(ic, mac, c) \
+	ieee80211_find_node_with_channel_debug(ic, mac, c, __func__, __LINE__)
+#define	ieee80211_find_node_with_ssid(ic, mac, sl, ss) \
+	ieee80211_find_node_with_ssid_debug(ic, mac, sl, ss, __func__, __LINE__)
+#else
 extern	struct ieee80211_node *ieee80211_find_node(struct ieee80211com *,
 		u_int8_t *);
 extern	struct ieee80211_node *ieee80211_find_txnode(struct ieee80211com *,
@@ -220,6 +244,8 @@
 		const u_int8_t *ssid);
 extern	void ieee80211_free_node(struct ieee80211com *,
 		struct ieee80211_node *);
+#endif
+
 extern	void ieee80211_free_allnodes(struct ieee80211com *);
 
 typedef void ieee80211_iter_func(void *, struct ieee80211_node *);

==== //depot/projects/wifi/sys/net80211/ieee80211_output.c#6 (text+ko) ====

@@ -776,8 +776,14 @@
 	 * the xmit is complete all the way in the driver.  On error we
 	 * will remove our reference.
 	 */
-	if (ni != ic->ic_bss)
+	if (ni != ic->ic_bss) {
+		IEEE80211_DPRINTF(ic, IEEE80211_MSG_NODE,
+			"ieee80211_ref_node (%s:%u) %s refcnt %d\n",
+			__func__, __LINE__,
+			 ether_sprintf(ni->ni_macaddr),
+			 ieee80211_node_refcnt(ni)+1);
 		ieee80211_ref_node(ni);
+	}
 	timer = 0;
 	switch (type) {
 	case IEEE80211_FC0_SUBTYPE_PROBE_REQ:

==== //depot/projects/wifi/sys/net80211/ieee80211_var.h#5 (text+ko) ====

@@ -38,6 +38,7 @@
  * Definitions for IEEE 802.11 drivers.
  */
 #define	IEEE80211_DEBUG
+#undef	IEEE80211_DEBUG_REFCNT			/* node refcnt stuff */
 
 /* NB: portability glue must go first */
 #ifdef __NetBSD__



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