Search Linux Wireless

[PATCH v3] 802.11n frame injection

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Allow to set the tx rate and retries when injecting:
read the information from the radiotap header and populate the retry chain

Signed-off-by: Matteo Croce <matteo@xxxxxxxxxxx>

--- a/net/mac80211/tx.c	2011-06-01 21:04:32.000000000 +0200
+++ b/net/mac80211/tx.c	2011-06-04 19:38:36.356443309 +0200
@@ -1092,6 +1092,46 @@
 				tx->flags |= IEEE80211_TX_FRAGMENTED;
 			break;

+		case IEEE80211_RADIOTAP_RATE: {
+			struct ieee80211_supported_band *sband =
+				tx->local->hw.wiphy->bands[tx->channel->band];
+			info->control.rates[0].idx = 0;
+			if (*iterator.this_arg) {
+				int i;
+				for (i = 0; i < sband->n_bitrates; i++)
+					if (sband->bitrates[i].bitrate ==
+						*iterator.this_arg * 5) {
+						info->control.rates[0].idx = i;
+						break;
+					}
+			}
+			info->control.rates[0].flags = 0;
+			info->control.rates[1].idx = -1;
+			info->control.rates[2].idx = -1;
+			info->control.rates[3].idx = -1;
+			info->control.rates[4].idx = -1;
+			break;
+		}
+
+		case IEEE80211_RADIOTAP_DATA_RETRIES:
+			info->control.rates[0].count = *iterator.this_arg;
+			break;
+
+		case IEEE80211_RADIOTAP_MCS: {
+			u8 flags = iterator.this_arg[1];
+			u8 mcs = iterator.this_arg[2];
+			info->control.rates[0].idx = mcs;
+			info->control.rates[0].flags |=
+				IEEE80211_TX_RC_MCS;
+			if (flags & IEEE80211_RADIOTAP_MCS_BW_40)
+				info->control.rates[0].flags |=
+				IEEE80211_TX_RC_40_MHZ_WIDTH;
+			if (flags & IEEE80211_RADIOTAP_MCS_SGI)
+				info->control.rates[0].flags |=
+				IEEE80211_TX_RC_SHORT_GI;
+			break;
+		}
+
 		/*
 		 * Please update the file
 		 * Documentation/networking/mac80211-injection.txt
--- a/net/wireless/radiotap.c	2011-06-01 21:04:24.000000000 +0200
+++ b/net/wireless/radiotap.c	2011-06-04 19:00:49.453007027 +0200
@@ -40,6 +40,7 @@
 	[IEEE80211_RADIOTAP_TX_FLAGS] = { .align = 2, .size = 2, },
 	[IEEE80211_RADIOTAP_RTS_RETRIES] = { .align = 1, .size = 1, },
 	[IEEE80211_RADIOTAP_DATA_RETRIES] = { .align = 1, .size = 1, },
+	[IEEE80211_RADIOTAP_MCS] = { .align = 1, .size = 3, },
 	/*
 	 * add more here as they are defined in radiotap.h
 	 */

-- 
Matteo Croce
OpenWrt Developer
Â_______ Â Â Â Â Â Â Â Â Â Â ________ Â Â Â Â__
| Â Â Â |.-----.-----.-----.| Â| Â| Â|.----.| Â|_
| Â - Â || Â_ Â| Â-__| Â Â || Â| Â| Â|| Â _|| Â _|
|_______|| Â __|_____|__|__||________||__| Â|____|
    Â|__| W I R E L E S S  F R E E D O M
ATTITUDE ADJUSTMENT (bleeding edge) --------------
Â* 1/4 oz Vodka   ÂPour all ingredents into mixing
Â* 1/4 oz Gin    Âtin with ice, strain into glass.
Â* 1/4 oz Amaretto
Â* 1/4 oz Triple sec
Â* 1/4 oz Peach schnapps
Â* 1/4 oz Sour mix
Â* 1 splash Cranberry juice
-----------------------------------------------------
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux