From 909dc70af46f311f52d82f3924624fff05a15977 Mon Sep 17 00:00:00 2001 From: mtaylor Date: Wed, 16 Jan 2008 19:45:36 +0000 Subject: [PATCH] More changes merged over from madwifi-dfs that seem to have been missed git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@3161 0192ed92-7a03-0410-a25b-9323aeb14dbd --- net80211/ieee80211_debug.h | 2 +- net80211/ieee80211_monitor.c | 4 +++- net80211/ieee80211_output.c | 7 +++++++ net80211/ieee80211_power.c | 4 +++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/net80211/ieee80211_debug.h b/net80211/ieee80211_debug.h index d5d1e9a..ef7b032 100644 --- a/net80211/ieee80211_debug.h +++ b/net80211/ieee80211_debug.h @@ -78,7 +78,7 @@ enum { #ifdef IEEE80211_DEBUG #define ieee80211_msg_is_reported(_vap, m) \ - (!!(((_vap)->iv_debug) & (m))) + (!!(((_vap)->iv_debug | (_vap)->iv_ic->ic_debug) & (m))) #define IEEE80211_DPRINTF(_vap, _m, _fmt, ...) do { \ if (ieee80211_msg_is_reported(_vap, _m)) \ ieee80211_note(_vap, _fmt, __VA_ARGS__); \ diff --git a/net80211/ieee80211_monitor.c b/net80211/ieee80211_monitor.c index 37bfe38..ceea0c9 100644 --- a/net80211/ieee80211_monitor.c +++ b/net80211/ieee80211_monitor.c @@ -303,7 +303,9 @@ ieee80211_input_monitor(struct ieee80211com *ic, struct sk_buff *skb, { struct ieee80211vap *vap, *next; struct ath_desc *ds = bf->bf_desc; - int noise = 0, antenna = 0, ieeerate = 0; + int noise = 0; + int antenna = 0; + int ieeerate = 0; u_int32_t rssi = 0; u_int8_t pkttype = 0; unsigned int mon_hdrspace = A_MAX(sizeof(struct ath_tx_radiotap_header), diff --git a/net80211/ieee80211_output.c b/net80211/ieee80211_output.c index a07d4dc..28b723d 100644 --- a/net80211/ieee80211_output.c +++ b/net80211/ieee80211_output.c @@ -608,6 +608,13 @@ ieee80211_skbhdr_adjust(struct ieee80211vap *vap, int hdrsize, need_tailroom += cip->ic_miclen; } + if (skb_shared(skb)) { + /* Take our own reference to the node in the clone */ + ieee80211_ref_node(SKB_CB(skb)->ni); + /* Unshare the node, decrementing users in the old skb */ + skb = skb_unshare(skb, GFP_ATOMIC); + } + #ifdef ATH_SUPERG_FF if (isff) { if (skb == NULL) { diff --git a/net80211/ieee80211_power.c b/net80211/ieee80211_power.c index d51bfe3..277e8c2 100644 --- a/net80211/ieee80211_power.c +++ b/net80211/ieee80211_power.c @@ -231,7 +231,9 @@ ieee80211_pwrsave(struct sk_buff *skb) if (ieee80211_msg_dumppkts(vap)) ieee80211_dump_pkt(ni->ni_ic, skb->data, skb->len, -1, -1); #endif - ieee80211_unref_node(&SKB_CB(skb)->ni); + if (SKB_CB(skb)->ni != NULL) + ieee80211_unref_node(&SKB_CB(skb)->ni); + ieee80211_dev_kfree_skb(&skb); return NETDEV_TX_BUSY; } -- 2.35.1