That's great to hear. I take it this is HT20? I believe you can get 40-60 Mb/s @ MCS15 w/o AMPDU and 80-100 Mb/s w/ AMPDU. In HT40 I've gotten 160-180 Mb/s for TCP netperf (5GHz) and 220+ Mb/s for unidirectional streams (netperf -t UDP_STREAM). Note that once you get to these higher rates things like TCP window sizes become important and doing things like TSO in s/w can give noticeable speed boosts.

        Sam

Alexander Egorenkov wrote:
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 <s...@errno.com <mailto:s...@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 <s...@errno.com
        <mailto:s...@errno.com> <mailto:s...@errno.com
        <mailto:s...@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 <
               egore...@googlemail.com <mailto:egore...@googlemail.com>
        <mailto:egore...@googlemail.com
        <mailto:egore...@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@freebsd.org <mailto:freebsd-net@freebsd.org>
        <mailto:freebsd-net@freebsd.org
        <mailto:freebsd-net@freebsd.org>> mailing

               list
               http://lists.freebsd.org/mailman/listinfo/freebsd-net
               To unsubscribe, send any mail to
               "freebsd-net-unsubscr...@freebsd.org
        <mailto:freebsd-net-unsubscr...@freebsd.org>
               <mailto:freebsd-net-unsubscr...@freebsd.org
        <mailto:freebsd-net-unsubscr...@freebsd.org>>"







_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to