2010-08-08 19:25:10

by Daniel Haid

[permalink] [raw]
Subject: Setting MCS rate on injected packets does not work properly (with patches)

Hello,

I have applied some old patches that were posted here,
that allow to set the rate via the radiotap header for
injected packets.

Additionally I had to comment out the call
to ieee80211_tx_h_rate_ctrl in net/mac80211/tx.c
for anything to work.

I have patched two stations. My problem is as follows:

When I use hostapd on one station and enable HT I get
rates of about 60MBit/s.

But when I inject packets manually and I set the MCS index
the MCS index gets reported properly at the other station.
However no matter what index I choose, I never get rates
higher than 10MBit/s (I wrote a program that reads monitor
mode packets with libpcap and sends them to a tun device
and everything that comes from the tun device is injected
with libpcap - then I measured the rate for UDP packets sent
trough this connection).

Is there anything that has to be set up first for MCS mode to
work properly? What else can I do?

Thank you.


2010-08-09 16:09:18

by Björn Smedman

[permalink] [raw]
Subject: Re: Setting MCS rate on injected packets does not work properly (with patches)

On Sun, Aug 8, 2010 at 9:24 PM, Daniel Haid <[email protected]> wrote:
> Hello,

> When I use hostapd on one station and enable HT I get
> rates of about 60MBit/s.
>
> But when I inject packets manually and I set the MCS index
> the MCS index gets reported properly at the other station.
> However no matter what index I choose, I never get rates
> higher than 10MBit/s ?(I wrote a program that reads monitor
> mode packets with libpcap and sends them to a tun device
> and everything that comes from the tun device is injected
> with libpcap - then I measured the rate for UDP packets sent
> trough this connection).

One reason for this is aggregation: injected packets are not
aggregated. Depending on your setup that could be the whole
explanation.

Also, a single fixed MCS index in the first slot of the tx control
rates array will not perform as well as e.g. minstrel_ht, especially
not if your radio environment is noisy.

10 Mbit/s sounds a bit slow though if you say you can get 60 in ap -
sta mode. Perhaps you are cpu limited?

/Bj?rn

2010-08-10 16:58:53

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: Setting MCS rate on injected packets does not work properly (with patches)

2010/8/9 Björn Smedman <[email protected]>:
> On Sun, Aug 8, 2010 at 9:24 PM, Daniel Haid <[email protected]> wrote:
>> Hello,
>
>> When I use hostapd on one station and enable HT I get
>> rates of about 60MBit/s.
>>
>> But when I inject packets manually and I set the MCS index
>> the MCS index gets reported properly at the other station.
>> However no matter what index I choose, I never get rates
>> higher than 10MBit/s  (I wrote a program that reads monitor
>> mode packets with libpcap and sends them to a tun device
>> and everything that comes from the tun device is injected
>> with libpcap - then I measured the rate for UDP packets sent
>> trough this connection).
>
> One reason for this is aggregation: injected packets are not
> aggregated. Depending on your setup that could be the whole
> explanation.

You don't need to use aggregation for all frames, aggregation is just
one technique that you can use for 802.11n, ath9k is an example driver
that chooses to always use aggregation though.

> Also, a single fixed MCS index in the first slot of the tx control
> rates array will not perform as well as e.g. minstrel_ht, especially
> not if your radio environment is noisy.

You might want to look at how the passed rate gets mapped to a
hardware rate on the driver you are using.

Luis