More changes merged over from madwifi-dfs that seem to have been missed
authormtaylor <mtaylor@0192ed92-7a03-0410-a25b-9323aeb14dbd>
Wed, 16 Jan 2008 19:45:36 +0000 (19:45 +0000)
committermtaylor <mtaylor@0192ed92-7a03-0410-a25b-9323aeb14dbd>
Wed, 16 Jan 2008 19:45:36 +0000 (19:45 +0000)
git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@3161 0192ed92-7a03-0410-a25b-9323aeb14dbd

net80211/ieee80211_debug.h
net80211/ieee80211_monitor.c
net80211/ieee80211_output.c
net80211/ieee80211_power.c

index d5d1e9afcfb9616a943c3e7655221dddb8e7801d..ef7b03297e1c101cb2f17bdc52bc3b85eaf3acf0 100644 (file)
@@ -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__);                \
index 37bfe38e0fbdf9e6f04e7232db8d3987cd98a465..ceea0c92ee7ae3ec5496f0a4686a50a6bc248424 100644 (file)
@@ -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),
index a07d4dc0526885a2930a4378928b49214b09eb25..28b723dd42833eb24f63ce794df76b4fa5e10039 100644 (file)
@@ -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) {
index d51bfe39544b6fba4a037cef4a4e170ae6f25736..277e8c2cb4da3caa9c525c54943bc93c1085baf8 100644 (file)
@@ -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;
        }