diff options
| author | Patrick McHardy <kaber@trash.net> | 2010-04-20 16:02:01 +0200 | 
|---|---|---|
| committer | Patrick McHardy <kaber@trash.net> | 2010-04-20 16:02:01 +0200 | 
| commit | 62910554656cdcd6b6f84a5154c4155aae4ca231 (patch) | |
| tree | dcf14004f6fd2ef7154362ff948bfeba0f3ea92d /net/mac80211/status.c | |
| parent | 22265a5c3c103cf8c50be62e6c90d045eb649e6d (diff) | |
| parent | ab9304717f7624c41927f442e6b6d418b2d8b3e4 (diff) | |
| download | olio-linux-3.10-62910554656cdcd6b6f84a5154c4155aae4ca231.tar.xz olio-linux-3.10-62910554656cdcd6b6f84a5154c4155aae4ca231.zip  | |
Merge branch 'master' of /repos/git/net-next-2.6
Conflicts:
	Documentation/feature-removal-schedule.txt
	net/ipv6/netfilter/ip6t_REJECT.c
	net/netfilter/xt_limit.c
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/mac80211/status.c')
| -rw-r--r-- | net/mac80211/status.c | 14 | 
1 files changed, 7 insertions, 7 deletions
diff --git a/net/mac80211/status.c b/net/mac80211/status.c index 56d5b9a6ec5..11805a3a626 100644 --- a/net/mac80211/status.c +++ b/net/mac80211/status.c @@ -171,7 +171,7 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)  	struct net_device *prev_dev = NULL;  	struct sta_info *sta, *tmp;  	int retry_count = -1, i; -	bool injected; +	bool send_to_cooked;  	for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {  		/* the HW cannot have attempted that rate */ @@ -296,11 +296,15 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)  	/* this was a transmitted frame, but now we want to reuse it */  	skb_orphan(skb); +	/* Need to make a copy before skb->cb gets cleared */ +	send_to_cooked = !!(info->flags & IEEE80211_TX_CTL_INJECTED) || +			(type != IEEE80211_FTYPE_DATA); +  	/*  	 * This is a bit racy but we can avoid a lot of work  	 * with this test...  	 */ -	if (!local->monitors && !local->cooked_mntrs) { +	if (!local->monitors && (!send_to_cooked || !local->cooked_mntrs)) {  		dev_kfree_skb(skb);  		return;  	} @@ -345,9 +349,6 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)  	/* for now report the total retry_count */  	rthdr->data_retries = retry_count; -	/* Need to make a copy before skb->cb gets cleared */ -	injected = !!(info->flags & IEEE80211_TX_CTL_INJECTED); -  	/* XXX: is this sufficient for BPF? */  	skb_set_mac_header(skb, 0);  	skb->ip_summed = CHECKSUM_UNNECESSARY; @@ -362,8 +363,7 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)  				continue;  			if ((sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES) && -			    !injected && -			    (type == IEEE80211_FTYPE_DATA)) +			    !send_to_cooked)  				continue;  			if (prev_dev) {  |