2010-04-12 12:25:08

by Sneha Aggarwal

[permalink] [raw]
Subject: Frame aggregation size configuration in 802.11n

Hello all

I think this is the appropriate place to post this query.
I am studying the effect of frame aggregation size on throughput for my project.
Is there any direct command to change the aggregation size like iwconfig/iwpriv
or something?

I have gone through the kernel code of aggregation from the file agg-tx.c from
the linux-2.6.32.7
and the exact path is linux-2.6.32.7/net/mac80211/agg-tx.c
The function which I have recognized to change the aggregation size is:
ieee80211_send_addba_request(struct ieee80211_sub_if_data *sdata, const u8 *da,
u16 tid, u8 dialog_token, u16 start_seq_num, u16 agg_size, u16 timeout)

I am wondering if this is the right place to change the parameter or not. Or is
there any other way to change this parameter without changing the kernel file
directly?
and where all I have to change this parameter to get the desired output?
And I am planning to write of a piece of code to make this parameter available
to the user to configure.

--
Regards
Sneha Aggarwal



2010-04-12 12:35:20

by Johannes Berg

[permalink] [raw]
Subject: Re: Frame aggregation size configuration in 802.11n

On Mon, 2010-04-12 at 12:11 +0000, Sneha Aggarwal wrote:

> I am studying the effect of frame aggregation size on throughput for my project.
> Is there any direct command to change the aggregation size like iwconfig/iwpriv
> or something?

No.

> I have gone through the kernel code of aggregation from the file agg-tx.c from
> the linux-2.6.32.7
> and the exact path is linux-2.6.32.7/net/mac80211/agg-tx.c
> The function which I have recognized to change the aggregation size is:
> ieee80211_send_addba_request(struct ieee80211_sub_if_data *sdata, const u8 *da,
> u16 tid, u8 dialog_token, u16 start_seq_num, u16 agg_size, u16 timeout)
>
> I am wondering if this is the right place to change the parameter or not.

No, it is not. This will just tell the peer what the max is that we
might send, I think.

> Or is
> there any other way to change this parameter without changing the kernel file
> directly?

No.

> and where all I have to change this parameter to get the desired output?

That depends on your driver. In iwlwifi, you have to tell the microcode
what to do -- I'm not sure off hand how to (I know there is a parameter
that controls the number of frames in an aggregate, I'm not sure about
the max size but I would think it exists)

In ath9k you should be able to change it in the driver but I have no
idea how to.

> And I am planning to write of a piece of code to make this parameter available
> to the user to configure.

That will be interesting due to what I said above ...

johannes


2010-04-12 14:37:13

by Sujith

[permalink] [raw]
Subject: Re: Frame aggregation size configuration in 802.11n

Johannes Berg wrote:
> > and where all I have to change this parameter to get the desired output?
>
> That depends on your driver. In iwlwifi, you have to tell the microcode
> what to do -- I'm not sure off hand how to (I know there is a parameter
> that controls the number of frames in an aggregate, I'm not sure about
> the max size but I would think it exists)
>
> In ath9k you should be able to change it in the driver but I have no
> idea how to.
>

If you do decide to fiddle with ath9k, you can change the aggregate size
and the max. no of subframes in an aggregate.

See ath_tx_form_aggr() in xmit.c

(ATH_AMPDU_SUBFRAME_DEFAULT, nframes, aggr_limit, etc ...)

Sujith