A-MPDU transmission in net80211 on FreeBSD 8

Alexander Egorenkov egorenar at googlemail.com
Sun Feb 14 13:30:07 UTC 2010


Hi,

thanks for your help, I implemented A-MPDU Tx in my Ralink driver now and it
works very good.
I have average Tx rate about 4.5~5 MBytes/s now :-) The Ralink chip that i
have implements the frame queue in hardware so i had only to assign sequence
numbers, set BA window size and MPDU density and it worked, lucky me :-)

Alex.

On Sun, Jan 31, 2010 at 8:20 PM, Sam Leffler <sam at errno.com> wrote:

> Alexander Egorenkov wrote:
>
>> Why doesn't 802.11 stack assign sequence numbers to A-MPDU frames ?
>>
>
> Because if net80211 does the assignment it may be wrong.  As the comment
> says, if tx aggregation causes frames to be q'd above the h/w then by the
> time they are sent OTA the pre-assigned seq# may be invalidated by other
> frames going out ahead of it.
>
>
>  When sequence numbers are not assigned to A-MPDU frames, then BA doesn't
>> work with my AP.
>> I tried to assign sequence numbers to A-MPDU frames in my device driver
>> and then BAs worked
>> with my AP.
>>
>
> That is what the comment says to do.
>
>
>  And what is meant by aggregation queue ? Where is that queue anf how do i
>> use it ?
>>
>
> The aggregation q is the mechanism used to hold frames waiting for
> additional frames to aggregated into an A-MSDU/A-MPDU.  The queue is
> typically wherever the aggregation work is done.  Some devices do this in
> h/w, others require the host handle this.  When done in the host it can be
> done in the driver or above.  The intent has always been to have net80211
> implement tx aggregation that a driver can fallback on but I never did the
> work.  All the 11n drivers I've done have either handled tx aggregation in
> h/w or in the driver.
>
>
>> Thanks.
>>
>>
>> On Sun, Jan 31, 2010 at 4:43 AM, Sam Leffler <sam at errno.com <mailto:
>> sam at errno.com>> wrote:
>>
>>    Alexander Egorenkov wrote:
>>
>>        Sorry, i posted the wrong comment.
>>        Here is the comment which i don't understand:
>>
>>        /*
>>                    * NB: don't assign a sequence # to potential
>>                    * aggregates; we expect this happens at the
>>                    * point the frame comes off any aggregation q
>>                    * as otherwise we may introduce holes in the
>>                    * BA sequence space and/or make window accouting
>>                    * more difficult.
>>                    *
>>                    * XXX may want to control this with a driver
>>                    * capability; this may also change when we pull
>>                    * aggregation up into net80211
>>         */
>>
>>        Thanks.
>>
>>
>>    What is unclear?
>>
>>           Sam
>>
>>
>>
>>        On Wed, Jan 27, 2010 at 8:04 PM, Alexander Egorenkov <
>>        egorenar at googlemail.com <mailto:egorenar at googlemail.com>> wrote:
>>
>>            Hi,
>>
>>            i'm implementing a device driver for a 802.11n NIC under
>>            FreeBSD 8
>>            und experimented with A-MPDU transmission. I looked into
>>            net80211 code
>>            and there is some code which implements this feature but it
>>            worked not very
>>            well for me.
>>            I noticed e.g. that sequence numbers are not assigned to
>>            A-MPDU frames
>>            and found this comment in file ieee80211_output.c :
>>
>>
>>            /*
>>                    * Check if A-MPDU tx aggregation is setup or if we
>>                    * should try to enable it.  The sta must be associated
>>                    * with HT and A-MPDU enabled for use.  When the policy
>>                    * routine decides we should enable A-MPDU we issue an
>>                    * ADDBA request and wait for a reply.  The frame being
>>                    * encapsulated will go out w/o using A-MPDU, or
>> possibly
>>                    * it might be collected by the driver and
>>            held/retransmit.
>>                    * The default ic_ampdu_enable routine handles
>> staggering
>>                    * ADDBA requests in case the receiver NAK's us or we
>> are
>>                    * otherwise unable to establish a BA stream.
>>             */
>>
>>            Can somebody elaborate this description to me please.
>>
>>            Thanks.
>>
>>            ALex.
>>
>>
>>        _______________________________________________
>>        freebsd-net at freebsd.org <mailto:freebsd-net at freebsd.org> mailing
>>
>>        list
>>        http://lists.freebsd.org/mailman/listinfo/freebsd-net
>>        To unsubscribe, send any mail to
>>        "freebsd-net-unsubscribe at freebsd.org
>>        <mailto:freebsd-net-unsubscribe at freebsd.org>"
>>
>>
>>
>>
>>
>


More information about the freebsd-net mailing list