diff options
author | David S. Miller <davem@davemloft.net> | 2010-12-10 09:50:47 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-12-10 09:50:47 -0800 |
commit | 1e13f863ca88014d9550876c05c939fdab1017d1 (patch) | |
tree | 1ede9804ee33d7eefb73e9535e0399dfd7f58c00 /net/mac80211/status.c | |
parent | f404c2fea37e02bec7c8b6edddf5edd22ca60505 (diff) | |
parent | f435d9eea01309aa7b6c1f134569a7b5957918ae (diff) |
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Conflicts:
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
Diffstat (limited to 'net/mac80211/status.c')
-rw-r--r-- | net/mac80211/status.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/net/mac80211/status.c b/net/mac80211/status.c index bed7e32ed90..4958710a7d9 100644 --- a/net/mac80211/status.c +++ b/net/mac80211/status.c @@ -321,10 +321,23 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) msecs_to_jiffies(10)); } - if (info->flags & IEEE80211_TX_INTFL_NL80211_FRAME_TX) + if (info->flags & IEEE80211_TX_INTFL_NL80211_FRAME_TX) { + struct ieee80211_work *wk; + + rcu_read_lock(); + list_for_each_entry_rcu(wk, &local->work_list, list) { + if (wk->type != IEEE80211_WORK_OFFCHANNEL_TX) + continue; + if (wk->offchan_tx.frame != skb) + continue; + wk->offchan_tx.frame = NULL; + break; + } + rcu_read_unlock(); cfg80211_mgmt_tx_status( skb->dev, (unsigned long) skb, skb->data, skb->len, !!(info->flags & IEEE80211_TX_STAT_ACK), GFP_ATOMIC); + } /* this was a transmitted frame, but now we want to reuse it */ skb_orphan(skb); |