Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F162562613
D37529.id113648.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
12 KB
Referenced Files
None
Subscribers
None
D37529.id113648.diff
View Options
diff --git a/sys/amd64/conf/NOTES b/sys/amd64/conf/NOTES
--- a/sys/amd64/conf/NOTES
+++ b/sys/amd64/conf/NOTES
@@ -380,6 +380,9 @@
device iwn6050fw
device wpifw
+# net80211 options
+options IEEE80211_DEBUG_REFCNT
+
#
# Non-Transparent Bridge (NTB) drivers
#
diff --git a/sys/net80211/ieee80211_node.h b/sys/net80211/ieee80211_node.h
--- a/sys/net80211/ieee80211_node.h
+++ b/sys/net80211/ieee80211_node.h
@@ -407,71 +407,54 @@
struct ieee80211_node *ieee80211_node_create_wds(struct ieee80211vap *,
const uint8_t bssid[IEEE80211_ADDR_LEN],
struct ieee80211_channel *);
-#ifdef IEEE80211_DEBUG_REFCNT
-void ieee80211_free_node_debug(struct ieee80211_node *,
+
+/* These functions are taking __func__, __LINE__ for IEEE80211_DEBUG_REFCNT */
+void _ieee80211_free_node(struct ieee80211_node *,
const char *func, int line);
-struct ieee80211_node *ieee80211_find_node_locked_debug(
+struct ieee80211_node *_ieee80211_find_node_locked(
struct ieee80211_node_table *,
const uint8_t macaddr[IEEE80211_ADDR_LEN],
const char *func, int line);
-struct ieee80211_node *ieee80211_find_node_debug(struct ieee80211_node_table *,
+struct ieee80211_node *_ieee80211_find_node(struct ieee80211_node_table *,
const uint8_t macaddr[IEEE80211_ADDR_LEN],
const char *func, int line);
-struct ieee80211_node *ieee80211_find_vap_node_locked_debug(
+struct ieee80211_node *_ieee80211_find_vap_node_locked(
struct ieee80211_node_table *,
const struct ieee80211vap *vap,
const uint8_t macaddr[IEEE80211_ADDR_LEN],
const char *func, int line);
-struct ieee80211_node *ieee80211_find_vap_node_debug(
+struct ieee80211_node *_ieee80211_find_vap_node(
struct ieee80211_node_table *,
const struct ieee80211vap *vap,
const uint8_t macaddr[IEEE80211_ADDR_LEN],
const char *func, int line);
-struct ieee80211_node * ieee80211_find_rxnode_debug(struct ieee80211com *,
+struct ieee80211_node *_ieee80211_find_rxnode(struct ieee80211com *,
const struct ieee80211_frame_min *,
const char *func, int line);
-struct ieee80211_node * ieee80211_find_rxnode_withkey_debug(
+struct ieee80211_node *_ieee80211_find_rxnode_withkey(
struct ieee80211com *,
const struct ieee80211_frame_min *, uint16_t keyix,
const char *func, int line);
-struct ieee80211_node *ieee80211_find_txnode_debug(struct ieee80211vap *,
+struct ieee80211_node *_ieee80211_find_txnode(struct ieee80211vap *,
const uint8_t *,
const char *func, int line);
#define ieee80211_free_node(ni) \
- ieee80211_free_node_debug(ni, __func__, __LINE__)
+ _ieee80211_free_node(ni, __func__, __LINE__)
#define ieee80211_find_node_locked(nt, mac) \
- ieee80211_find_node_locked_debug(nt, mac, __func__, __LINE__)
+ _ieee80211_find_node_locked(nt, mac, __func__, __LINE__)
#define ieee80211_find_node(nt, mac) \
- ieee80211_find_node_debug(nt, mac, __func__, __LINE__)
+ _ieee80211_find_node(nt, mac, __func__, __LINE__)
#define ieee80211_find_vap_node_locked(nt, vap, mac) \
- ieee80211_find_vap_node_locked_debug(nt, vap, mac, __func__, __LINE__)
+ _ieee80211_find_vap_node_locked(nt, vap, mac, __func__, __LINE__)
#define ieee80211_find_vap_node(nt, vap, mac) \
- ieee80211_find_vap_node_debug(nt, vap, mac, __func__, __LINE__)
+ _ieee80211_find_vap_node(nt, vap, mac, __func__, __LINE__)
#define ieee80211_find_rxnode(ic, wh) \
- ieee80211_find_rxnode_debug(ic, wh, __func__, __LINE__)
+ _ieee80211_find_rxnode(ic, wh, __func__, __LINE__)
#define ieee80211_find_rxnode_withkey(ic, wh, keyix) \
- ieee80211_find_rxnode_withkey_debug(ic, wh, keyix, __func__, __LINE__)
+ _ieee80211_find_rxnode_withkey(ic, wh, keyix, __func__, __LINE__)
#define ieee80211_find_txnode(vap, mac) \
- ieee80211_find_txnode_debug(vap, mac, __func__, __LINE__)
-#else
-void ieee80211_free_node(struct ieee80211_node *);
-struct ieee80211_node *ieee80211_find_node_locked(struct ieee80211_node_table *,
- const uint8_t macaddr[IEEE80211_ADDR_LEN]);
-struct ieee80211_node *ieee80211_find_node(struct ieee80211_node_table *,
- const uint8_t macaddr[IEEE80211_ADDR_LEN]);
-struct ieee80211_node *ieee80211_find_vap_node_locked(
- struct ieee80211_node_table *, const struct ieee80211vap *,
- const uint8_t macaddr[IEEE80211_ADDR_LEN]);
-struct ieee80211_node *ieee80211_find_vap_node(
- struct ieee80211_node_table *, const struct ieee80211vap *,
- const uint8_t macaddr[IEEE80211_ADDR_LEN]);
-struct ieee80211_node * ieee80211_find_rxnode(struct ieee80211com *,
- const struct ieee80211_frame_min *);
-struct ieee80211_node * ieee80211_find_rxnode_withkey(struct ieee80211com *,
- const struct ieee80211_frame_min *, uint16_t keyix);
-struct ieee80211_node *ieee80211_find_txnode(struct ieee80211vap *,
- const uint8_t macaddr[IEEE80211_ADDR_LEN]);
-#endif
+ _ieee80211_find_txnode(vap, mac, __func__, __LINE__)
+
int ieee80211_node_delucastkey(struct ieee80211_node *);
void ieee80211_node_timeout(void *arg);
diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c
--- a/sys/net80211/ieee80211_node.c
+++ b/sys/net80211/ieee80211_node.c
@@ -59,6 +59,12 @@
#include <net/bpf.h>
+#ifdef IEEE80211_DEBUG_REFCNT
+#define __debrefcnt_used
+#else
+#define __debrefcnt_used __unused
+#endif
+
/*
* IEEE80211_NODE_HASHSIZE must be a power of 2.
*/
@@ -89,7 +95,7 @@
static void node_getmimoinfo(const struct ieee80211_node *,
struct ieee80211_mimo_info *);
-static void _ieee80211_free_node(struct ieee80211_node *);
+static void __ieee80211_free_node(struct ieee80211_node *);
static void node_reclaim(struct ieee80211_node_table *nt,
struct ieee80211_node *ni);
@@ -1436,7 +1442,7 @@
vap->iv_stats.is_rx_nodealloc++;
ieee80211_psq_cleanup(&ni->ni_psq);
ieee80211_ratectl_node_deinit(ni);
- _ieee80211_free_node(ni);
+ __ieee80211_free_node(ni);
return NULL;
}
@@ -1488,7 +1494,7 @@
vap->iv_stats.is_rx_nodealloc++;
ieee80211_psq_cleanup(&ni->ni_psq);
ieee80211_ratectl_node_deinit(ni);
- _ieee80211_free_node(ni);
+ __ieee80211_free_node(ni);
return NULL;
}
@@ -1586,13 +1592,9 @@
}
struct ieee80211_node *
-#ifdef IEEE80211_DEBUG_REFCNT
-ieee80211_find_node_locked_debug(struct ieee80211_node_table *nt,
- const uint8_t macaddr[IEEE80211_ADDR_LEN], const char *func, int line)
-#else
-ieee80211_find_node_locked(struct ieee80211_node_table *nt,
- const uint8_t macaddr[IEEE80211_ADDR_LEN])
-#endif
+_ieee80211_find_node_locked(struct ieee80211_node_table *nt,
+ const uint8_t macaddr[IEEE80211_ADDR_LEN],
+ const char *func __debrefcnt_used, int line __debrefcnt_used)
{
struct ieee80211_node *ni;
int hash;
@@ -1617,32 +1619,22 @@
}
struct ieee80211_node *
-#ifdef IEEE80211_DEBUG_REFCNT
-ieee80211_find_node_debug(struct ieee80211_node_table *nt,
- const uint8_t macaddr[IEEE80211_ADDR_LEN], const char *func, int line)
-#else
-ieee80211_find_node(struct ieee80211_node_table *nt,
- const uint8_t macaddr[IEEE80211_ADDR_LEN])
-#endif
+_ieee80211_find_node(struct ieee80211_node_table *nt,
+ const uint8_t macaddr[IEEE80211_ADDR_LEN],
+ const char *func __debrefcnt_used, int line __debrefcnt_used)
{
struct ieee80211_node *ni;
IEEE80211_NODE_LOCK(nt);
- ni = ieee80211_find_node_locked(nt, macaddr);
+ ni = _ieee80211_find_node_locked(nt, macaddr, func, line);
IEEE80211_NODE_UNLOCK(nt);
return ni;
}
struct ieee80211_node *
-#ifdef IEEE80211_DEBUG_REFCNT
-ieee80211_find_vap_node_locked_debug(struct ieee80211_node_table *nt,
- const struct ieee80211vap *vap,
- const uint8_t macaddr[IEEE80211_ADDR_LEN], const char *func, int line)
-#else
-ieee80211_find_vap_node_locked(struct ieee80211_node_table *nt,
- const struct ieee80211vap *vap,
- const uint8_t macaddr[IEEE80211_ADDR_LEN])
-#endif
+_ieee80211_find_vap_node_locked(struct ieee80211_node_table *nt,
+ const struct ieee80211vap *vap, const uint8_t macaddr[IEEE80211_ADDR_LEN],
+ const char *func __debrefcnt_used, int line __debrefcnt_used)
{
struct ieee80211_node *ni;
int hash;
@@ -1668,20 +1660,14 @@
}
struct ieee80211_node *
-#ifdef IEEE80211_DEBUG_REFCNT
-ieee80211_find_vap_node_debug(struct ieee80211_node_table *nt,
- const struct ieee80211vap *vap,
- const uint8_t macaddr[IEEE80211_ADDR_LEN], const char *func, int line)
-#else
-ieee80211_find_vap_node(struct ieee80211_node_table *nt,
- const struct ieee80211vap *vap,
- const uint8_t macaddr[IEEE80211_ADDR_LEN])
-#endif
+_ieee80211_find_vap_node(struct ieee80211_node_table *nt,
+ const struct ieee80211vap *vap, const uint8_t macaddr[IEEE80211_ADDR_LEN],
+ const char *func __debrefcnt_used, int line __debrefcnt_used)
{
struct ieee80211_node *ni;
IEEE80211_NODE_LOCK(nt);
- ni = ieee80211_find_vap_node_locked(nt, vap, macaddr);
+ ni = _ieee80211_find_vap_node_locked(nt, vap, macaddr, func, line);
IEEE80211_NODE_UNLOCK(nt);
return ni;
}
@@ -1933,11 +1919,12 @@
static __inline struct ieee80211_node *
_find_rxnode(struct ieee80211_node_table *nt,
- const struct ieee80211_frame_min *wh)
+ const struct ieee80211_frame_min *wh,
+ const char *func __debrefcnt_used, int line __debrefcnt_used)
{
if (IS_BCAST_PROBEREQ(wh))
return NULL; /* spam bcast probe req to all vap's */
- return ieee80211_find_node_locked(nt, wh->i_addr2);
+ return _ieee80211_find_node_locked(nt, wh->i_addr2, func, line);
}
/*
@@ -1946,20 +1933,16 @@
* we can return NULL if the sender is not in the table.
*/
struct ieee80211_node *
-#ifdef IEEE80211_DEBUG_REFCNT
-ieee80211_find_rxnode_debug(struct ieee80211com *ic,
- const struct ieee80211_frame_min *wh, const char *func, int line)
-#else
-ieee80211_find_rxnode(struct ieee80211com *ic,
- const struct ieee80211_frame_min *wh)
-#endif
+_ieee80211_find_rxnode(struct ieee80211com *ic,
+ const struct ieee80211_frame_min *wh,
+ const char *func __debrefcnt_used, int line __debrefcnt_used)
{
struct ieee80211_node_table *nt;
struct ieee80211_node *ni;
nt = &ic->ic_sta;
IEEE80211_NODE_LOCK(nt);
- ni = _find_rxnode(nt, wh);
+ ni = _find_rxnode(nt, wh, func, line);
IEEE80211_NODE_UNLOCK(nt);
return ni;
@@ -1974,14 +1957,9 @@
* key assigned to it.
*/
struct ieee80211_node *
-#ifdef IEEE80211_DEBUG_REFCNT
-ieee80211_find_rxnode_withkey_debug(struct ieee80211com *ic,
- const struct ieee80211_frame_min *wh, ieee80211_keyix keyix,
- const char *func, int line)
-#else
-ieee80211_find_rxnode_withkey(struct ieee80211com *ic,
- const struct ieee80211_frame_min *wh, ieee80211_keyix keyix)
-#endif
+_ieee80211_find_rxnode_withkey(struct ieee80211com *ic,
+ const struct ieee80211_frame_min *wh, ieee80211_keyix keyix,
+ const char *func __debrefcnt_used, int line __debrefcnt_used)
{
struct ieee80211_node_table *nt;
struct ieee80211_node *ni;
@@ -1993,7 +1971,7 @@
else
ni = NULL;
if (ni == NULL) {
- ni = _find_rxnode(nt, wh);
+ ni = _find_rxnode(nt, wh, func, line);
if (ni != NULL && nt->nt_keyixmap != NULL) {
/*
* If the station has a unicast key cache slot
@@ -2029,14 +2007,9 @@
* a data frame. This handles node discovery in adhoc networks.
*/
struct ieee80211_node *
-#ifdef IEEE80211_DEBUG_REFCNT
-ieee80211_find_txnode_debug(struct ieee80211vap *vap,
- const uint8_t macaddr[IEEE80211_ADDR_LEN],
- const char *func, int line)
-#else
-ieee80211_find_txnode(struct ieee80211vap *vap,
- const uint8_t macaddr[IEEE80211_ADDR_LEN])
-#endif
+_ieee80211_find_txnode(struct ieee80211vap *vap,
+ const uint8_t macaddr[IEEE80211_ADDR_LEN],
+ const char *func __debrefcnt_used, int line __debrefcnt_used)
{
struct ieee80211_node_table *nt = &vap->iv_ic->ic_sta;
struct ieee80211_node *ni;
@@ -2054,7 +2027,7 @@
IEEE80211_IS_MULTICAST(macaddr))
ni = ieee80211_ref_node(vap->iv_bss);
else
- ni = ieee80211_find_node_locked(nt, macaddr);
+ ni = _ieee80211_find_node_locked(nt, macaddr, func, line);
IEEE80211_NODE_UNLOCK(nt);
if (ni == NULL) {
@@ -2083,7 +2056,7 @@
}
static void
-_ieee80211_free_node(struct ieee80211_node *ni)
+__ieee80211_free_node(struct ieee80211_node *ni)
{
struct ieee80211_node_table *nt = ni->ni_table;
@@ -2132,11 +2105,8 @@
}
void
-#ifdef IEEE80211_DEBUG_REFCNT
-ieee80211_free_node_debug(struct ieee80211_node *ni, const char *func, int line)
-#else
-ieee80211_free_node(struct ieee80211_node *ni)
-#endif
+_ieee80211_free_node(struct ieee80211_node *ni,
+ const char *func __debrefcnt_used, int line __debrefcnt_used)
{
struct ieee80211_node_table *nt = ni->ni_table;
@@ -2151,14 +2121,14 @@
/*
* Last reference, reclaim state.
*/
- _ieee80211_free_node(ni);
+ __ieee80211_free_node(ni);
} else if (ieee80211_node_refcnt(ni) == 1)
if (node_clear_keyixmap(nt, ni))
- _ieee80211_free_node(ni);
+ __ieee80211_free_node(ni);
IEEE80211_NODE_UNLOCK(nt);
} else {
if (ieee80211_node_dectestref(ni))
- _ieee80211_free_node(ni);
+ __ieee80211_free_node(ni);
}
}
@@ -2246,7 +2216,7 @@
*/
ieee80211_del_node_nt(nt, ni);
} else
- _ieee80211_free_node(ni);
+ __ieee80211_free_node(ni);
}
/*
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jul 15, 2:18 PM (6 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35085115
Default Alt Text
D37529.id113648.diff (12 KB)
Attached To
Mode
D37529: net80211: try to fix IEEE80211_DEBUG_REFCNT builds
Attached
Detach File
Event Timeline
Log In to Comment