[PATCH] mac80211: fixed injection in monitor mode

Gabriele Gristina
2009-10-16T02:10:13Z

I have a problem with mac80211 injection:
if i setup interface in monitor mode with iwconfig and i try to send a
custum 802.11 frame i see twice the packet in monitor interface.
The first packet is right, the second is different only in the radiotap
header: rtap len is fixed to 13 bytes...
If i setup interface with airmon-ng the packet is sended once but the
radiotap header is fixed to 13 bytes.

Patch for 2.6.31.4

--- net/mac80211/main.c.orig 2009-10-16 00:50:00.000000000 +0200
+++ net/mac80211/main.c 2009-10-15 23:06:03.000000000 +0200
@@ -607,6 +607,9 @@
skb->protocol = htons(ETH_P_802_2);
memset(skb->cb, 0, sizeof(skb->cb));

+ if (!(info->flags & IEEE80211_TX_CTL_REQ_TX_STATUS))
+ goto out_no_echo;
+
rcu_read_lock();
list_for_each_entry_rcu(sdata, &local->interfaces, list) {
if (sdata->vif.type == NL80211_IFTYPE_MONITOR) {
@@ -630,7 +633,8 @@
skb = NULL;
}
rcu_read_unlock();
- dev_kfree_skb(skb);
+out_no_echo:
+ if (skb) dev_kfree_skb(skb);
}
EXPORT_SYMBOL(ieee80211_tx_status);