X-Git-Url: http://git.ozo.com/?a=blobdiff_plain;f=net80211%2Fieee80211_power.c;h=0b0ba941dc2e50573489369718cafefe48dc0650;hb=e7f80f68cf8f17bba38ca3399c357e9964d12c91;hp=12bbfe857a9a1dd786fedc22dedfe95010b2e1b4;hpb=a08cab1f36b44eb147daf8c2a2e106fd136b7a28;p=madwifi%2F.git diff --git a/net80211/ieee80211_power.c b/net80211/ieee80211_power.c index 12bbfe8..0b0ba94 100644 --- a/net80211/ieee80211_power.c +++ b/net80211/ieee80211_power.c @@ -109,16 +109,15 @@ ieee80211_power_vdetach(struct ieee80211vap *vap) int ieee80211_node_saveq_drain(struct ieee80211_node *ni) { - struct ieee80211_cb *cb = NULL; struct sk_buff *skb; int qlen; IEEE80211_NODE_SAVEQ_LOCK_IRQ(ni); qlen = IEEE80211_NODE_SAVEQ_QLEN(ni); while ((skb = __skb_dequeue(&ni->ni_savedq)) != NULL) { - cb = (struct ieee80211_cb *) skb->cb; - ieee80211_unref_node(&cb->ni); - dev_kfree_skb_any(skb); + if (SKB_CB(skb)->ni != NULL) + ieee80211_unref_node(&SKB_CB(skb)->ni); + ieee80211_dev_kfree_skb(&skb); } IEEE80211_NODE_SAVEQ_UNLOCK_IRQ(ni); @@ -154,7 +153,9 @@ ieee80211_node_saveq_age(struct ieee80211_node *ni) "discard frame, age %u", M_AGE_GET(skb)); skb = __skb_dequeue(&ni->ni_savedq); - dev_kfree_skb_any(skb); + if (SKB_CB(skb)->ni != NULL) + ieee80211_unref_node(&SKB_CB(skb)->ni); + ieee80211_dev_kfree_skb(&skb); discard++; } if (skb != NULL) @@ -223,7 +224,9 @@ ieee80211_pwrsave(struct ieee80211_node *ni, struct sk_buff *skb) if (ieee80211_msg_dumppkts(vap)) ieee80211_dump_pkt(ni->ni_ic, skb->data, skb->len, -1, -1); #endif - dev_kfree_skb(skb); + if (SKB_CB(skb)->ni != NULL) + ieee80211_unref_node(&SKB_CB(skb)->ni); + ieee80211_dev_kfree_skb(&skb); return; } @@ -344,7 +347,7 @@ ieee80211_sta_pwrsave(struct ieee80211vap *vap, int enable) struct ieee80211_node *ni = vap->iv_bss; int qlen; - if (!(enable ^ IEEE80211_VAP_IS_SLEEPING(vap))) + if ((enable != 0) == (IEEE80211_VAP_IS_SLEEPING(vap) != 0)) return; IEEE80211_NOTE(vap, IEEE80211_MSG_POWER, ni,