PERFORCE change 64071 for review
Sam Leffler
sam at FreeBSD.org
Mon Nov 1 14:54:47 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=64071
Change 64071 by sam at 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__
More information about the p4-projects
mailing list