diff mbox

mac80211: Fix TX status reporting for injected data frames

Message ID 20091129122942.GA21310@jm.kir.nu (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Jouni Malinen Nov. 29, 2009, 12:29 p.m. UTC
None
diff mbox

Patch

--- uml.orig/net/mac80211/status.c	2009-11-29 13:33:16.000000000 +0200
+++ uml/net/mac80211/status.c	2009-11-29 14:15:50.000000000 +0200
@@ -148,6 +148,7 @@  void ieee80211_tx_status(struct ieee8021
 	struct net_device *prev_dev = NULL;
 	struct sta_info *sta;
 	int retry_count = -1, i;
+	bool injected;
 
 	for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) {
 		/* the HW cannot have attempted that rate */
@@ -297,6 +298,9 @@  void ieee80211_tx_status(struct ieee8021
 	/* 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;
@@ -311,7 +315,7 @@  void ieee80211_tx_status(struct ieee8021
 				continue;
 
 			if ((sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES) &&
-			    !(info->flags & IEEE80211_TX_CTL_INJECTED) &&
+			    !injected &&
 			    (type == IEEE80211_FTYPE_DATA))
 				continue;