Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 233067
b: refs/heads/master
c: 4334ec8
h: refs/heads/master
i:
  233065: 1f44423
  233063: b2d8ddd
v: v3
  • Loading branch information
Johannes Berg authored and John W. Linville committed Feb 2, 2011
1 parent 50c6325 commit 4b22a69
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ff458edc0c5ec42b299547fb7eb9790a4aecc632
refs/heads/master: 4334ec8518cec3f7a4feeb3dacb46acfb24904d4
2 changes: 2 additions & 0 deletions trunk/net/mac80211/cfg.c
Original file line number Diff line number Diff line change
Expand Up @@ -1822,6 +1822,7 @@ static int ieee80211_mgmt_tx(struct wiphy *wiphy, struct net_device *dev,
*cookie ^= 2;
IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_CTL_TX_OFFCHAN;
local->hw_roc_skb = skb;
local->hw_roc_skb_for_status = skb;
mutex_unlock(&local->mtx);

return 0;
Expand Down Expand Up @@ -1875,6 +1876,7 @@ static int ieee80211_mgmt_tx_cancel_wait(struct wiphy *wiphy,
if (ret == 0) {
kfree_skb(local->hw_roc_skb);
local->hw_roc_skb = NULL;
local->hw_roc_skb_for_status = NULL;
}

mutex_unlock(&local->mtx);
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/mac80211/ieee80211_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -953,7 +953,7 @@ struct ieee80211_local {

struct ieee80211_channel *hw_roc_channel;
struct net_device *hw_roc_dev;
struct sk_buff *hw_roc_skb;
struct sk_buff *hw_roc_skb, *hw_roc_skb_for_status;
struct work_struct hw_roc_start, hw_roc_done;
enum nl80211_channel_type hw_roc_channel_type;
unsigned int hw_roc_duration;
Expand Down
7 changes: 6 additions & 1 deletion trunk/net/mac80211/status.c
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,7 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)

if (info->flags & IEEE80211_TX_INTFL_NL80211_FRAME_TX) {
struct ieee80211_work *wk;
u64 cookie = (unsigned long)skb;

rcu_read_lock();
list_for_each_entry_rcu(wk, &local->work_list, list) {
Expand All @@ -334,8 +335,12 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
break;
}
rcu_read_unlock();
if (local->hw_roc_skb_for_status == skb) {
cookie = local->hw_roc_cookie ^ 2;
local->hw_roc_skb_for_status = NULL;
}
cfg80211_mgmt_tx_status(
skb->dev, (unsigned long) skb, skb->data, skb->len,
skb->dev, cookie, skb->data, skb->len,
!!(info->flags & IEEE80211_TX_STAT_ACK), GFP_ATOMIC);
}

Expand Down

0 comments on commit 4b22a69

Please sign in to comment.